home *** CD-ROM | disk | FTP | other *** search
/ Total Destruction / Total_Destruction.iso / addons / Lccwin32.exe / Lccwin32 / lccpub / include / winsock2.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-12-04  |  38.8 KB  |  964 lines

  1. #ifndef    _LCC_WINSOCK2API_
  2. #define    _LCC_WINSOCK2API_
  3. #define    _WINSOCK
  4. #ifndef    _GNU_H_WIN32Headers
  5. #include    <windows.h>
  6. #endif
  7. #pragma pack(push,4)
  8. #define    WINSOCK_API_LINKAGE
  9. typedef    unsigned char u_char;
  10. typedef    unsigned short u_short;
  11. typedef    unsigned int u_int;
  12. typedef    unsigned long u_long;
  13. typedef    u_int SOCKET;
  14. #ifndef    FD_SETSIZE
  15. #define    FD_SETSIZE 64
  16. #endif
  17. typedef    struct fd_set { u_int fd_count; SOCKET fd_array[FD_SETSIZE];} fd_set;
  18. extern    int PASCAL __WSAFDIsSet(SOCKET,fd_set *);
  19. #define    FD_CLR(fd,set) do { \
  20.     u_int __i; \
  21.     for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) { \
  22.     if (((fd_set *)(set))->fd_array[__i] == fd) { \
  23.     while (__i < ((fd_set *)(set))->fd_count-1) { \
  24.     ((fd_set *)(set))->fd_array[__i] = \
  25.     ((fd_set *)(set))->fd_array[__i+1]; \
  26.     __i++; \
  27.     } \
  28.     ((fd_set *)(set))->fd_count--; \
  29.     break; \
  30.     } \
  31.     } \
  32. }    while(0)
  33. #define    FD_SET(fd,set) do { \
  34.     u_int __i; \
  35.     for (__i = 0; __i < ((fd_set *)(set))->fd_count; __i++) { \
  36.     if (((fd_set *)(set))->fd_array[__i] == (fd)) { \
  37.     break; \
  38.     } \
  39.     } \
  40.     if (__i == ((fd_set *)(set))->fd_count) { \
  41.     if (((fd_set *)(set))->fd_count < FD_SETSIZE) { \
  42.     ((fd_set *)(set))->fd_array[__i] = (fd); \
  43.     ((fd_set *)(set))->fd_count++; \
  44.     } \
  45.     } \
  46. }    while(0)
  47. #define    FD_ZERO(set) (((fd_set *)(set))->fd_count=0)
  48. #define    FD_ISSET(fd,set) __WSAFDIsSet((SOCKET)(fd),(fd_set *)(set))
  49. struct    timeval {
  50.     long tv_sec;
  51.     long tv_usec;
  52. };
  53. #define    timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
  54. #define    timercmp(tvp,uvp,cmp) \
  55.     ((tvp)->tv_sec cmp (uvp)->tv_sec || \
  56.     (tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec)
  57. #define    timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
  58. #define    IOCPARM_MASK 0x7f
  59. #define    IOC_VOID 0x20000000
  60. #define    IOC_OUT 0x40000000
  61. #define    IOC_IN 0x80000000
  62. #define    IOC_INOUT (IOC_IN|IOC_OUT)
  63. #define    _IO(x,y) (IOC_VOID|((x)<<8)|(y))
  64. #define    _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
  65. #define    _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
  66. #define    FIONREAD _IOR('f',127,u_long)
  67. #define    FIONBIO _IOW('f',126,u_long)
  68. #define    FIOASYNC _IOW('f',125,u_long)
  69. #define    SIOCSHIWAT _IOW('s',0,u_long)
  70. #define    SIOCGHIWAT _IOR('s',1,u_long)
  71. #define    SIOCSLOWAT _IOW('s',2,u_long)
  72. #define    SIOCGLOWAT _IOR('s',3,u_long)
  73. #define    SIOCATMARK _IOR('s',7,u_long)
  74. struct    hostent {
  75.     char * h_name;
  76.     char * * h_aliases;
  77.     short h_addrtype;
  78.     short h_length;
  79.     char * * h_addr_list;
  80. #define    h_addr h_addr_list[0]
  81. };
  82. struct    netent { char *n_name; char **n_aliases; short n_addrtype; u_long n_net;};
  83. struct    servent { char *s_name; char **s_aliases; short s_port; char * s_proto; };
  84. struct    protoent { char *p_name; char **p_aliases; short p_proto; };
  85. #define    IPPROTO_IP 0
  86. #define    IPPROTO_ICMP 1 
  87. #define    IPPROTO_IGMP 2 
  88. #define    IPPROTO_GGP 3 
  89. #define    IPPROTO_TCP 6 
  90. #define    IPPROTO_PUP 12 
  91. #define    IPPROTO_UDP 17 
  92. #define    IPPROTO_IDP 22 
  93. #define    IPPROTO_ND 77 
  94. #define    IPPROTO_RAW 255 
  95. #define    IPPROTO_MAX 256
  96. #define    IPPORT_ECHO 7
  97. #define    IPPORT_DISCARD 9
  98. #define    IPPORT_SYSTAT 11
  99. #define    IPPORT_DAYTIME 13
  100. #define    IPPORT_NETSTAT 15
  101. #define    IPPORT_FTP 21
  102. #define    IPPORT_TELNET 23
  103. #define    IPPORT_SMTP 25
  104. #define    IPPORT_TIMESERVER 37
  105. #define    IPPORT_NAMESERVER 42
  106. #define    IPPORT_WHOIS 43
  107. #define    IPPORT_MTP 57
  108. #define    IPPORT_TFTP 69
  109. #define    IPPORT_RJE 77
  110. #define    IPPORT_FINGER 79
  111. #define    IPPORT_TTYLINK 87
  112. #define    IPPORT_SUPDUP 95
  113. #define    IPPORT_EXECSERVER 512
  114. #define    IPPORT_LOGINSERVER 513
  115. #define    IPPORT_CMDSERVER 514
  116. #define    IPPORT_EFSSERVER 520
  117. #define    IPPORT_BIFFUDP 512
  118. #define    IPPORT_WHOSERVER 513
  119. #define    IPPORT_ROUTESERVER 520
  120. #define    IPPORT_RESERVED 1024
  121. #define    IMPLINK_IP 155
  122. #define    IMPLINK_LOWEXPER 156
  123. #define    IMPLINK_HIGHEXPER 158
  124. struct    in_addr {
  125.     union {
  126.     struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
  127.     struct { u_short s_w1,s_w2; } S_un_w;
  128.     u_long S_addr;
  129.     } S_un;
  130. #define    s_addr S_un.S_addr
  131. #define    s_host S_un.S_un_b.s_b2
  132. #define    s_net S_un.S_un_b.s_b1
  133. #define    s_imp S_un.S_un_w.s_w2
  134. #define    s_impno S_un.S_un_b.s_b4
  135. #define    s_lh S_un.S_un_b.s_b3
  136. };
  137. #define    IN_CLASSA(i) (((long)(i) & 0x80000000) == 0)
  138. #define    IN_CLASSA_NET 0xff000000
  139. #define    IN_CLASSA_NSHIFT 24
  140. #define    IN_CLASSA_HOST 0x00ffffff
  141. #define    IN_CLASSA_MAX 128
  142. #define    IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000)
  143. #define    IN_CLASSB_NET 0xffff0000
  144. #define    IN_CLASSB_NSHIFT 16
  145. #define    IN_CLASSB_HOST 0x0000ffff
  146. #define    IN_CLASSB_MAX 65536
  147. #define    IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000)
  148. #define    IN_CLASSC_NET 0xffffff00
  149. #define    IN_CLASSC_NSHIFT 8
  150. #define    IN_CLASSC_HOST 0x000000ff
  151. #define    IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000)
  152. #define    IN_CLASSD_NET 0xf0000000 
  153. #define    IN_CLASSD_NSHIFT 28 
  154. #define    IN_CLASSD_HOST 0x0fffffff 
  155. #define    IN_MULTICAST(i) IN_CLASSD(i)
  156. #define    INADDR_ANY (u_long)0x00000000
  157. #define    INADDR_LOOPBACK 0x7f000001
  158. #define    INADDR_BROADCAST (u_long)0xffffffff
  159. #define    INADDR_NONE 0xffffffff
  160. #define    ADDR_ANY INADDR_ANY
  161. struct    sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; };
  162. #define    WSADESCRIPTION_LEN 256
  163. #define    WSASYS_STATUS_LEN 128
  164. typedef    struct WSAData {
  165.     WORD wVersion;
  166.     WORD wHighVersion;
  167.     char szDescription[WSADESCRIPTION_LEN+1];
  168.     char szSystemStatus[WSASYS_STATUS_LEN+1];
  169.     unsigned short iMaxSockets;
  170.     unsigned short iMaxUdpDg;
  171.     char * lpVendorInfo;
  172. }    WSADATA,* LPWSADATA;
  173. #if    !defined(MAKEWORD)
  174. #define    MAKEWORD(low,high) \
  175.     ((WORD)((BYTE)(low)) | (((WORD)(BYTE)(high))<<8)))
  176. #endif
  177. #define    INVALID_SOCKET (SOCKET)(~0)
  178. #define    SOCKET_ERROR (-1)
  179. #define    FROM_PROTOCOL_INFO (-1)
  180. #define    SOCK_STREAM 1 
  181. #define    SOCK_DGRAM 2 
  182. #define    SOCK_RAW 3 
  183. #define    SOCK_RDM 4 
  184. #define    SOCK_SEQPACKET 5 
  185. #define    SO_DEBUG 1 
  186. #define    SO_ACCEPTCONN 2 
  187. #define    SO_REUSEADDR 4 
  188. #define    SO_KEEPALIVE 8 
  189. #define    SO_DONTROUTE 16 
  190. #define    SO_BROADCAST 0x20 
  191. #define    SO_USELOOPBACK 0x40 
  192. #define    SO_LINGER 0x80 
  193. #define    SO_OOBINLINE 0x100 
  194. #define    SO_DONTLINGER (int)(~SO_LINGER)
  195. #define    SO_SNDBUF 0x1001 
  196. #define    SO_RCVBUF 0x1002 
  197. #define    SO_SNDLOWAT 0x1003 
  198. #define    SO_RCVLOWAT 0x1004 
  199. #define    SO_SNDTIMEO 0x1005 
  200. #define    SO_RCVTIMEO 0x1006 
  201. #define    SO_ERROR 0x1007 
  202. #define    SO_TYPE 0x1008 
  203. #define    SO_GROUP_ID 0x2001 
  204. #define    SO_GROUP_PRIORITY 0x2002 
  205. #define    SO_MAX_MSG_SIZE 0x2003 
  206. #define    SO_PROTOCOL_INFOA 0x2004 
  207. #define    SO_PROTOCOL_INFOW 0x2005 
  208. #ifdef    UNICODE
  209. #define    SO_PROTOCOL_INFO SO_PROTOCOL_INFOW
  210. #else
  211. #define    SO_PROTOCOL_INFO SO_PROTOCOL_INFOA
  212. #endif    
  213. #define    PVD_CONFIG 0x3001 
  214. #define    TCP_NODELAY 1
  215. #define    AF_UNSPEC 0 
  216. #define    AF_UNIX 1 
  217. #define    AF_INET 2 
  218. #define    AF_IMPLINK 3 
  219. #define    AF_PUP 4 
  220. #define    AF_CHAOS 5 
  221. #define    AF_NS 6 
  222. #define    AF_IPX AF_NS 
  223. #define    AF_ISO 7 
  224. #define    AF_OSI AF_ISO 
  225. #define    AF_ECMA 8 
  226. #define    AF_DATAKIT 9 
  227. #define    AF_CCITT 10 
  228. #define    AF_SNA 11 
  229. #define    AF_DECnet 12 
  230. #define    AF_DLI 13 
  231. #define    AF_LAT 14 
  232. #define    AF_HYLINK 15 
  233. #define    AF_APPLETALK 16 
  234. #define    AF_NETBIOS 17 
  235. #define    AF_VOICEVIEW 18 
  236. #define    AF_FIREFOX 19 
  237. #define    AF_UNKNOWN1 20 
  238. #define    AF_BAN 21 
  239. #define    AF_ATM 22 
  240. #define    AF_INET6 23 
  241. #define    AF_MAX 24
  242. struct    sockaddr { u_short sa_family; char sa_data[14];};
  243. struct    sockproto { u_short sp_family; u_short sp_protocol;};
  244. #define    PF_UNSPEC AF_UNSPEC
  245. #define    PF_UNIX AF_UNIX
  246. #define    PF_INET AF_INET
  247. #define    PF_IMPLINK AF_IMPLINK
  248. #define    PF_PUP AF_PUP
  249. #define    PF_CHAOS AF_CHAOS
  250. #define    PF_NS AF_NS
  251. #define    PF_IPX AF_IPX
  252. #define    PF_ISO AF_ISO
  253. #define    PF_OSI AF_OSI
  254. #define    PF_ECMA AF_ECMA
  255. #define    PF_DATAKIT AF_DATAKIT
  256. #define    PF_CCITT AF_CCITT
  257. #define    PF_SNA AF_SNA
  258. #define    PF_DECnet AF_DECnet
  259. #define    PF_DLI AF_DLI
  260. #define    PF_LAT AF_LAT
  261. #define    PF_HYLINK AF_HYLINK
  262. #define    PF_APPLETALK AF_APPLETALK
  263. #define    PF_VOICEVIEW AF_VOICEVIEW
  264. #define    PF_FIREFOX AF_FIREFOX
  265. #define    PF_UNKNOWN1 AF_UNKNOWN1
  266. #define    PF_BAN AF_BAN
  267. #define    PF_ATM AF_ATM
  268. #define    PF_INET6 AF_INET6
  269. #define    PF_MAX AF_MAX
  270. struct    linger { u_short l_onoff; u_short l_linger;};
  271. #define    SOL_SOCKET 0xffff 
  272. #define    SOMAXCONN 0x7fffffff
  273. #define    MSG_OOB 0x1 
  274. #define    MSG_PEEK 0x2 
  275. #define    MSG_DONTROUTE 0x4 
  276. #define    MSG_PARTIAL 0x8000 
  277. #define    MSG_INTERRUPT 0x10 
  278. #define    MSG_MAXIOVLEN 16
  279. #define    MAXGETHOSTSTRUCT 1024
  280. #define    FD_READ_BIT 0
  281. #define    FD_READ (1 << FD_READ_BIT)
  282. #define    FD_WRITE_BIT 1
  283. #define    FD_WRITE (1 << FD_WRITE_BIT)
  284. #define    FD_OOB_BIT 2
  285. #define    FD_OOB (1 << FD_OOB_BIT)
  286. #define    FD_ACCEPT_BIT 3
  287. #define    FD_ACCEPT (1 << FD_ACCEPT_BIT)
  288. #define    FD_CONNECT_BIT 4
  289. #define    FD_CONNECT (1 << FD_CONNECT_BIT)
  290. #define    FD_CLOSE_BIT 5
  291. #define    FD_CLOSE (1 << FD_CLOSE_BIT)
  292. #define    FD_QOS_BIT 6
  293. #define    FD_QOS (1 << FD_QOS_BIT)
  294. #define    FD_GROUP_QOS_BIT 7
  295. #define    FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT)
  296. #define    FD_MAX_EVENTS 8
  297. #define    FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1)
  298. #define    WSABASEERR 10000
  299. #define    WSAEINTR (WSABASEERR+4)
  300. #define    WSAEBADF (WSABASEERR+9)
  301. #define    WSAEACCES (WSABASEERR+13)
  302. #define    WSAEFAULT (WSABASEERR+14)
  303. #define    WSAEINVAL (WSABASEERR+22)
  304. #define    WSAEMFILE (WSABASEERR+24)
  305. #define    WSAEWOULDBLOCK (WSABASEERR+35)
  306. #define    WSAEINPROGRESS (WSABASEERR+36)
  307. #define    WSAEALREADY (WSABASEERR+37)
  308. #define    WSAENOTSOCK (WSABASEERR+38)
  309. #define    WSAEDESTADDRREQ (WSABASEERR+39)
  310. #define    WSAEMSGSIZE (WSABASEERR+40)
  311. #define    WSAEPROTOTYPE (WSABASEERR+41)
  312. #define    WSAENOPROTOOPT (WSABASEERR+42)
  313. #define    WSAEPROTONOSUPPORT (WSABASEERR+43)
  314. #define    WSAESOCKTNOSUPPORT (WSABASEERR+44)
  315. #define    WSAEOPNOTSUPP (WSABASEERR+45)
  316. #define    WSAEPFNOSUPPORT (WSABASEERR+46)
  317. #define    WSAEAFNOSUPPORT (WSABASEERR+47)
  318. #define    WSAEADDRINUSE (WSABASEERR+48)
  319. #define    WSAEADDRNOTAVAIL (WSABASEERR+49)
  320. #define    WSAENETDOWN (WSABASEERR+50)
  321. #define    WSAENETUNREACH (WSABASEERR+51)
  322. #define    WSAENETRESET (WSABASEERR+52)
  323. #define    WSAECONNABORTED (WSABASEERR+53)
  324. #define    WSAECONNRESET (WSABASEERR+54)
  325. #define    WSAENOBUFS (WSABASEERR+55)
  326. #define    WSAEISCONN (WSABASEERR+56)
  327. #define    WSAENOTCONN (WSABASEERR+57)
  328. #define    WSAESHUTDOWN (WSABASEERR+58)
  329. #define    WSAETOOMANYREFS (WSABASEERR+59)
  330. #define    WSAETIMEDOUT (WSABASEERR+60)
  331. #define    WSAECONNREFUSED (WSABASEERR+61)
  332. #define    WSAELOOP (WSABASEERR+62)
  333. #define    WSAENAMETOOLONG (WSABASEERR+63)
  334. #define    WSAEHOSTDOWN (WSABASEERR+64)
  335. #define    WSAEHOSTUNREACH (WSABASEERR+65)
  336. #define    WSAENOTEMPTY (WSABASEERR+66)
  337. #define    WSAEPROCLIM (WSABASEERR+67)
  338. #define    WSAEUSERS (WSABASEERR+68)
  339. #define    WSAEDQUOT (WSABASEERR+69)
  340. #define    WSAESTALE (WSABASEERR+70)
  341. #define    WSAEREMOTE (WSABASEERR+71)
  342. #define    WSASYSNOTREADY (WSABASEERR+91)
  343. #define    WSAVERNOTSUPPORTED (WSABASEERR+92)
  344. #define    WSANOTINITIALISED (WSABASEERR+93)
  345. #define    WSAEDISCON (WSABASEERR+101)
  346. #define    WSAENOMORE (WSABASEERR+102)
  347. #define    WSAECANCELLED (WSABASEERR+103)
  348. #define    WSAEINVALIDPROCTABLE (WSABASEERR+104)
  349. #define    WSAEINVALIDPROVIDER (WSABASEERR+105)
  350. #define    WSAEPROVIDERFAILEDINIT (WSABASEERR+106)
  351. #define    WSASYSCALLFAILURE (WSABASEERR+107)
  352. #define    WSASERVICE_NOT_FOUND (WSABASEERR+108)
  353. #define    WSATYPE_NOT_FOUND (WSABASEERR+109)
  354. #define    WSA_E_NO_MORE (WSABASEERR+110)
  355. #define    WSA_E_CANCELLED (WSABASEERR+111)
  356. #define    WSAEREFUSED (WSABASEERR+112)
  357. #define    h_errno WSAGetLastError()
  358. #define    WSAHOST_NOT_FOUND (WSABASEERR+1001)
  359. #define    HOST_NOT_FOUND WSAHOST_NOT_FOUND
  360. #define    WSATRY_AGAIN (WSABASEERR+1002)
  361. #define    TRY_AGAIN WSATRY_AGAIN
  362. #define    WSANO_RECOVERY (WSABASEERR+1003)
  363. #define    NO_RECOVERY WSANO_RECOVERY
  364. #define    WSANO_DATA (WSABASEERR+1004)
  365. #define    NO_DATA WSANO_DATA
  366. #define    WSANO_ADDRESS WSANO_DATA
  367. #define    NO_ADDRESS WSANO_ADDRESS
  368. #define    WSAAPI PASCAL
  369. #define    WSAEVENT HANDLE
  370. #define    LPWSAEVENT LPHANDLE
  371. #define    WSAOVERLAPPED OVERLAPPED
  372. typedef    struct _OVERLAPPED * LPWSAOVERLAPPED;
  373. #define    WSA_IO_PENDING (ERROR_IO_PENDING)
  374. #define    WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE)
  375. #define    WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE)
  376. #define    WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER)
  377. #define    WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY)
  378. #define    WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED)
  379. #define    WSA_INVALID_EVENT ((WSAEVENT)NULL)
  380. #define    WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
  381. #define    WSA_WAIT_FAILED ((DWORD)-1L)
  382. #define    WSA_WAIT_EVENT_0 (WAIT_OBJECT_0)
  383. #define    WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION)
  384. #define    WSA_WAIT_TIMEOUT (WAIT_TIMEOUT)
  385. #define    WSA_INFINITE (INFINITE)
  386. typedef    struct _WSABUF { u_long len; char *buf; } WSABUF,* LPWSABUF;
  387. typedef    enum { BestEffortService,ControlledLoadService,PredictiveService,
  388.     GuaranteedDelayService,GuaranteedService } GUARANTEE;
  389. typedef    long int32;
  390. typedef    struct _flowspec {
  391.     int32 TokenRate; 
  392.     int32 TokenBucketSize; 
  393.     int32 PeakBandwidth; 
  394.     int32 Latency; 
  395.     int32 DelayVariation; 
  396.     GUARANTEE LevelOfGuarantee; 
  397.     int32 CostOfCall; 
  398.     int32 NetworkAvailability; 
  399. }    FLOWSPEC,* LPFLOWSPEC;
  400. typedef    struct _QualityOfService {
  401.     FLOWSPEC SendingFlowspec; 
  402.     FLOWSPEC ReceivingFlowspec; 
  403.     WSABUF ProviderSpecific; 
  404. }    QOS,* LPQOS;
  405. #define    CF_ACCEPT 0
  406. #define    CF_REJECT 1
  407. #define    CF_DEFER 2
  408. #define    SD_RECEIVE 0
  409. #define    SD_SEND 1
  410. #define    SD_BOTH 2
  411. typedef    unsigned int GROUP;
  412. #define    SG_UNCONSTRAINED_GROUP 0x01
  413. #define    SG_CONSTRAINED_GROUP 0x02
  414. typedef    struct _WSANETWORKEVENTS { long lNetworkEvents; int iErrorCode[FD_MAX_EVENTS];
  415. }    WSANETWORKEVENTS,* LPWSANETWORKEVENTS;
  416. #ifndef    GUID_DEFINED
  417. #define    GUID_DEFINED
  418. typedef    struct _GUID {
  419.     unsigned long Data1;
  420.     unsigned short Data2;
  421.     unsigned short Data3;
  422.     unsigned char Data4[8];
  423. }    GUID;
  424. typedef    GUID *LPGUID;
  425. #endif
  426. #define    MAX_PROTOCOL_CHAIN 7
  427. #define    BASE_PROTOCOL 1
  428. #define    LAYERED_PROTOCOL 0
  429. typedef    struct _WSAPROTOCOLCHAIN {
  430.     int ChainLen; 
  431.     DWORD ChainEntries[MAX_PROTOCOL_CHAIN]; 
  432. }    WSAPROTOCOLCHAIN,* LPWSAPROTOCOLCHAIN;
  433. #define    WSAPROTOCOL_LEN 255
  434. typedef    struct _WSAPROTOCOL_INFOA {
  435.     DWORD dwServiceFlags1;
  436.     DWORD dwServiceFlags2;
  437.     DWORD dwServiceFlags3;
  438.     DWORD dwServiceFlags4;
  439.     DWORD dwProviderFlags;
  440.     GUID ProviderId;
  441.     DWORD dwCatalogEntryId;
  442.     WSAPROTOCOLCHAIN ProtocolChain;
  443.     int iVersion;
  444.     int iAddressFamily;
  445.     int iMaxSockAddr;
  446.     int iMinSockAddr;
  447.     int iSocketType;
  448.     int iProtocol;
  449.     int iProtocolMaxOffset;
  450.     int iNetworkByteOrder;
  451.     int iSecurityScheme;
  452.     DWORD dwMessageSize;
  453.     DWORD dwProviderReserved;
  454.     CHAR szProtocol[WSAPROTOCOL_LEN+1];
  455. }    WSAPROTOCOL_INFOA,* LPWSAPROTOCOL_INFOA;
  456. typedef    struct _WSAPROTOCOL_INFOW {
  457.     DWORD dwServiceFlags1;
  458.     DWORD dwServiceFlags2;
  459.     DWORD dwServiceFlags3;
  460.     DWORD dwServiceFlags4;
  461.     DWORD dwProviderFlags;
  462.     GUID ProviderId;
  463.     DWORD dwCatalogEntryId;
  464.     WSAPROTOCOLCHAIN ProtocolChain;
  465.     int iVersion;
  466.     int iAddressFamily;
  467.     int iMaxSockAddr;
  468.     int iMinSockAddr;
  469.     int iSocketType;
  470.     int iProtocol;
  471.     int iProtocolMaxOffset;
  472.     int iNetworkByteOrder;
  473.     int iSecurityScheme;
  474.     DWORD dwMessageSize;
  475.     DWORD dwProviderReserved;
  476.     WCHAR szProtocol[WSAPROTOCOL_LEN+1];
  477. }    WSAPROTOCOL_INFOW,* LPWSAPROTOCOL_INFOW;
  478. #ifdef    UNICODE
  479. typedef    WSAPROTOCOL_INFOW WSAPROTOCOL_INFO;
  480. typedef    LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO;
  481. #else
  482. typedef    WSAPROTOCOL_INFOA WSAPROTOCOL_INFO;
  483. typedef    LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO;
  484. #endif
  485. #define    PFL_MULTIPLE_PROTO_ENTRIES 1
  486. #define    PFL_RECOMMENDED_PROTO_ENTRY 2
  487. #define    PFL_HIDDEN 0x00000004
  488. #define    PFL_MATCHES_PROTOCOL_ZERO 8
  489. #define    XP1_CONNECTIONLESS 1
  490. #define    XP1_GUARANTEED_DELIVERY 2
  491. #define    XP1_GUARANTEED_ORDER 4
  492. #define    XP1_MESSAGE_ORIENTED 8
  493. #define    XP1_PSEUDO_STREAM 0x10
  494. #define    XP1_GRACEFUL_CLOSE 0x20
  495. #define    XP1_EXPEDITED_DATA 0x40
  496. #define    XP1_CONNECT_DATA 0x080
  497. #define    XP1_DISCONNECT_DATA 0x0100
  498. #define    XP1_SUPPORT_BROADCAST 0x200
  499. #define    XP1_SUPPORT_MULTIPOINT 0x400
  500. #define    XP1_MULTIPOINT_CONTROL_PLANE 0x800
  501. #define    XP1_MULTIPOINT_DATA_PLANE 0x1000
  502. #define    XP1_QOS_SUPPORTED 0x2000
  503. #define    XP1_INTERRUPT 0x4000
  504. #define    XP1_UNI_SEND 0x8000
  505. #define    XP1_UNI_RECV 0x10000
  506. #define    XP1_IFS_HANDLES 0x20000
  507. #define    XP1_PARTIAL_MESSAGE 0x40000
  508. #define    BIGENDIAN 0
  509. #define    LITTLEENDIAN 1
  510. #define    SECURITY_PROTOCOL_NONE 0
  511. #define    JL_SENDER_ONLY 1
  512. #define    JL_RECEIVER_ONLY 2
  513. #define    JL_BOTH 4
  514. #define    WSA_FLAG_OVERLAPPED 1
  515. #define    WSA_FLAG_MULTIPOINT_C_ROOT 2
  516. #define    WSA_FLAG_MULTIPOINT_C_LEAF 4
  517. #define    WSA_FLAG_MULTIPOINT_D_ROOT 8
  518. #define    WSA_FLAG_MULTIPOINT_D_LEAF 16
  519. #define    IOC_UNIX 0
  520. #define    IOC_WS2 0x08000000
  521. #define    IOC_PROTOCOL 0x10000000
  522. #define    IOC_VENDOR 0x18000000
  523. #define    _WSAIO(x,y) (IOC_VOID|(x)|(y))
  524. #define    _WSAIOR(x,y) (IOC_OUT|(x)|(y))
  525. #define    _WSAIOW(x,y) (IOC_IN|(x)|(y))
  526. #define    _WSAIORW(x,y) (IOC_INOUT|(x)|(y))
  527. #define    SIO_ASSOCIATE_HANDLE _WSAIOW(IOC_WS2,1)
  528. #define    SIO_ENABLE_CIRCULAR_QUEUEING _WSAIO(IOC_WS2,2)
  529. #define    SIO_FIND_ROUTE _WSAIOR(IOC_WS2,3)
  530. #define    SIO_FLUSH _WSAIO(IOC_WS2,4)
  531. #define    SIO_GET_BROADCAST_ADDRESS _WSAIOR(IOC_WS2,5)
  532. #define    SIO_GET_EXTENSION_FUNCTION_POINTER _WSAIORW(IOC_WS2,6)
  533. #define    SIO_GET_QOS _WSAIORW(IOC_WS2,7)
  534. #define    SIO_GET_GROUP_QOS _WSAIORW(IOC_WS2,8)
  535. #define    SIO_MULTIPOINT_LOOPBACK _WSAIOW(IOC_WS2,9)
  536. #define    SIO_MULTICAST_SCOPE _WSAIOW(IOC_WS2,10)
  537. #define    SIO_SET_QOS _WSAIOW(IOC_WS2,11)
  538. #define    SIO_SET_GROUP_QOS _WSAIOW(IOC_WS2,12)
  539. #define    SIO_TRANSLATE_HANDLE _WSAIORW(IOC_WS2,13)
  540. #define    TH_NETDEV 1
  541. #define    TH_TAPI 2
  542. typedef    struct sockaddr SOCKADDR;
  543. typedef    struct sockaddr *PSOCKADDR;
  544. typedef    struct sockaddr *LPSOCKADDR;
  545. #define    SERVICE_MULTIPLE 1
  546. #define    NS_ALL 0
  547. #define    NS_SAP 1
  548. #define    NS_NDS 2
  549. #define    NS_PEER_BROWSE 3
  550. #define    NS_TCPIP_LOCAL 10
  551. #define    NS_TCPIP_HOSTS 11
  552. #define    NS_DNS 12
  553. #define    NS_NETBT 13
  554. #define    NS_WINS 14
  555. #define    NS_NBP 20
  556. #define    NS_MS 30
  557. #define    NS_STDA 31
  558. #define    NS_NTDS 32
  559. #define    NS_X500 40
  560. #define    NS_NIS 41
  561. #define    NS_NISPLUS 42
  562. #define    NS_WRQ 50
  563. #define    RES_UNUSED_1 1
  564. #define    RES_FLUSH_CACHE 2
  565. #ifndef    RES_SERVICE
  566. #define    RES_SERVICE 4
  567. #endif    
  568. #define    SERVICE_TYPE_VALUE_IPXPORTA "IpxSocket"
  569. #define    SERVICE_TYPE_VALUE_IPXPORTW L"IpxSocket"
  570. #define    SERVICE_TYPE_VALUE_SAPIDA "SapId"
  571. #define    SERVICE_TYPE_VALUE_SAPIDW L"SapId"
  572. #define    SERVICE_TYPE_VALUE_TCPPORTA "TcpPort"
  573. #define    SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort"
  574. #define    SERVICE_TYPE_VALUE_UDPPORTA "UdpPort"
  575. #define    SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort"
  576. #define    SERVICE_TYPE_VALUE_OBJECTIDA "ObjectId"
  577. #define    SERVICE_TYPE_VALUE_OBJECTIDW L"ObjectId"
  578. #ifdef    UNICODE
  579. #define    SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDW
  580. #define    SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTW
  581. #define    SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTW
  582. #define    SERVICE_TYPE_VALUE_OBJECTID SERVICE_TYPE_VALUE_OBJECTIDW
  583. #else    
  584. #define    SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDA
  585. #define    SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTA
  586. #define    SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTA
  587. #define    SERVICE_TYPE_VALUE_OBJECTID SERVICE_TYPE_VALUE_OBJECTIDA
  588. #endif
  589. #ifndef    __CSADDR_DEFINED__
  590. #define    __CSADDR_DEFINED__
  591. typedef    struct _SOCKET_ADDRESS {
  592.     LPSOCKADDR lpSockaddr ; INT iSockaddrLength ;
  593. }    SOCKET_ADDRESS,*PSOCKET_ADDRESS,* LPSOCKET_ADDRESS ;
  594. typedef    struct _CSADDR_INFO {
  595.     SOCKET_ADDRESS LocalAddr ; SOCKET_ADDRESS RemoteAddr ;
  596.     INT iSocketType ; INT iProtocol ;
  597. }    CSADDR_INFO,*PCSADDR_INFO,* LPCSADDR_INFO ;
  598. #endif
  599. typedef    struct _AFPROTOCOLS { INT iAddressFamily; INT iProtocol; } AFPROTOCOLS,*PAFPROTOCOLS,*LPAFPROTOCOLS;
  600. typedef    enum _WSAEcomparator { COMP_EQUAL = 0,COMP_NOTLESS } WSAECOMPARATOR,*PWSAECOMPARATOR,*LPWSAECOMPARATOR;
  601. typedef    struct _WSAVersion { DWORD dwVersion; WSAECOMPARATOR ecHow; }WSAVERSION,*PWSAVERSION,*LPWSAVERSION;
  602. typedef    struct _WSAQuerySetA {
  603.     DWORD dwSize; LPSTR lpszServiceInstanceName; LPGUID lpServiceClassId;
  604.     LPWSAVERSION lpVersion; LPSTR lpszComment; DWORD dwNameSpace;
  605.     LPGUID lpNSProviderId; LPSTR lpszContext; DWORD dwNumberOfProtocols;
  606.     LPAFPROTOCOLS lpafpProtocols; LPSTR lpszQueryString; DWORD dwNumberOfCsAddrs;
  607.     LPCSADDR_INFO lpcsaBuffer; DWORD dwOutputFlags; LPBLOB lpBlob;
  608. }    WSAQUERYSETA,*PWSAQUERYSETA,*LPWSAQUERYSETA;
  609. typedef    struct _WSAQuerySetW {
  610.     DWORD dwSize; LPWSTR lpszServiceInstanceName; LPGUID lpServiceClassId;
  611.     LPWSAVERSION lpVersion; LPWSTR lpszComment; DWORD dwNameSpace;
  612.     LPGUID lpNSProviderId; LPWSTR lpszContext; DWORD dwNumberOfProtocols;
  613.     LPAFPROTOCOLS lpafpProtocols; LPWSTR lpszQueryString; DWORD dwNumberOfCsAddrs;
  614.     LPCSADDR_INFO lpcsaBuffer; DWORD dwOutputFlags; LPBLOB lpBlob;
  615. }    WSAQUERYSETW,*PWSAQUERYSETW,*LPWSAQUERYSETW;
  616. #ifdef    UNICODE
  617. typedef    WSAQUERYSETW WSAQUERYSET;
  618. typedef    PWSAQUERYSETW PWSAQUERYSET;
  619. typedef    LPWSAQUERYSETW LPWSAQUERYSET;
  620. #else
  621. typedef    WSAQUERYSETA WSAQUERYSET;
  622. typedef    PWSAQUERYSETA PWSAQUERYSET;
  623. typedef    LPWSAQUERYSETA LPWSAQUERYSET;
  624. #endif
  625. #define    LUP_DEEP 1
  626. #define    LUP_CONTAINERS 2
  627. #define    LUP_NOCONTAINERS 4
  628. #define    LUP_NEAREST 8
  629. #define    LUP_RETURN_NAME 0x10
  630. #define    LUP_RETURN_TYPE 0x20
  631. #define    LUP_RETURN_VERSION 0x40
  632. #define    LUP_RETURN_COMMENT 0x80
  633. #define    LUP_RETURN_ADDR 0x100
  634. #define    LUP_RETURN_BLOB 0x200
  635. #define    LUP_RETURN_ALIASES 0x400
  636. #define    LUP_RETURN_QUERY_STRING 0x800
  637. #define    LUP_RETURN_ALL 0x0FF0
  638. #define    LUP_RES_SERVICE 0x8000
  639. #define    LUP_FLUSHCACHE 0x1000
  640. #define    LUP_FLUSHPREVIOUS 0x2000
  641. #define    RESULT_IS_ALIAS 1
  642. typedef    enum _WSAESETSERVICEOP { RNRSERVICE_REGISTER=0, RNRSERVICE_DEREGISTER,
  643.     RNRSERVICE_DELETE
  644. }    WSAESETSERVICEOP,*PWSAESETSERVICEOP,*LPWSAESETSERVICEOP;
  645. typedef    struct _WSANSClassInfoA {
  646.     LPSTR lpszName; DWORD dwNameSpace;
  647.     DWORD dwValueType; DWORD dwValueSize; LPVOID lpValue;
  648. }WSANSCLASSINFOA,*PWSANSCLASSINFOA,*LPWSANSCLASSINFOA;
  649. typedef    struct _WSANSClassInfoW {
  650.     LPWSTR lpszName; DWORD dwNameSpace; DWORD dwValueType;
  651.     DWORD dwValueSize; LPVOID lpValue;
  652. }WSANSCLASSINFOW,*PWSANSCLASSINFOW,*LPWSANSCLASSINFOW;
  653. typedef    struct _WSAServiceClassInfoA {
  654.     LPGUID lpServiceClassId; LPSTR lpszServiceClassName;
  655.     DWORD dwCount; LPWSANSCLASSINFOA lpClassInfos;
  656. }WSASERVICECLASSINFOA,*PWSASERVICECLASSINFOA,*LPWSASERVICECLASSINFOA;
  657. typedef    struct _WSAServiceClassInfoW {
  658.     LPGUID lpServiceClassId; LPWSTR lpszServiceClassName; DWORD dwCount;
  659.     LPWSANSCLASSINFOW lpClassInfos;
  660. }WSASERVICECLASSINFOW,*PWSASERVICECLASSINFOW,*LPWSASERVICECLASSINFOW;
  661. typedef    struct _WSANAMESPACE_INFOA { GUID NSProviderId;
  662.     DWORD dwNameSpace; BOOL fActive; DWORD dwVersion; LPSTR lpszIdentifier;
  663. }    WSANAMESPACE_INFOA,*PWSANAMESPACE_INFOA,*LPWSANAMESPACE_INFOA;
  664. typedef    struct _WSANAMESPACE_INFOW {
  665.     GUID NSProviderId; DWORD dwNameSpace; BOOL fActive; DWORD dwVersion;
  666.     LPWSTR lpszIdentifier;
  667. }    WSANAMESPACE_INFOW,*PWSANAMESPACE_INFOW,*LPWSANAMESPACE_INFOW;
  668. #ifdef    UNICODE
  669. typedef    WSANSCLASSINFOW WSANSCLASSINFO;
  670. typedef    PWSANSCLASSINFOW PWSANSCLASSINFO;
  671. typedef    LPWSANSCLASSINFOW LPWSANSCLASSINFO;
  672. typedef    WSASERVICECLASSINFOW WSASERVICECLASSINFO;
  673. typedef    PWSASERVICECLASSINFOW PWSASERVICECLASSINFO;
  674. typedef    LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO;
  675. typedef    WSANAMESPACE_INFOW WSANAMESPACE_INFO;
  676. typedef    PWSANAMESPACE_INFOW PWSANAMESPACE_INFO;
  677. typedef    LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO;
  678. #else
  679. typedef    WSANSCLASSINFOA WSANSCLASSINFO;
  680. typedef    PWSANSCLASSINFOA PWSANSCLASSINFO;
  681. typedef    LPWSANSCLASSINFOA LPWSANSCLASSINFO;
  682. typedef    WSASERVICECLASSINFOA WSASERVICECLASSINFO;
  683. typedef    PWSASERVICECLASSINFOA PWSASERVICECLASSINFO;
  684. typedef    LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO;
  685. typedef    WSANAMESPACE_INFOA WSANAMESPACE_INFO;
  686. typedef    PWSANAMESPACE_INFOA PWSANAMESPACE_INFO;
  687. typedef    LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO;
  688. #endif
  689. SOCKET    WSAAPI accept(SOCKET,struct sockaddr *,int *);
  690. typedef    SOCKET (WSAAPI * LPFN_ACCEPT)(SOCKET,struct sockaddr *,int *);
  691. int    WSAAPI bind(SOCKET,const struct sockaddr *,int);
  692. typedef    int (WSAAPI * LPFN_BIND)(SOCKET,const struct sockaddr *,int);
  693. int    WSAAPI closesocket(SOCKET);
  694. typedef    int (WSAAPI * LPFN_CLOSESOCKET)(SOCKET );
  695. int    WSAAPI connect(SOCKET,const struct sockaddr *,int);
  696. typedef    int (WSAAPI * LPFN_CONNECT)(SOCKET,const struct sockaddr *,int);
  697. int    WSAAPI ioctlsocket(SOCKET,long,u_long *);
  698. typedef    int (WSAAPI * LPFN_IOCTLSOCKET)(SOCKET,long,u_long *);
  699. int    WSAAPI getpeername(SOCKET,struct sockaddr *,int *);
  700. typedef    int (WSAAPI * LPFN_GETPEERNAME)(SOCKET,struct sockaddr *,int *);
  701. int    WSAAPI getsockname(SOCKET,struct sockaddr *,int *);
  702. typedef    int (WSAAPI * LPFN_GETSOCKNAME)(SOCKET,struct sockaddr *,int *);
  703. int    WSAAPI getsockopt(SOCKET,int,int,char *,int *);
  704. typedef    int (WSAAPI * LPFN_GETSOCKOPT)(SOCKET,int,int,char *,int *);
  705. u_long    WSAAPI htonl(u_long);
  706. typedef    u_long (WSAAPI * LPFN_HTONL)(u_long);
  707. u_short    WSAAPI htons(u_short);
  708. typedef    u_short (WSAAPI * LPFN_HTONS)(u_short);
  709. unsigned    long WSAAPI inet_addr(const char *);
  710. typedef    unsigned long (WSAAPI * LPFN_INET_ADDR)(const char *);
  711. char    *WSAAPI inet_ntoa(struct in_addr);
  712. typedef    char * (WSAAPI * LPFN_INET_NTOA)(struct in_addr);
  713. int    WSAAPI listen(SOCKET,int);
  714. typedef    int (WSAAPI * LPFN_LISTEN)(SOCKET,int);
  715. u_long    WSAAPI ntohl(u_long);
  716. typedef    u_long (WSAAPI * LPFN_NTOHL)(u_long);
  717. u_short    WSAAPI ntohs(u_short);
  718. typedef    u_short (WSAAPI * LPFN_NTOHS)(u_short);
  719. int    WSAAPI recv(SOCKET,char *,int,int);
  720. typedef    int (WSAAPI * LPFN_RECV)(SOCKET,char *,int,int);
  721. int    WSAAPI recvfrom(SOCKET,char *,int,int,struct sockaddr *,int *);
  722. typedef    int (WSAAPI * LPFN_RECVFROM)(SOCKET,char *,int,int,struct sockaddr *,int *);
  723. int    WSAAPI select(int,fd_set *,fd_set *,fd_set *,const struct timeval *);
  724. typedef    int (WSAAPI * LPFN_SELECT)(int,fd_set *,fd_set *,fd_set *,const struct timeval *);
  725. int    WSAAPI send(SOCKET,const char *,int,int);
  726. typedef    int (WSAAPI * LPFN_SEND)(SOCKET,const char *,int,int);
  727. int    WSAAPI sendto(SOCKET,const char *,int,int,const struct sockaddr *,int);
  728. typedef    int (WSAAPI * LPFN_SENDTO)(SOCKET,const char *,int,int,const struct sockaddr *,int);
  729. int    WSAAPI setsockopt(SOCKET,int,int,const char *,int);
  730. typedef    int (WSAAPI * LPFN_SETSOCKOPT)(SOCKET,int,int,const char *,int);
  731. int    WSAAPI shutdown(SOCKET,int);
  732. typedef    int (WSAAPI * LPFN_SHUTDOWN)(SOCKET,int);
  733. SOCKET    WSAAPI socket(int,int,int);
  734. typedef    SOCKET (WSAAPI * LPFN_SOCKET)(int,int,int);
  735. struct    hostent *WSAAPI gethostbyaddr(const char *,int,int);
  736. typedef    struct hostent *(WSAAPI * LPFN_GETHOSTBYADDR)(const char *,int,int);
  737. struct    hostent *WSAAPI gethostbyname(const char *);
  738. typedef    struct hostent *(WSAAPI * LPFN_GETHOSTBYNAME)(const char *);
  739. int    WSAAPI gethostname(char *,int);
  740. typedef    int (WSAAPI * LPFN_GETHOSTNAME)(char *,int);
  741. struct    servent *WSAAPI getservbyport(int,const char *);
  742. typedef    struct servent * (WSAAPI * LPFN_GETSERVBYPORT)(int,const char *);
  743. struct    servent * WSAAPI getservbyname(const char *,const char *);
  744. typedef    struct servent * (WSAAPI * LPFN_GETSERVBYNAME)(const char *,const char *);
  745. struct    protoent * WSAAPI getprotobynumber(int);
  746. typedef    struct protoent *(WSAAPI * LPFN_GETPROTOBYNUMBER)(int);
  747. struct    protoent * WSAAPI getprotobyname(const char *);
  748. typedef    struct protoent * (WSAAPI * LPFN_GETPROTOBYNAME)(const char *);
  749. int    WSAAPI WSAStartup(WORD,LPWSADATA);
  750. typedef    int (WSAAPI * LPFN_WSASTARTUP)(WORD,LPWSADATA);
  751. int    WSAAPI WSACleanup(void);
  752. typedef    int (WSAAPI * LPFN_WSACLEANUP)(void);
  753. void    WSAAPI WSASetLastError(int);
  754. typedef    void (WSAAPI * LPFN_WSASETLASTERROR)(int);
  755. int    WSAAPI WSAGetLastError(void);
  756. typedef    int (WSAAPI * LPFN_WSAGETLASTERROR)(void);
  757. BOOL    WSAAPI WSAIsBlocking(void);
  758. typedef    BOOL (WSAAPI * LPFN_WSAISBLOCKING)(void);
  759. int    WSAAPI WSAUnhookBlockingHook(void);
  760. typedef    int (WSAAPI * LPFN_WSAUNHOOKBLOCKINGHOOK)(void);
  761. FARPROC    WSAAPI WSASetBlockingHook(FARPROC);
  762. typedef    FARPROC (WSAAPI * LPFN_WSASETBLOCKINGHOOK)(FARPROC);
  763. int    WSAAPI WSACancelBlockingCall(void);
  764. typedef    int (WSAAPI * LPFN_WSACANCELBLOCKINGCALL)(void); 
  765. HANDLE    WSAAPI WSAAsyncGetServByName(HWND,u_int,const char *,const char *,char *,int);
  766. typedef    HANDLE (WSAAPI * LPFN_WSAASYNCGETSERVBYNAME)(HWND,u_int,const char *,const char *,char *,int);
  767. HANDLE    WSAAPI WSAAsyncGetServByPort(HWND,u_int,int,const char *,char *,int);
  768. typedef    HANDLE (WSAAPI * LPFN_WSAASYNCGETSERVBYPORT)(HWND,u_int,int,const char *,char *,int);
  769. HANDLE    WSAAPI WSAAsyncGetProtoByName(HWND,u_int,const char *,char *,int);
  770. typedef    HANDLE (WSAAPI *LPFN_WSAASYNCGETPROTOBYNAME)(HWND,u_int,const char *,char *,int);
  771. HANDLE    WSAAPI WSAAsyncGetProtoByNumber(HWND,u_int,int,char *,int);
  772. typedef    HANDLE (WSAAPI * LPFN_WSAASYNCGETPROTOBYNUMBER)(HWND,u_int,int,char *,int);
  773. HANDLE    WSAAPI WSAAsyncGetHostByName(HWND,u_int,const char *,char *,int);
  774. typedef    HANDLE (WSAAPI * LPFN_WSAASYNCGETHOSTBYNAME)(HWND,u_int,const char *,char *,int);
  775. HANDLE    WSAAPI WSAAsyncGetHostByAddr(HWND,u_int,const char *,int,int,char *,int);
  776. typedef    HANDLE (WSAAPI * LPFN_WSAASYNCGETHOSTBYADDR)(HWND,u_int,const char *,int,int,char *,int);
  777. int    WSAAPI WSACancelAsyncRequest(HANDLE);
  778. typedef    int (WSAAPI * LPFN_WSACANCELASYNCREQUEST)(HANDLE);
  779. int    WSAAPI WSAAsyncSelect(SOCKET,HWND,u_int,long);
  780. typedef    int (WSAAPI * LPFN_WSAASYNCSELECT)(SOCKET,HWND,u_int,long);
  781. typedef    int (CALLBACK * LPCONDITIONPROC)(LPWSABUF,LPWSABUF,LPQOS,LPQOS,LPWSABUF,LPWSABUF,GROUP *,DWORD);
  782. typedef    void (CALLBACK * LPWSAOVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPWSAOVERLAPPED,DWORD);
  783. SOCKET    WSAAPI WSAAccept(SOCKET,struct sockaddr *,LPINT,LPCONDITIONPROC,DWORD);
  784. typedef    SOCKET (WSAAPI * LPFN_WSAACCEPT)(SOCKET,struct sockaddr *,LPINT,LPCONDITIONPROC,DWORD);
  785. BOOL    WSAAPI WSACloseEvent(WSAEVENT);
  786. typedef    BOOL (WSAAPI * LPFN_WSACLOSEEVENT)(WSAEVENT);
  787. int    WSAAPI WSAConnect(SOCKET,const struct sockaddr *,int,LPWSABUF,LPWSABUF,LPQOS,LPQOS);
  788. typedef    int (WSAAPI * LPFN_WSACONNECT)(SOCKET,const struct sockaddr *,int,LPWSABUF,LPWSABUF,LPQOS,LPQOS);
  789. WSAEVENT    WSAAPI WSACreateEvent(void );
  790. typedef    WSAEVENT (WSAAPI * LPFN_WSACREATEEVENT)(void );
  791. int    WSAAPI WSADuplicateSocketA(SOCKET ,DWORD ,LPWSAPROTOCOL_INFOA );
  792. int    WSAAPI WSADuplicateSocketW(SOCKET,DWORD ,LPWSAPROTOCOL_INFOW);
  793. typedef    int (WSAAPI * LPFN_WSADUPLICATESOCKETA)(SOCKET,DWORD,LPWSAPROTOCOL_INFOA);
  794. typedef    int (WSAAPI * LPFN_WSADUPLICATESOCKETW)(SOCKET,DWORD,LPWSAPROTOCOL_INFOW);
  795. int    WSAAPI WSAEnumNetworkEvents(SOCKET,WSAEVENT,LPWSANETWORKEVENTS);
  796. typedef    int (WSAAPI * LPFN_WSAENUMNETWORKEVENTS)(SOCKET,WSAEVENT,LPWSANETWORKEVENTS);
  797. int    WSAAPI WSAEnumProtocolsA(LPINT,LPWSAPROTOCOL_INFOA,LPDWORD);
  798. int    WSAAPI WSAEnumProtocolsW(LPINT,LPWSAPROTOCOL_INFOW,LPDWORD);
  799. typedef    int (WSAAPI * LPFN_WSAENUMPROTOCOLSA)(LPINT,LPWSAPROTOCOL_INFOA,LPDWORD);
  800. typedef    int (WSAAPI * LPFN_WSAENUMPROTOCOLSW)(LPINT,LPWSAPROTOCOL_INFOW,LPDWORD);
  801. int    WSAAPI WSAEventSelect(SOCKET,WSAEVENT,long);
  802. typedef    int (WSAAPI * LPFN_WSAEVENTSELECT)(SOCKET,WSAEVENT,long);
  803. BOOL    WSAAPI WSAGetOverlappedResult(SOCKET,LPWSAOVERLAPPED,LPDWORD,BOOL,LPDWORD);
  804. typedef    BOOL (WSAAPI * LPFN_WSAGETOVERLAPPEDRESULT)(SOCKET,LPWSAOVERLAPPED,LPDWORD,BOOL,LPDWORD);
  805. BOOL    WSAAPI WSAGetQOSByName(SOCKET,LPWSABUF,LPQOS);
  806. typedef    BOOL (WSAAPI * LPFN_WSAGETQOSBYNAME)(SOCKET,LPWSABUF,LPQOS);
  807. int    WSAAPI WSAHtonl(SOCKET,u_long,u_long *);
  808. typedef    int (WSAAPI * LPFN_WSAHTONL)(SOCKET,u_long,u_long *);
  809. int    WSAAPI WSAHtons(SOCKET,u_short,u_short *);
  810. typedef    int (WSAAPI * LPFN_WSAHTONS)(SOCKET,u_short,u_short *);
  811. int    WSAAPI WSAIoctl(SOCKET,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
  812. typedef    int (WSAAPI * LPFN_WSAIOCTL)(SOCKET,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
  813. SOCKET    WSAAPI WSAJoinLeaf(SOCKET,const struct sockaddr *,int,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD);
  814. typedef    SOCKET (WSAAPI * LPFN_WSAJOINLEAF)(SOCKET,const struct sockaddr *,int,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD);
  815. int    WSAAPI WSANtohl(SOCKET,u_long,u_long * );
  816. typedef    int (WSAAPI * LPFN_WSANTOHL)(SOCKET,u_long ,u_long * );
  817. int    WSAAPI WSANtohs(SOCKET,u_short,u_short * );
  818. typedef    int (WSAAPI * LPFN_WSANTOHS)(SOCKET,u_short,u_short *);
  819. int    WSAAPI WSARecv(SOCKET,LPWSABUF,DWORD ,LPDWORD ,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
  820. typedef    int (WSAAPI * LPFN_WSARECV)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD ,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
  821. int    WSAAPI WSARecvDisconnect(SOCKET ,LPWSABUF);
  822. typedef    int (WSAAPI * LPFN_WSARECVDISCONNECT)(SOCKET,LPWSABUF);
  823. int    WSAAPI WSARecvFrom(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,struct sockaddr *,LPINT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
  824. typedef    int (WSAAPI * LPFN_WSARECVFROM)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,struct sockaddr *,LPINT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
  825. BOOL    WSAAPI WSAResetEvent(WSAEVENT);
  826. typedef    BOOL (WSAAPI * LPFN_WSARESETEVENT)(WSAEVENT );
  827. int    WSAAPI WSASend(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE );
  828. typedef    int (WSAAPI * LPFN_WSASEND)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
  829. int    WSAAPI WSASendDisconnect(SOCKET ,LPWSABUF );
  830. typedef    int (WSAAPI * LPFN_WSASENDDISCONNECT)(SOCKET,LPWSABUF);
  831. int    WSAAPI WSASendTo(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,const struct sockaddr *,int,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
  832. typedef    int (WSAAPI * LPFN_WSASENDTO)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,const struct sockaddr *,int,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
  833. BOOL    WSAAPI WSASetEvent(WSAEVENT);
  834. typedef    BOOL (WSAAPI * LPFN_WSASETEVENT)(WSAEVENT);
  835. SOCKET    WSAAPI WSASocketA(int,int,int,LPWSAPROTOCOL_INFOA,GROUP,DWORD);
  836. SOCKET    WSAAPI WSASocketW(int,int,int,LPWSAPROTOCOL_INFOW,GROUP,DWORD);
  837. typedef    SOCKET (WSAAPI * LPFN_WSASOCKETA)(int,int,int,LPWSAPROTOCOL_INFOA,GROUP,DWORD);
  838. typedef    SOCKET (WSAAPI * LPFN_WSASOCKETW)(int,int,int,LPWSAPROTOCOL_INFOW,GROUP,DWORD);
  839. DWORD    WSAAPI WSAWaitForMultipleEvents(DWORD,const WSAEVENT *,BOOL,DWORD,BOOL);
  840. typedef    DWORD (WSAAPI * LPFN_WSAWAITFORMULTIPLEEVENTS)(DWORD,const WSAEVENT *,BOOL,DWORD,BOOL);
  841. INT    WSAAPI WSAAddressToStringA(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOA,LPSTR,LPDWORD);
  842. INT    WSAAPI WSAAddressToStringW(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD);
  843. typedef    INT (WSAAPI * LPFN_WSAADDRESSTOSTRINGA)(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOA,LPSTR,LPDWORD);
  844. typedef    INT (WSAAPI * LPFN_WSAADDRESSTOSTRINGW)(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD);
  845. INT    WSAAPI WSAStringToAddressA(LPSTR,INT,LPWSAPROTOCOL_INFOA,LPSOCKADDR,LPINT);
  846. INT    WSAAPI WSAStringToAddressW(LPWSTR,INT,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPINT);
  847. typedef    INT (WSAAPI *LPFN_WSASTRINGTOADDRESSA)(LPSTR,INT,LPWSAPROTOCOL_INFOA,LPSOCKADDR,LPINT);
  848. typedef    INT (WSAAPI * LPFN_WSASTRINGTOADDRESSW)(LPWSTR,INT,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPINT);
  849. INT    WSAAPI WSALookupServiceBeginA(LPWSAQUERYSETA,DWORD,LPHANDLE);
  850. INT    WSAAPI WSALookupServiceBeginW(LPWSAQUERYSETW,DWORD,LPHANDLE);
  851. typedef    INT (WSAAPI * LPFN_WSALOOKUPSERVICEBEGINA)(LPWSAQUERYSETA,DWORD,LPHANDLE);
  852. typedef    INT (WSAAPI * LPFN_WSALOOKUPSERVICEBEGINW)(LPWSAQUERYSETW,DWORD,LPHANDLE);
  853. INT    WSAAPI WSALookupServiceNextA(HANDLE,DWORD,LPDWORD,LPWSAQUERYSETA);
  854. INT    WSAAPI WSALookupServiceNextW(HANDLE,DWORD,LPDWORD,LPWSAQUERYSETW);
  855. typedef    INT (WSAAPI * LPFN_WSALOOKUPSERVICENEXTA)(HANDLE,DWORD,LPDWORD,LPWSAQUERYSETA);
  856. typedef    INT (WSAAPI *LPFN_WSALOOKUPSERVICENEXTW)(HANDLE,DWORD,LPDWORD,LPWSAQUERYSETW);
  857. INT    WSAAPI WSALookupServiceEnd(HANDLE);
  858. typedef    INT (WSAAPI * LPFN_WSALOOKUPSERVICEEND)(HANDLE);
  859. INT    WSAAPI WSAInstallServiceClassA(LPWSASERVICECLASSINFOA);
  860. INT    WSAAPI WSAInstallServiceClassW(LPWSASERVICECLASSINFOW);
  861. typedef    INT (WSAAPI * LPFN_WSAINSTALLSERVICECLASSA)(LPWSASERVICECLASSINFOA);
  862. typedef    INT (WSAAPI * LPFN_WSAINSTALLSERVICECLASSW)(LPWSASERVICECLASSINFOW);
  863. INT    WSAAPI WSARemoveServiceClass(LPGUID);
  864. typedef    INT (WSAAPI * LPFN_WSAREMOVESERVICECLASS)(LPGUID);
  865. INT    WSAAPI WSAGetServiceClassInfoA(LPGUID,LPGUID,LPDWORD,LPWSASERVICECLASSINFOA);
  866. INT    WSAAPI WSAGetServiceClassInfoW(LPGUID,LPGUID,LPDWORD,LPWSASERVICECLASSINFOW);
  867. typedef    INT (WSAAPI * LPFN_WSAGETSERVICECLASSINFOA)(LPGUID,LPGUID,LPDWORD,LPWSASERVICECLASSINFOA);
  868. typedef    INT (WSAAPI * LPFN_WSAGETSERVICECLASSINFOW)(LPGUID,LPGUID,LPDWORD,LPWSASERVICECLASSINFOW);
  869. INT    WSAAPI WSAEnumNameSpaceProvidersA(LPDWORD,LPWSANAMESPACE_INFOA );
  870. INT    WSAAPI WSAEnumNameSpaceProvidersW(LPDWORD,LPWSANAMESPACE_INFOW);
  871. typedef    INT (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSA)(LPDWORD,LPWSANAMESPACE_INFOA);
  872. typedef    INT (WSAAPI * LPFN_WSAENUMNAMESPACEPROVIDERSW)(LPDWORD,LPWSANAMESPACE_INFOW);
  873. INT    WSAAPI WSAGetServiceClassNameByClassIdA(LPGUID,LPSTR,LPDWORD);
  874. INT    WSAAPI WSAGetServiceClassNameByClassIdW(LPGUID,LPWSTR,LPDWORD);
  875. typedef    INT (WSAAPI * LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA)(LPGUID,LPSTR,LPDWORD);
  876. typedef    INT (WSAAPI * LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW)(LPGUID,LPWSTR,LPDWORD);
  877. INT    WSAAPI WSASetServiceA(LPWSAQUERYSETA,WSAESETSERVICEOP,DWORD);
  878. INT    WSAAPI WSASetServiceW(LPWSAQUERYSETW,WSAESETSERVICEOP,DWORD);
  879. typedef    INT (WSAAPI * LPFN_WSASETSERVICEA)(LPWSAQUERYSETA,WSAESETSERVICEOP,DWORD);
  880. typedef    INT (WSAAPI * LPFN_WSASETSERVICEW)(LPWSAQUERYSETW,WSAESETSERVICEOP,DWORD);
  881. #ifdef    UNICODE
  882. #define    WSAEnumProtocols WSAEnumProtocolsW
  883. #define    LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSW
  884. #define    WSASocket WSASocketW
  885. #define    WSAInstallServiceClass WSAInstallServiceClassW
  886. #define    LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTW
  887. #define    WSALookupServiceNext WSALookupServiceNextW
  888. #define    LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINW
  889. #define    LPFN_WSASETSERVICE LPFN_WSASETSERVICEW
  890. #define    LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGW
  891. #define    WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW
  892. #define    LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
  893. #define    WSALookupServiceBegin WSALookupServiceBeginW
  894. #define    LPFN_WSASOCKET LPFN_WSASOCKETW
  895. #define    WSASetService WSASetServiceW
  896. #define    WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
  897. #define    WSAGetServiceClassInfo WSAGetServiceClassInfoW
  898. #define    LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOW
  899. #define    LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSW
  900. #define    WSADuplicateSocket WSADuplicateSocketW
  901. #define    WSAAddressToString WSAAddressToStringW
  902. #define    LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW
  903. #define    WSAStringToAddress WSAStringToAddressW
  904. #define    LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSW
  905. #define    WSASocket WSASocketA
  906. #define    LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW
  907. #else
  908. #define    LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETA
  909. #define    WSAEnumProtocols WSAEnumProtocolsA
  910. #define    LPFN_WSASOCKET LPFN_WSASOCKETA
  911. #define    LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGA
  912. #define    WSAAddressToString WSAAddressToStringA
  913. #define    LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSA
  914. #define    LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSA
  915. #define    LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA
  916. #define    WSALookupServiceBegin WSALookupServiceBeginA
  917. #define    LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTA
  918. #define    WSALookupServiceNext WSALookupServiceNextA
  919. #define    LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINA
  920. #define    WSAStringToAddress WSAStringToAddressA
  921. #define    WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA
  922. #define    LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSA
  923. #define    WSASetService WSASetServiceA
  924. #define    WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA
  925. #define    WSAGetServiceClassInfo WSAGetServiceClassInfoA
  926. #define    WSAInstallServiceClass WSAInstallServiceClassA
  927. #define    LPFN_WSASETSERVICE LPFN_WSASETSERVICEA
  928. #define    LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOA
  929. #define    LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSA
  930. #define    WSADuplicateSocket WSADuplicateSocketA
  931. #endif    
  932. typedef    struct sockaddr_in SOCKADDR_IN;
  933. typedef    struct sockaddr_in *PSOCKADDR_IN;
  934. typedef    struct sockaddr_in *LPSOCKADDR_IN;
  935. typedef    struct linger LINGER;
  936. typedef    struct linger *PLINGER;
  937. typedef    struct linger *LPLINGER;
  938. typedef    struct in_addr IN_ADDR;
  939. typedef    struct in_addr *PIN_ADDR;
  940. typedef    struct in_addr *LPIN_ADDR;
  941. typedef    struct fd_set FD_SET;
  942. typedef    struct fd_set *PFD_SET;
  943. typedef    struct fd_set *LPFD_SET;
  944. typedef    struct hostent HOSTENT;
  945. typedef    struct hostent *PHOSTENT;
  946. typedef    struct hostent *LPHOSTENT;
  947. typedef    struct servent SERVENT;
  948. typedef    struct servent *PSERVENT;
  949. typedef    struct servent *LPSERVENT;
  950. typedef    struct protoent PROTOENT;
  951. typedef    struct protoent *PPROTOENT;
  952. typedef    struct protoent *LPPROTOENT;
  953. typedef    struct timeval TIMEVAL;
  954. typedef    struct timeval *PTIMEVAL;
  955. typedef    struct timeval *LPTIMEVAL;
  956. #define    WSAMAKEASYNCREPLY(b,e) MAKELONG(b,e)
  957. #define    WSAMAKESELECTREPLY(e,error) MAKELONG(e,error)
  958. #define    WSAGETASYNCBUFLEN(l) LOWORD(l)
  959. #define    WSAGETASYNCERROR(l) HIWORD(l)
  960. #define    WSAGETSELECTEVENT(l) LOWORD(l)
  961. #define    WSAGETSELECTERROR(l) HIWORD(l)
  962. #pragma    pack(pop)
  963. #endif    
  964.