Hex Artifact Content

Not logged in

Artifact 9e582cf95c9e24a6b52f754b734c7f6df251bbee:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0040: 2a 2a 2a 2a 2a 2a 2a 2a 5c 0a 2a 20 20 20 20 20  ********\.*     
0050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0060: 20 20 20 20 20 20 20 20 20 20 6d 73 77 73 6f 63            mswsoc
0070: 6b 2e 64 20 20 20 20 20 20 20 20 20 20 20 20 20  k.d             
0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0090: 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20    *.*           
00a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00d0: 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20              *.* 
00e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00f0: 20 20 20 20 20 20 57 69 6e 64 6f 77 73 20 41 50        Windows AP
0100: 49 20 68 65 61 64 65 72 20 6d 6f 64 75 6c 65 20  I header module 
0110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0120: 20 20 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20        *.*       
0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0170: 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20  *.*             
0180: 20 20 20 20 54 72 61 6e 73 6c 61 74 65 64 20 66      Translated f
0190: 72 6f 6d 20 4d 69 6e 47 57 20 57 69 6e 64 6f 77  rom MinGW Window
01a0: 73 20 68 65 61 64 65 72 73 20 20 20 20 20 20 20  s headers       
01b0: 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20 20 20            *.*   
01c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01d0: 20 20 20 20 20 20 20 20 20 20 62 79 20 44 61 6e            by Dan
01e0: 69 65 6c 20 4b 65 65 70 20 20 20 20 20 20 20 20  iel Keep        
01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0200: 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20      *.*         
0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a                *.
0250: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  *               
0260: 20 20 20 20 20 20 20 20 50 6c 61 63 65 64 20 69          Placed i
0270: 6e 74 6f 20 70 75 62 6c 69 63 20 64 6f 6d 61 69  nto public domai
0280: 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  n               
0290: 20 20 20 20 20 20 20 20 2a 0a 5c 2a 2a 2a 2a 2a          *.\*****
02a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02e0: 2a 2a 2f 0a 6d 6f 64 75 6c 65 20 77 69 6e 33 32  **/.module win32
02f0: 2e 6d 73 77 73 6f 63 6b 3b 0a 0a 69 6d 70 6f 72  .mswsock;..impor
0300: 74 20 77 69 6e 33 32 2e 77 69 6e 62 61 73 65 2c  t win32.winbase,
0310: 20 77 69 6e 33 32 2e 77 69 6e 64 65 66 3b 0a 70   win32.windef;.p
0320: 72 69 76 61 74 65 20 69 6d 70 6f 72 74 20 77 69  rivate import wi
0330: 6e 33 32 2e 62 61 73 65 74 79 70 73 2c 20 77 69  n32.basetyps, wi
0340: 6e 33 32 2e 77 33 32 61 70 69 3b 0a 0a 2f 2f 20  n32.w32api;..// 
0350: 46 49 58 4d 45 3a 20 63 6c 65 61 6e 20 75 70 20  FIXME: clean up 
0360: 57 69 6e 64 6f 77 73 20 76 65 72 73 69 6f 6e 20  Windows version 
0370: 73 75 70 70 6f 72 74 0a 0a 76 65 72 73 69 6f 6e  support..version
0380: 20 28 57 69 6e 33 32 5f 57 69 6e 73 6f 63 6b 32   (Win32_Winsock2
0390: 29 20 70 72 61 67 6d 61 28 6d 73 67 2c 0a 20 22  ) pragma(msg,. "
03a0: 56 65 72 73 69 6f 6e 20 57 69 6e 33 32 5f 57 69  Version Win32_Wi
03b0: 6e 73 6f 63 6b 32 20 69 73 20 64 65 70 72 65 63  nsock2 is deprec
03c0: 61 74 65 64 3b 20 57 69 6e 73 6f 63 6b 32 20 69  ated; Winsock2 i
03d0: 73 20 6e 6f 77 20 69 6d 70 6f 72 74 65 64 20 62  s now imported b
03e0: 79 20 64 65 66 61 75 6c 74 22 29 3b 0a 0a 2f 2f  y default");..//
03f0: 20 50 75 6c 6c 20 69 6e 20 57 69 6e 73 6f 63 6b   Pull in Winsock
0400: 31 20 69 66 20 74 68 65 20 75 73 65 72 20 68 61  1 if the user ha
0410: 73 20 70 75 74 20 22 57 69 6e 33 32 5f 57 69 6e  s put "Win32_Win
0420: 73 6f 63 6b 31 22 20 6f 6e 20 74 68 65 20 63 6f  sock1" on the co
0430: 6d 70 69 6c 65 0a 2f 2f 20 6c 69 6e 65 3b 20 6f  mpile.// line; o
0440: 74 68 65 72 77 69 73 65 2c 20 64 65 66 61 75 6c  therwise, defaul
0450: 74 20 74 6f 20 57 69 6e 73 6f 63 6b 32 2e 0a 76  t to Winsock2..v
0460: 65 72 73 69 6f 6e 20 28 57 69 6e 33 32 5f 57 69  ersion (Win32_Wi
0470: 6e 73 6f 63 6b 31 29 20 7b 0a 09 69 6d 70 6f 72  nsock1) {..impor
0480: 74 20 77 69 6e 33 32 2e 77 69 6e 73 6f 63 6b 3b  t win32.winsock;
0490: 0a 7d 20 65 6c 73 65 20 7b 0a 09 69 6d 70 6f 72  .} else {..impor
04a0: 74 20 77 69 6e 33 32 2e 77 69 6e 73 6f 63 6b 32  t win32.winsock2
04b0: 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 66 20 28  ;.}..static if (
04c0: 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 5f 4f 4e 4c  _WIN32_WINNT_ONL
04d0: 59 29 20 7b 0a 09 73 74 61 74 69 63 20 69 66 20  Y) {..static if 
04e0: 28 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d  (_WIN32_WINNT >=
04f0: 20 30 78 35 30 30 29 20 7b 0a 09 09 65 6e 75 6d   0x500) {...enum
0500: 20 7b 0a 09 09 09 2f 2a 20 57 69 6e 4e 54 35 2b   {..../* WinNT5+
0510: 3a 0a 09 09 09 20 20 20 6d 73 2d 68 65 6c 70 3a  :....   ms-help:
0520: 2f 2f 4d 53 2e 4d 53 44 4e 51 54 52 2e 32 30 30  //MS.MSDNQTR.200
0530: 33 46 45 42 2e 31 30 33 33 2f 77 69 6e 73 6f 63  3FEB.1033/winsoc
0540: 6b 2f 77 69 6e 73 6f 63 6b 2f 73 6f 63 6b 65 74  k/winsock/socket
0550: 5f 6f 70 74 69 6f 6e 73 2e 68 74 6d 20 2a 2f 0a  _options.htm */.
0560: 09 09 09 53 4f 5f 4d 41 58 44 47 20 20 20 20 20  ...SO_MAXDG     
0570: 20 20 20 20 20 20 20 20 3d 20 30 78 37 30 30 39          = 0x7009
0580: 2c 0a 09 09 09 53 4f 5f 4d 41 58 50 41 54 48 44  ,....SO_MAXPATHD
0590: 47 20 20 20 20 20 20 20 20 20 3d 20 30 78 37 30  G         = 0x70
05a0: 30 41 2c 0a 09 09 7d 0a 09 7d 0a 0a 09 65 6e 75  0A,...}..}...enu
05b0: 6d 20 7b 0a 09 09 2f 2a 20 57 69 6e 4e 54 34 2b  m {.../* WinNT4+
05c0: 3a 0a 09 09 20 20 20 6d 73 2d 68 65 6c 70 3a 2f  :...   ms-help:/
05d0: 2f 4d 53 2e 4d 53 44 4e 51 54 52 2e 32 30 30 33  /MS.MSDNQTR.2003
05e0: 46 45 42 2e 31 30 33 33 2f 77 69 6e 73 6f 63 6b  FEB.1033/winsock
05f0: 2f 77 69 6e 73 6f 63 6b 2f 73 6f 63 6b 65 74 5f  /winsock/socket_
0600: 6f 70 74 69 6f 6e 73 5f 66 6f 72 5f 77 69 6e 64  options_for_wind
0610: 6f 77 73 5f 6e 74 5f 34 5f 30 5f 32 2e 68 74 6d  ows_nt_4_0_2.htm
0620: 20 2a 2f 0a 09 09 53 4f 5f 43 4f 4e 4e 44 41 54   */...SO_CONNDAT
0630: 41 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d  A              =
0640: 20 30 78 37 30 30 30 2c 0a 09 09 53 4f 5f 43 4f   0x7000,...SO_CO
0650: 4e 4e 4f 50 54 20 20 20 20 20 20 20 20 20 20 20  NNOPT           
0660: 20 20 20 20 3d 20 30 78 37 30 30 31 2c 0a 09 09      = 0x7001,...
0670: 53 4f 5f 44 49 53 43 44 41 54 41 20 20 20 20 20  SO_DISCDATA     
0680: 20 20 20 20 20 20 20 20 20 3d 20 30 78 37 30 30           = 0x700
0690: 32 2c 0a 09 09 53 4f 5f 44 49 53 43 4f 50 54 20  2,...SO_DISCOPT 
06a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20                = 
06b0: 30 78 37 30 30 33 2c 0a 09 09 53 4f 5f 43 4f 4e  0x7003,...SO_CON
06c0: 4e 44 41 54 41 4c 45 4e 20 20 20 20 20 20 20 20  NDATALEN        
06d0: 20 20 20 3d 20 30 78 37 30 30 34 2c 0a 09 09 53     = 0x7004,...S
06e0: 4f 5f 43 4f 4e 4e 4f 50 54 4c 45 4e 20 20 20 20  O_CONNOPTLEN    
06f0: 20 20 20 20 20 20 20 20 3d 20 30 78 37 30 30 35          = 0x7005
0700: 2c 0a 09 09 53 4f 5f 44 49 53 43 44 41 54 41 4c  ,...SO_DISCDATAL
0710: 45 4e 20 20 20 20 20 20 20 20 20 20 20 3d 20 30  EN           = 0
0720: 78 37 30 30 36 2c 0a 09 09 53 4f 5f 44 49 53 43  x7006,...SO_DISC
0730: 4f 50 54 4c 45 4e 20 20 20 20 20 20 20 20 20 20  OPTLEN          
0740: 20 20 3d 20 30 78 37 30 30 37 2c 0a 0a 09 09 2f    = 0x7007,..../
0750: 2a 20 57 69 6e 4e 54 34 3a 0a 09 09 20 20 20 6d  * WinNT4:...   m
0760: 73 2d 68 65 6c 70 3a 2f 2f 4d 53 2e 4d 53 44 4e  s-help://MS.MSDN
0770: 51 54 52 2e 32 30 30 33 46 45 42 2e 31 30 33 33  QTR.2003FEB.1033
0780: 2f 77 69 6e 73 6f 63 6b 2f 77 69 6e 73 6f 63 6b  /winsock/winsock
0790: 2f 73 6f 63 6b 65 74 5f 6f 70 74 69 6f 6e 73 2e  /socket_options.
07a0: 68 74 6d 20 2a 2f 0a 09 09 53 4f 5f 55 50 44 41  htm */...SO_UPDA
07b0: 54 45 5f 41 43 43 45 50 54 5f 43 4f 4e 54 45 4e  TE_ACCEPT_CONTEN
07c0: 54 20 3d 20 30 78 37 30 30 42 2c 0a 09 7d 0a 7d  T = 0x700B,..}.}
07d0: 0a 0a 65 6e 75 6d 20 7b 0a 09 2f 2a 20 57 69 6e  ..enum {../* Win
07e0: 39 35 2b 2c 20 57 69 6e 4e 54 34 2b 20 62 75 74  95+, WinNT4+ but
07f0: 20 61 70 70 61 72 65 6e 74 6c 79 20 73 68 6f 75   apparently shou
0800: 6c 64 6e 27 74 20 75 73 65 64 3a 20 6d 61 72 6b  ldn't used: mark
0810: 20 61 73 20 64 65 70 72 65 63 61 74 65 64 3f 0a   as deprecated?.
0820: 09 20 20 20 6d 73 2d 68 65 6c 70 3a 2f 2f 4d 53  .   ms-help://MS
0830: 2e 4d 53 44 4e 51 54 52 2e 32 30 30 33 46 45 42  .MSDNQTR.2003FEB
0840: 2e 31 30 33 33 2f 77 69 6e 73 6f 63 6b 2f 77 69  .1033/winsock/wi
0850: 6e 73 6f 63 6b 2f 73 6f 63 6b 65 74 5f 6f 70 74  nsock/socket_opt
0860: 69 6f 6e 73 2e 68 74 6d 20 2a 2f 0a 09 53 4f 5f  ions.htm */..SO_
0870: 4f 50 45 4e 54 59 50 45 20 20 20 20 20 20 20 20  OPENTYPE        
0880: 20 20 20 20 20 20 20 20 20 20 3d 20 30 78 37 30            = 0x70
0890: 30 38 2c 0a 0a 09 2f 2a 20 57 69 6e 39 35 2b 3b  08,.../* Win95+;
08a0: 20 74 68 65 73 65 20 74 77 6f 20 61 72 65 20 70   these two are p
08b0: 61 73 73 65 64 20 74 6f 20 74 68 65 20 53 4f 5f  assed to the SO_
08c0: 4f 50 45 4e 54 59 50 45 20 6f 70 74 69 6f 6e 20  OPENTYPE option 
08d0: 61 73 20 61 72 67 75 6d 65 6e 74 73 2c 0a 09 20  as arguments,.. 
08e0: 20 20 73 6f 20 77 6f 75 6c 64 20 74 68 65 79 20    so would they 
08f0: 62 65 20 64 65 70 72 65 63 61 74 65 64 20 61 73  be deprecated as
0900: 20 77 65 6c 6c 3f 0a 09 20 20 20 6d 73 2d 68 65   well?..   ms-he
0910: 6c 70 3a 2f 2f 4d 53 2e 4d 53 44 4e 51 54 52 2e  lp://MS.MSDNQTR.
0920: 32 30 30 33 46 45 42 2e 31 30 33 33 2f 77 69 6e  2003FEB.1033/win
0930: 73 6f 63 6b 2f 77 69 6e 73 6f 63 6b 2f 73 6f 63  sock/winsock/soc
0940: 6b 65 74 5f 6f 70 74 69 6f 6e 73 2e 68 74 6d 20  ket_options.htm 
0950: 2a 2f 0a 09 53 4f 5f 53 59 4e 43 48 52 4f 4e 4f  */..SO_SYNCHRONO
0960: 55 53 5f 41 4c 45 52 54 20 20 20 20 20 20 20 20  US_ALERT        
0970: 20 3d 20 30 78 30 30 31 30 2c 0a 09 53 4f 5f 53   = 0x0010,..SO_S
0980: 59 4e 43 48 52 4f 4e 4f 55 53 5f 4e 4f 4e 41 4c  YNCHRONOUS_NONAL
0990: 45 52 54 20 20 20 20 20 20 3d 20 30 78 30 30 32  ERT      = 0x002
09a0: 30 2c 0a 0a 09 2f 2a 20 57 69 6e 39 35 3a 0a 09  0,.../* Win95:..
09b0: 20 20 20 6d 73 2d 68 65 6c 70 3a 2f 2f 4d 53 2e     ms-help://MS.
09c0: 4d 53 44 4e 51 54 52 2e 32 30 30 33 46 45 42 2e  MSDNQTR.2003FEB.
09d0: 31 30 33 33 2f 77 69 6e 73 6f 63 6b 2f 77 69 6e  1033/winsock/win
09e0: 73 6f 63 6b 2f 73 6f 63 6b 65 74 5f 6f 70 74 69  sock/socket_opti
09f0: 6f 6e 73 2e 68 74 6d 20 2a 2f 0a 09 53 4f 5f 43  ons.htm */..SO_C
0a00: 4f 4e 4e 45 43 54 5f 54 49 4d 45 20 20 20 20 20  ONNECT_TIME     
0a10: 20 20 20 20 20 20 20 20 20 3d 20 30 78 37 30 30           = 0x700
0a20: 43 2c 0a 7d 0a 0a 0a 73 74 61 74 69 63 20 69 66  C,.}...static if
0a30: 20 28 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 5f 4f   (_WIN32_WINNT_O
0a40: 4e 4c 59 29 20 7b 0a 09 65 6e 75 6d 20 7b 0a 09  NLY) {..enum {..
0a50: 09 54 43 50 5f 42 53 44 55 52 47 45 4e 54 20 3d  .TCP_BSDURGENT =
0a60: 20 30 78 37 30 30 30 2c 0a 09 7d 0a 0a 09 2f 2a   0x7000,..}.../*
0a70: 20 54 68 65 73 65 20 2a 61 70 70 65 61 72 2a 20   These *appear* 
0a80: 74 6f 20 62 65 20 63 6f 6e 73 74 61 6e 74 73 20  to be constants 
0a90: 66 6f 72 20 70 61 73 73 69 6e 67 20 74 6f 20 74  for passing to t
0aa0: 68 65 20 54 72 61 6e 73 6d 69 74 46 69 6c 65 20  he TransmitFile 
0ab0: 2f 0a 09 20 20 20 54 72 61 6e 73 6d 69 74 50 61  /..   TransmitPa
0ac0: 63 6b 65 74 73 20 66 75 6e 63 74 69 6f 6e 73 2c  ckets functions,
0ad0: 20 77 68 69 63 68 20 61 72 65 20 61 76 61 69 6c   which are avail
0ae0: 61 62 6c 65 20 69 6e 20 57 69 6e 4e 54 33 2e 35  able in WinNT3.5
0af0: 31 2b 0a 09 20 20 20 6d 73 2d 68 65 6c 70 3a 2f  1+..   ms-help:/
0b00: 2f 4d 53 2e 4d 53 44 4e 51 54 52 2e 32 30 30 33  /MS.MSDNQTR.2003
0b10: 46 45 42 2e 31 30 33 33 2f 77 69 6e 73 6f 63 6b  FEB.1033/winsock
0b20: 2f 77 69 6e 73 6f 63 6b 2f 74 72 61 6e 73 6d 69  /winsock/transmi
0b30: 74 66 69 6c 65 5f 32 2e 68 74 6d 20 2a 2f 0a 09  tfile_2.htm */..
0b40: 65 6e 75 6d 20 7b 0a 09 09 54 46 5f 44 49 53 43  enum {...TF_DISC
0b50: 4f 4e 4e 45 43 54 20 20 20 20 20 20 20 20 20 3d  ONNECT         =
0b60: 20 31 2c 0a 09 09 54 46 5f 52 45 55 53 45 5f 53   1,...TF_REUSE_S
0b70: 4f 43 4b 45 54 20 20 20 20 20 20 20 3d 20 32 2c  OCKET       = 2,
0b80: 0a 09 09 54 46 5f 57 52 49 54 45 5f 42 45 48 49  ...TF_WRITE_BEHI
0b90: 4e 44 20 20 20 20 20 20 20 3d 20 34 2c 0a 09 09  ND       = 4,...
0ba0: 54 46 5f 55 53 45 5f 44 45 46 41 55 4c 54 5f 57  TF_USE_DEFAULT_W
0bb0: 4f 52 4b 45 52 20 3d 20 30 2c 0a 09 09 54 46 5f  ORKER = 0,...TF_
0bc0: 55 53 45 5f 53 59 53 54 45 4d 5f 54 48 52 45 41  USE_SYSTEM_THREA
0bd0: 44 20 20 3d 20 31 36 2c 0a 09 09 54 46 5f 55 53  D  = 16,...TF_US
0be0: 45 5f 4b 45 52 4e 45 4c 5f 41 50 43 20 20 20 20  E_KERNEL_APC    
0bf0: 20 3d 20 33 32 0a 09 7d 0a 7d 0a 0a 2f 2a 20 57   = 32..}.}../* W
0c00: 69 6e 39 35 2b 2c 20 57 69 6e 4e 54 33 2e 35 31  in95+, WinNT3.51
0c10: 2b 0a 20 20 20 6d 73 2d 68 65 6c 70 3a 2f 2f 4d  +.   ms-help://M
0c20: 53 2e 4d 53 44 4e 51 54 52 2e 32 30 30 33 46 45  S.MSDNQTR.2003FE
0c30: 42 2e 31 30 33 33 2f 77 69 6e 73 6f 63 6b 2f 77  B.1033/winsock/w
0c40: 69 6e 73 6f 63 6b 2f 74 72 61 6e 73 6d 69 74 5f  insock/transmit_
0c50: 66 69 6c 65 5f 62 75 66 66 65 72 73 5f 32 2e 68  file_buffers_2.h
0c60: 74 6d 20 2a 2f 0a 73 74 72 75 63 74 20 54 52 41  tm */.struct TRA
0c70: 4e 53 4d 49 54 5f 46 49 4c 45 5f 42 55 46 46 45  NSMIT_FILE_BUFFE
0c80: 52 53 20 7b 0a 09 50 56 4f 49 44 20 48 65 61 64  RS {..PVOID Head
0c90: 3b 0a 09 44 57 4f 52 44 20 48 65 61 64 4c 65 6e  ;..DWORD HeadLen
0ca0: 67 74 68 3b 0a 09 50 56 4f 49 44 20 54 61 69 6c  gth;..PVOID Tail
0cb0: 3b 0a 09 44 57 4f 52 44 20 54 61 69 6c 4c 65 6e  ;..DWORD TailLen
0cc0: 67 74 68 3b 0a 7d 0a 61 6c 69 61 73 20 54 52 41  gth;.}.alias TRA
0cd0: 4e 53 4d 49 54 5f 46 49 4c 45 5f 42 55 46 46 45  NSMIT_FILE_BUFFE
0ce0: 52 53 2a 20 50 54 52 41 4e 53 4d 49 54 5f 46 49  RS* PTRANSMIT_FI
0cf0: 4c 45 5f 42 55 46 46 45 52 53 2c 20 4c 50 54 52  LE_BUFFERS, LPTR
0d00: 41 4e 53 4d 49 54 5f 46 49 4c 45 5f 42 55 46 46  ANSMIT_FILE_BUFF
0d10: 45 52 53 3b 0a 0a 65 78 74 65 72 6e 28 57 69 6e  ERS;..extern(Win
0d20: 64 6f 77 73 29 20 7b 0a 09 2f 2a 20 57 69 6e 39  dows) {../* Win9
0d30: 35 2b 2c 20 57 69 6e 4e 54 33 2e 35 31 2b 0a 09  5+, WinNT3.51+..
0d40: 20 20 20 6d 73 2d 68 65 6c 70 3a 2f 2f 4d 53 2e     ms-help://MS.
0d50: 4d 53 44 4e 51 54 52 2e 32 30 30 33 46 45 42 2e  MSDNQTR.2003FEB.
0d60: 31 30 33 33 2f 77 69 6e 73 6f 63 6b 2f 77 69 6e  1033/winsock/win
0d70: 73 6f 63 6b 2f 77 73 61 72 65 63 76 65 78 5f 32  sock/wsarecvex_2
0d80: 2e 68 74 6d 20 2a 2f 0a 09 69 6e 74 20 57 53 41  .htm */..int WSA
0d90: 52 65 63 76 45 78 28 53 4f 43 4b 45 54 2c 20 63  RecvEx(SOCKET, c
0da0: 68 61 72 2a 2c 20 69 6e 74 2c 20 69 6e 74 2a 29  har*, int, int*)
0db0: 3b 0a 0a 09 2f 2a 20 57 69 6e 39 35 2b 2c 20 57  ;.../* Win95+, W
0dc0: 69 6e 4e 54 33 2e 35 31 2b 0a 09 20 20 20 6d 73  inNT3.51+..   ms
0dd0: 2d 68 65 6c 70 3a 2f 2f 4d 53 2e 4d 53 44 4e 51  -help://MS.MSDNQ
0de0: 54 52 2e 32 30 30 33 46 45 42 2e 31 30 33 33 2f  TR.2003FEB.1033/
0df0: 77 69 6e 73 6f 63 6b 2f 77 69 6e 73 6f 63 6b 2f  winsock/winsock/
0e00: 67 65 74 61 63 63 65 70 74 65 78 53 4f 43 4b 41  getacceptexSOCKA
0e10: 44 44 52 73 5f 32 2e 68 74 6d 20 2a 2f 0a 09 56  DDRs_2.htm */..V
0e20: 4f 49 44 20 47 65 74 41 63 63 65 70 74 45 78 53  OID GetAcceptExS
0e30: 6f 63 6b 61 64 64 72 73 28 50 56 4f 49 44 2c 20  ockaddrs(PVOID, 
0e40: 44 57 4f 52 44 2c 20 44 57 4f 52 44 2c 20 44 57  DWORD, DWORD, DW
0e50: 4f 52 44 2c 20 53 4f 43 4b 41 44 44 52 2a 2a 2c  ORD, SOCKADDR**,
0e60: 20 4c 50 49 4e 54 2c 20 53 4f 43 4b 41 44 44 52   LPINT, SOCKADDR
0e70: 2a 2a 2c 20 4c 50 49 4e 54 29 3b 0a 0a 09 73 74  **, LPINT);...st
0e80: 61 74 69 63 20 69 66 20 28 5f 57 49 4e 33 32 5f  atic if (_WIN32_
0e90: 57 49 4e 4e 54 5f 4f 4e 4c 59 29 20 7b 0a 09 09  WINNT_ONLY) {...
0ea0: 2f 2a 20 57 69 6e 4e 54 33 2e 35 31 2b 0a 09 09  /* WinNT3.51+...
0eb0: 20 20 20 6d 73 2d 68 65 6c 70 3a 2f 2f 4d 53 2e     ms-help://MS.
0ec0: 4d 53 44 4e 51 54 52 2e 32 30 30 33 46 45 42 2e  MSDNQTR.2003FEB.
0ed0: 31 30 33 33 2f 77 69 6e 73 6f 63 6b 2f 77 69 6e  1033/winsock/win
0ee0: 73 6f 63 6b 2f 74 72 61 6e 73 6d 69 74 66 69 6c  sock/transmitfil
0ef0: 65 5f 32 2e 68 74 6d 20 2a 2f 0a 09 09 42 4f 4f  e_2.htm */...BOO
0f00: 4c 20 54 72 61 6e 73 6d 69 74 46 69 6c 65 28 53  L TransmitFile(S
0f10: 4f 43 4b 45 54 2c 20 48 41 4e 44 4c 45 2c 20 44  OCKET, HANDLE, D
0f20: 57 4f 52 44 2c 20 44 57 4f 52 44 2c 20 4c 50 4f  WORD, DWORD, LPO
0f30: 56 45 52 4c 41 50 50 45 44 2c 20 4c 50 54 52 41  VERLAPPED, LPTRA
0f40: 4e 53 4d 49 54 5f 46 49 4c 45 5f 42 55 46 46 45  NSMIT_FILE_BUFFE
0f50: 52 53 2c 20 44 57 4f 52 44 29 3b 0a 0a 09 09 2f  RS, DWORD);..../
0f60: 2a 20 57 69 6e 4e 54 33 2e 35 31 2b 0a 09 09 20  * WinNT3.51+... 
0f70: 20 20 6d 73 2d 68 65 6c 70 3a 2f 2f 4d 53 2e 4d    ms-help://MS.M
0f80: 53 44 4e 51 54 52 2e 32 30 30 33 46 45 42 2e 31  SDNQTR.2003FEB.1
0f90: 30 33 33 2f 77 69 6e 73 6f 63 6b 2f 77 69 6e 73  033/winsock/wins
0fa0: 6f 63 6b 2f 61 63 63 65 70 74 65 78 5f 32 2e 68  ock/acceptex_2.h
0fb0: 74 6d 20 2a 2f 0a 09 09 61 6c 69 61 73 20 42 4f  tm */...alias BO
0fc0: 4f 4c 20 66 75 6e 63 74 69 6f 6e 28 53 4f 43 4b  OL function(SOCK
0fd0: 45 54 2c 20 53 4f 43 4b 45 54 2c 20 50 56 4f 49  ET, SOCKET, PVOI
0fe0: 44 2c 20 44 57 4f 52 44 2c 20 44 57 4f 52 44 2c  D, DWORD, DWORD,
0ff0: 20 44 57 4f 52 44 2c 20 4c 50 44 57 4f 52 44 2c   DWORD, LPDWORD,
1000: 20 4c 50 4f 56 45 52 4c 41 50 50 45 44 29 20 4c   LPOVERLAPPED) L
1010: 50 46 4e 5f 41 43 43 45 50 54 45 58 3b 0a 20 20  PFN_ACCEPTEX;.  
1020: 20 20 20 20 20 20 63 6f 6e 73 74 20 47 55 49 44        const GUID
1030: 20 57 53 41 49 44 5f 41 43 43 45 50 54 45 58 20   WSAID_ACCEPTEX 
1040: 3d 20 7b 30 78 62 35 33 36 37 64 66 31 2c 30 78  = {0xb5367df1,0x
1050: 63 62 61 63 2c 30 78 31 31 63 66 2c 5b 30 78 39  cbac,0x11cf,[0x9
1060: 35 2c 30 78 63 61 2c 30 78 30 30 2c 30 78 38 30  5,0xca,0x00,0x80
1070: 2c 30 78 35 66 2c 30 78 34 38 2c 30 78 61 31 2c  ,0x5f,0x48,0xa1,
1080: 30 78 39 32 5d 7d 3b 0a 0a 20 20 20 20 20 20 20  0x92]};..       
1090: 20 61 6c 69 61 73 20 42 4f 4f 4c 20 66 75 6e 63   alias BOOL func
10a0: 74 69 6f 6e 28 53 4f 43 4b 45 54 2c 20 53 4f 43  tion(SOCKET, SOC
10b0: 4b 41 44 44 52 2a 2c 20 69 6e 74 2c 20 50 56 4f  KADDR*, int, PVO
10c0: 49 44 2c 20 44 57 4f 52 44 2c 20 4c 50 44 57 4f  ID, DWORD, LPDWO
10d0: 52 44 2c 20 4c 50 4f 56 45 52 4c 41 50 50 45 44  RD, LPOVERLAPPED
10e0: 29 20 4c 50 46 4e 5f 43 4f 4e 4e 45 43 54 45 58  ) LPFN_CONNECTEX
10f0: 3b 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20  ;.        const 
1100: 47 55 49 44 20 57 53 41 49 44 5f 43 4f 4e 4e 45  GUID WSAID_CONNE
1110: 43 54 45 58 20 3d 20 7b 30 78 32 35 61 32 30 37  CTEX = {0x25a207
1120: 62 39 2c 30 78 64 64 66 33 2c 30 78 34 36 36 30  b9,0xddf3,0x4660
1130: 2c 5b 30 78 38 65 2c 30 78 65 39 2c 30 78 37 36  ,[0x8e,0xe9,0x76
1140: 2c 30 78 65 35 2c 30 78 38 63 2c 30 78 37 34 2c  ,0xe5,0x8c,0x74,
1150: 30 78 30 36 2c 30 78 33 65 5d 7d 3b 0a 09 7d 0a  0x06,0x3e]};..}.
1160: 7d 0a 0a 76 65 72 73 69 6f 6e 28 57 69 6e 33 32  }..version(Win32
1170: 5f 57 69 6e 73 6f 63 6b 31 29 20 7b 0a 7d 20 65  _Winsock1) {.} e
1180: 6c 73 65 20 7b 0a 09 73 74 61 74 69 63 20 69 66  lse {..static if
1190: 20 28 57 49 4e 56 45 52 20 3e 20 30 78 35 30 31   (WINVER > 0x501
11a0: 29 20 7b 0a 09 09 2f 2a 09 54 68 65 73 65 20 61  ) {.../*.These a
11b0: 70 70 65 61 72 20 74 6f 20 62 65 20 63 6f 6e 73  ppear to be cons
11c0: 74 61 6e 74 73 20 66 6f 72 20 74 68 65 20 54 52  tants for the TR
11d0: 41 4e 53 4d 49 54 5f 50 41 43 4b 45 54 53 5f 45  ANSMIT_PACKETS_E
11e0: 4c 45 4d 45 4e 54 0a 09 09 20 2a 09 73 74 72 75  LEMENT... *.stru
11f0: 63 74 75 72 65 20 62 65 6c 6f 77 2c 20 73 6f 20  cture below, so 
1200: 49 27 76 65 20 67 69 76 65 6e 20 74 68 65 6d 20  I've given them 
1210: 74 68 65 20 73 61 6d 65 20 6d 69 6e 69 6d 75 6d  the same minimum
1220: 20 76 65 72 73 69 6f 6e 0a 09 09 20 2a 2f 0a 09   version... */..
1230: 09 65 6e 75 6d 20 7b 0a 09 09 09 54 50 5f 45 4c  .enum {....TP_EL
1240: 45 4d 45 4e 54 5f 46 49 4c 45 20 20 20 3d 20 31  EMENT_FILE   = 1
1250: 2c 0a 09 09 09 54 50 5f 45 4c 45 4d 45 4e 54 5f  ,....TP_ELEMENT_
1260: 4d 45 4d 4f 52 59 20 3d 20 32 2c 0a 09 09 09 54  MEMORY = 2,....T
1270: 50 5f 45 4c 45 4d 45 4e 54 5f 45 4f 50 20 20 20  P_ELEMENT_EOP   
1280: 20 3d 20 34 0a 09 09 7d 0a 0a 09 09 2f 2a 09 57   = 4...}..../*.W
1290: 69 6e 58 50 2b 2c 20 53 72 76 32 6b 33 2b 0a 09  inXP+, Srv2k3+..
12a0: 09 20 2a 09 6d 73 2d 68 65 6c 70 3a 2f 2f 4d 53  . *.ms-help://MS
12b0: 2e 4d 53 44 4e 51 54 52 2e 32 30 30 33 46 45 42  .MSDNQTR.2003FEB
12c0: 2e 31 30 33 33 2f 77 69 6e 73 6f 63 6b 2f 77 69  .1033/winsock/wi
12d0: 6e 73 6f 63 6b 2f 74 72 61 6e 73 6d 69 74 5f 70  nsock/transmit_p
12e0: 61 63 6b 65 74 73 5f 65 6c 65 6d 65 6e 74 5f 32  ackets_element_2
12f0: 2e 68 74 6d 0a 09 09 20 2a 2f 0a 09 09 73 74 72  .htm... */...str
1300: 75 63 74 20 54 52 41 4e 53 4d 49 54 5f 50 41 43  uct TRANSMIT_PAC
1310: 4b 45 54 53 5f 45 4c 45 4d 45 4e 54 20 7b 0a 09  KETS_ELEMENT {..
1320: 09 09 55 4c 4f 4e 47 20 64 77 45 6c 46 6c 61 67  ..ULONG dwElFlag
1330: 73 3b 0a 09 09 09 55 4c 4f 4e 47 20 63 4c 65 6e  s;....ULONG cLen
1340: 67 74 68 3b 0a 09 09 09 75 6e 69 6f 6e 20 7b 0a  gth;....union {.
1350: 09 09 09 09 73 74 72 75 63 74 20 7b 0a 09 09 09  ....struct {....
1360: 09 09 4c 41 52 47 45 5f 49 4e 54 45 47 45 52 20  ..LARGE_INTEGER 
1370: 6e 46 69 6c 65 4f 66 66 73 65 74 3b 0a 09 09 09  nFileOffset;....
1380: 09 09 48 41 4e 44 4c 45 20 20 20 20 20 20 20 20  ..HANDLE        
1390: 68 46 69 6c 65 3b 0a 09 09 09 09 7d 0a 09 09 09  hFile;.....}....
13a0: 09 50 56 4f 49 44 20 70 42 75 66 66 65 72 3b 0a  .PVOID pBuffer;.
13b0: 09 09 09 7d 0a 09 09 7d 0a 0a 09 09 2f 2a 09 57  ...}...}..../*.W
13c0: 69 6e 58 50 2b 2c 20 53 65 72 76 65 72 32 30 30  inXP+, Server200
13d0: 33 2b 3a 0a 09 09 20 2a 09 6d 73 2d 68 65 6c 70  3+:... *.ms-help
13e0: 3a 2f 2f 4d 53 2e 4d 53 44 4e 51 54 52 2e 32 30  ://MS.MSDNQTR.20
13f0: 30 33 46 45 42 2e 31 30 33 33 2f 77 69 6e 73 6f  03FEB.1033/winso
1400: 63 6b 2f 77 69 6e 73 6f 63 6b 2f 77 73 61 6d 73  ck/winsock/wsams
1410: 67 5f 32 2e 68 74 6d 0a 09 09 20 2a 2f 0a 09 09  g_2.htm... */...
1420: 73 74 72 75 63 74 20 57 53 41 4d 53 47 20 7b 0a  struct WSAMSG {.
1430: 09 09 09 4c 50 53 4f 43 4b 41 44 44 52 20 6e 61  ...LPSOCKADDR na
1440: 6d 65 3b 0a 09 09 09 49 4e 54 20 20 20 20 20 20  me;....INT      
1450: 20 20 6e 61 6d 65 6c 65 6e 3b 0a 09 09 09 4c 50    namelen;....LP
1460: 57 53 41 42 55 46 20 20 20 6c 70 42 75 66 66 65  WSABUF   lpBuffe
1470: 72 73 3b 0a 09 09 09 44 57 4f 52 44 20 20 20 20  rs;....DWORD    
1480: 20 20 64 77 42 75 66 66 65 72 43 6f 75 6e 74 3b    dwBufferCount;
1490: 0a 09 09 09 57 53 41 42 55 46 20 20 20 20 20 43  ....WSABUF     C
14a0: 6f 6e 74 72 6f 6c 3b 0a 09 09 09 44 57 4f 52 44  ontrol;....DWORD
14b0: 20 20 20 20 20 20 64 77 46 6c 61 67 73 3b 0a 09        dwFlags;..
14c0: 09 7d 0a 0a 09 09 61 6c 69 61 73 20 57 53 41 4d  .}....alias WSAM
14d0: 53 47 2a 20 50 57 53 41 4d 53 47 2c 20 4c 50 57  SG* PWSAMSG, LPW
14e0: 53 41 4d 53 47 3b 0a 0a 09 09 2f 2a 20 41 63 63  SAMSG;..../* Acc
14f0: 6f 72 64 69 6e 67 20 74 6f 20 4d 53 44 4e 20 64  ording to MSDN d
1500: 6f 63 73 2c 20 74 68 65 20 57 53 41 4d 53 47 2e  ocs, the WSAMSG.
1510: 43 6f 6e 74 72 6f 6c 20 62 75 66 66 65 72 20 73  Control buffer s
1520: 74 61 72 74 73 20 77 69 74 68 20 61 0a 09 09 20  tarts with a... 
1530: 20 20 63 6d 73 67 68 64 72 20 68 65 61 64 65 72    cmsghdr header
1540: 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e   of the followin
1550: 67 20 66 6f 72 6d 2e 20 20 53 65 65 20 61 6c 73  g form.  See als
1560: 6f 20 52 46 43 20 32 32 39 32 2e 20 2a 2f 0a 09  o RFC 2292. */..
1570: 09 2f 2a 20 44 4b 3a 20 43 6f 6e 66 69 72 6d 65  ./* DK: Confirme
1580: 64 2e 20 20 53 6f 20 49 20 73 75 70 70 6f 73 65  d.  So I suppose
1590: 20 74 68 65 73 65 20 73 68 6f 75 6c 64 20 67 65   these should ge
15a0: 74 20 74 68 65 20 73 61 6d 65 20 76 65 72 73 69  t the same versi
15b0: 6f 6e 20 61 73 0a 09 09 20 20 20 57 53 41 4d 53  on as...   WSAMS
15c0: 47 2e 2e 2e 20 2a 2f 0a 09 09 73 74 72 75 63 74  G... */...struct
15d0: 20 57 53 41 43 4d 53 47 48 44 52 20 7b 0a 09 09   WSACMSGHDR {...
15e0: 09 55 49 4e 54 20 63 6d 73 67 5f 6c 65 6e 3b 0a  .UINT cmsg_len;.
15f0: 09 09 09 49 4e 54 20 20 63 6d 73 67 5f 6c 65 76  ...INT  cmsg_lev
1600: 65 6c 3b 0a 09 09 09 49 4e 54 20 20 63 6d 73 67  el;....INT  cmsg
1610: 5f 74 79 70 65 3b 0a 09 09 09 2f 2f 20 66 6f 6c  _type;....// fol
1620: 6c 6f 77 65 64 20 62 79 20 55 43 48 41 52 20 63  lowed by UCHAR c
1630: 6d 73 67 5f 64 61 74 61 5b 5d 3b 0a 09 09 7d 0a  msg_data[];...}.
1640: 0a 09 09 2f 2a 20 54 4f 44 4f 3a 20 53 74 61 6e  .../* TODO: Stan
1650: 64 61 72 64 20 50 6f 73 69 78 2e 31 67 20 6d 61  dard Posix.1g ma
1660: 63 72 6f 73 20 61 73 20 70 65 72 20 52 46 43 20  cros as per RFC 
1670: 32 32 39 32 2c 20 77 69 74 68 20 57 53 41 5f 75  2292, with WSA_u
1680: 67 6c 69 66 69 63 61 74 69 6f 6e 2e 20 2a 2f 0a  glification. */.
1690: 09 09 2f 2a 20 44 4b 3a 20 4d 69 6e 47 57 20 64  ../* DK: MinGW d
16a0: 6f 65 73 6e 27 74 20 64 65 66 69 6e 65 20 74 68  oesn't define th
16b0: 65 73 65 2c 20 61 6e 64 20 6e 65 69 74 68 65 72  ese, and neither
16c0: 20 64 6f 65 73 20 74 68 65 20 4d 53 44 4e 20 64   does the MSDN d
16d0: 6f 63 73 2e 20 20 4d 69 67 68 74 20 68 61 76 65  ocs.  Might have
16e0: 0a 09 09 20 20 20 74 6f 20 61 63 74 75 61 6c 6c  ...   to actuall
16f0: 79 20 6c 6f 6f 6b 20 75 70 20 52 46 43 20 32 32  y look up RFC 22
1700: 39 32 2e 2e 2e 20 2a 2f 0a 09 09 2f 2b 0a 09 09  92... */.../+...
1710: 23 69 66 20 30 0a 09 09 23 64 65 66 69 6e 65 20  #if 0...#define 
1720: 57 53 41 5f 43 4d 53 47 5f 46 49 52 53 54 48 44  WSA_CMSG_FIRSTHD
1730: 52 28 6d 68 64 72 29 0a 09 09 23 64 65 66 69 6e  R(mhdr)...#defin
1740: 65 20 57 53 41 5f 43 4d 53 47 5f 4e 58 54 48 44  e WSA_CMSG_NXTHD
1750: 52 28 6d 68 64 72 2c 20 63 6d 73 67 29 0a 09 09  R(mhdr, cmsg)...
1760: 23 64 65 66 69 6e 65 20 57 53 41 5f 43 4d 53 47  #define WSA_CMSG
1770: 5f 53 50 41 43 45 28 6c 65 6e 67 74 68 29 0a 09  _SPACE(length)..
1780: 09 23 64 65 66 69 6e 65 20 57 53 41 5f 43 4d 53  .#define WSA_CMS
1790: 47 5f 4c 45 4e 28 6c 65 6e 67 74 68 29 0a 09 09  G_LEN(length)...
17a0: 23 65 6e 64 69 66 0a 09 09 2b 2f 0a 0a 09 09 65  #endif...+/....e
17b0: 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 0a 09  xtern(Windows)..
17c0: 09 7b 0a 09 09 09 2f 2a 09 57 69 6e 58 50 2b 2c  .{..../*.WinXP+,
17d0: 20 53 72 76 32 6b 33 2b 0a 09 09 09 20 2a 09 6d   Srv2k3+.... *.m
17e0: 73 2d 68 65 6c 70 3a 2f 2f 4d 53 2e 4d 53 44 4e  s-help://MS.MSDN
17f0: 51 54 52 2e 32 30 30 33 46 45 42 2e 31 30 33 33  QTR.2003FEB.1033
1800: 2f 77 69 6e 73 6f 63 6b 2f 77 69 6e 73 6f 63 6b  /winsock/winsock
1810: 2f 64 69 73 63 6f 6e 6e 65 63 74 65 78 5f 32 2e  /disconnectex_2.
1820: 68 74 6d 0a 09 09 09 20 2a 2f 0a 09 09 09 42 4f  htm.... */....BO
1830: 4f 4c 20 44 69 73 63 6f 6e 6e 65 63 74 45 78 28  OL DisconnectEx(
1840: 53 4f 43 4b 45 54 2c 20 4c 50 4f 56 45 52 4c 41  SOCKET, LPOVERLA
1850: 50 50 45 44 2c 20 44 57 4f 52 44 2c 20 44 57 4f  PPED, DWORD, DWO
1860: 52 44 29 3b 0a 0a 09 09 09 2f 2a 09 57 69 6e 58  RD);...../*.WinX
1870: 50 2b 2c 20 53 72 76 32 6b 33 2b 0a 09 09 09 20  P+, Srv2k3+.... 
1880: 2a 09 6d 73 2d 68 65 6c 70 3a 2f 2f 4d 53 2e 4d  *.ms-help://MS.M
1890: 53 44 4e 51 54 52 2e 32 30 30 33 46 45 42 2e 31  SDNQTR.2003FEB.1
18a0: 30 33 33 2f 77 69 6e 73 6f 63 6b 2f 77 69 6e 73  033/winsock/wins
18b0: 6f 63 6b 2f 77 73 61 72 65 63 76 6d 73 67 5f 32  ock/wsarecvmsg_2
18c0: 2e 68 74 6d 0a 09 09 09 20 2a 2f 0a 09 09 09 69  .htm.... */....i
18d0: 6e 74 20 57 53 41 52 65 63 76 4d 73 67 28 53 4f  nt WSARecvMsg(SO
18e0: 43 4b 45 54 2c 20 4c 50 57 53 41 4d 53 47 2c 20  CKET, LPWSAMSG, 
18f0: 4c 50 44 57 4f 52 44 2c 20 4c 50 57 53 41 4f 56  LPDWORD, LPWSAOV
1900: 45 52 4c 41 50 50 45 44 2c 20 4c 50 57 53 41 4f  ERLAPPED, LPWSAO
1910: 56 45 52 4c 41 50 50 45 44 5f 43 4f 4d 50 4c 45  VERLAPPED_COMPLE
1920: 54 49 4f 4e 5f 52 4f 55 54 49 4e 45 29 3b 0a 09  TION_ROUTINE);..
1930: 09 7d 0a 09 7d 0a 7d 0a                          .}..}.}.