ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

winsock2.h
Go to the documentation of this file.
00001 #pragma once
00002 
00003 #if !(defined _WINSOCK2API_ || defined _WINSOCKAPI_)
00004 #define _WINSOCK2API_
00005 #define _WINSOCKAPI_ /* to prevent later inclusion of winsock.h */
00006 
00007 #define _GNU_H_WINDOWS32_SOCKETS
00008 
00009 #if (!defined(_WIN64) && !defined(WIN32))
00010 #include <pshpack4.h>
00011 #define _NEED_POPPACK
00012 #endif
00013 
00014 #ifndef INCL_WINSOCK_API_PROTOTYPES
00015 #define INCL_WINSOCK_API_PROTOTYPES 1
00016 #endif
00017 
00018 #ifndef INCL_WINSOCK_API_TYPEDEFS
00019 #define INCL_WINSOCK_API_TYPEDEFS 0
00020 #endif
00021 
00022 #ifndef _INC_WINDOWS
00023 #include <windows.h>
00024 #endif
00025 
00026 #if !defined(MAKEWORD)
00027 #define MAKEWORD(low,high) ((WORD)(((BYTE)(low)) | ((WORD)((BYTE)(high))) << 8))
00028 #endif
00029 
00030 #ifndef WINSOCK_VERSION
00031 #define WINSOCK_VERSION MAKEWORD(2,2)
00032 #endif
00033 
00034 #ifndef WINSOCK_API_LINKAGE
00035 #ifdef DECLSPEC_IMPORT
00036 #define WINSOCK_API_LINKAGE DECLSPEC_IMPORT
00037 #else
00038 #define WINSOCK_API_LINKAGE
00039 #endif
00040 #endif
00041 
00042 #ifndef _M_AMD64
00043 #if !defined(__ROS_LONG64__)
00044 #ifdef __WINESRC__
00045 #define __ROS_LONG64__
00046 #endif
00047 #endif
00048 #endif
00049 
00050 #ifdef __cplusplus
00051 extern "C" {
00052 #endif
00053 
00054 /* Names common to Winsock1.1 and Winsock2 */
00055 #if !defined ( _BSDTYPES_DEFINED )
00056 /* also defined in gmon.h and in cygwin's sys/types */
00057 typedef unsigned char u_char;
00058 typedef unsigned short u_short;
00059 typedef unsigned int u_int;
00060 #ifndef __ROS_LONG64__
00061 typedef unsigned long u_long;
00062 #else
00063 typedef unsigned int u_long;
00064 #endif
00065 #define _BSDTYPES_DEFINED
00066 #endif /* ! def _BSDTYPES_DEFINED  */
00067 
00068 #if(_WIN32_WINNT >= 0x0501)
00069 typedef unsigned __int64 u_int64;
00070 #endif /* (_WIN32_WINNT >= 0x0501) */
00071 
00072 #include <ws2def.h>
00073 
00074 typedef UINT_PTR SOCKET;
00075 
00076 #ifndef FD_SETSIZE
00077 #define FD_SETSIZE 64
00078 #endif
00079 
00080 #ifndef _SYS_TYPES_FD_SET
00081 
00082 /* fd_set may be defined by the newlib <sys/types.h>
00083  * if __USE_W32_SOCKETS not defined.
00084  */
00085 #ifdef fd_set
00086 #undef fd_set
00087 #endif
00088 
00089 typedef struct fd_set {
00090   u_int fd_count;
00091   SOCKET fd_array[FD_SETSIZE];
00092 } fd_set;
00093 
00094 extern int PASCAL FAR __WSAFDIsSet(SOCKET,fd_set FAR*);
00095 
00096 #ifndef FD_CLR
00097 #define FD_CLR(fd, set) do { \
00098   u_int __i; \
00099   for (__i = 0; __i < ((fd_set FAR*)(set))->fd_count ; __i++) { \
00100     if (((fd_set FAR*)(set))->fd_array[__i] == fd) { \
00101       while (__i < ((fd_set FAR*)(set))->fd_count-1) { \
00102         ((fd_set FAR*)(set))->fd_array[__i] = \
00103         ((fd_set FAR*)(set))->fd_array[__i+1]; \
00104         __i++; \
00105       } \
00106     ((fd_set FAR*)(set))->fd_count--; \
00107     break; \
00108     } \
00109   } \
00110 } while(0)
00111 #endif
00112 
00113 #ifndef FD_SET
00114 /* this differs from the define in winsock.h and in cygwin sys/types.h */
00115 #define FD_SET(fd, set) do { \
00116   u_int __i; \
00117   for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count; __i++) { \
00118     if (((fd_set FAR *)(set))->fd_array[__i] == (fd)) { \
00119       break; \
00120     } \
00121   } \
00122   if (__i == ((fd_set FAR *)(set))->fd_count) { \
00123     if (((fd_set FAR *)(set))->fd_count < FD_SETSIZE) { \
00124       ((fd_set FAR *)(set))->fd_array[__i] = (fd); \
00125       ((fd_set FAR *)(set))->fd_count++; \
00126     } \
00127   } \
00128 } while(0)
00129 #endif
00130 
00131 #ifndef FD_ZERO
00132 #define FD_ZERO(set) (((fd_set FAR*)(set))->fd_count=0)
00133 #endif
00134 
00135 #ifndef FD_ISSET
00136 #define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set FAR*)(set))
00137 #endif
00138 
00139 #elif !defined (USE_SYS_TYPES_FD_SET)
00140 #warning "fd_set and associated macros have been defined in sys/types.  \
00141     This may cause runtime problems with W32 sockets"
00142 #endif /* ndef _SYS_TYPES_FD_SET */
00143 
00144 #if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__))
00145 
00146 #ifndef _TIMEVAL_DEFINED
00147 
00148 /* also in sys/time.h */
00149 #define _TIMEVAL_DEFINED
00150 #define _STRUCT_TIMEVAL
00151 struct timeval {
00152   LONG tv_sec;
00153   LONG tv_usec;
00154 };
00155 
00156 #define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
00157 
00158 #define timercmp(tvp, uvp, cmp) \
00159   (((tvp)->tv_sec != (uvp)->tv_sec) ? \
00160   ((tvp)->tv_sec cmp (uvp)->tv_sec) : \
00161   ((tvp)->tv_usec cmp (uvp)->tv_usec))
00162 
00163 #define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
00164 
00165 #endif /* _TIMEVAL_DEFINED */
00166 
00167 #define h_addr h_addr_list[0]
00168 
00169 struct hostent {
00170   char *h_name;
00171   char **h_aliases;
00172   short h_addrtype;
00173   short h_length;
00174   char **h_addr_list;
00175 };
00176 
00177 struct linger {
00178   u_short l_onoff;
00179   u_short l_linger;
00180 };
00181 
00182 #define FIONBIO _IOW('f', 126, u_long)
00183 
00184 struct netent {
00185   char * n_name;
00186   char **n_aliases;
00187   short n_addrtype;
00188   u_long n_net;
00189 };
00190 
00191 struct servent {
00192   char FAR *s_name;
00193   char FAR **s_aliases;
00194 #ifdef _WIN64
00195   char FAR *s_proto;
00196   short s_port;
00197 #else
00198   short s_port;
00199   char FAR *s_proto;
00200 #endif
00201 };
00202 
00203 struct protoent {
00204   char *p_name;
00205   char **p_aliases;
00206   short p_proto;
00207 };
00208 
00209 #define SOMAXCONN 0x7fffffff
00210 
00211 #define MSG_OOB 1
00212 #define MSG_PEEK 2
00213 #define MSG_DONTROUTE 4
00214 #if(_WIN32_WINNT >= 0x0502)
00215 #define MSG_WAITALL 8
00216 #endif
00217 
00218 #define h_errno WSAGetLastError()
00219 #define HOST_NOT_FOUND WSAHOST_NOT_FOUND
00220 #define TRY_AGAIN WSATRY_AGAIN
00221 #define NO_RECOVERY WSANO_RECOVERY
00222 #define NO_DATA WSANO_DATA
00223 #define NO_ADDRESS WSANO_ADDRESS
00224 
00225 #endif /* !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) */
00226 
00227 #define FIONREAD _IOR('f', 127, u_long)
00228 #define FIOASYNC _IOW('f', 125, u_long)
00229 #define SIOCSHIWAT _IOW('s',  0, u_long)
00230 #define SIOCGHIWAT _IOR('s',  1, u_long)
00231 #define SIOCSLOWAT _IOW('s',  2, u_long)
00232 #define SIOCGLOWAT _IOR('s',  3, u_long)
00233 #define SIOCATMARK _IOR('s',  7, u_long)
00234 
00235 #define IMPLINK_IP 155
00236 #define IMPLINK_LOWEXPER 156
00237 #define IMPLINK_HIGHEXPER 158
00238 
00239 #define ADDR_ANY INADDR_ANY
00240 
00241 #define WSADESCRIPTION_LEN 256
00242 #define WSASYS_STATUS_LEN 128
00243 
00244 #define INVALID_SOCKET (SOCKET)(~0)
00245 
00246 #define SOCKET_ERROR (-1)
00247 
00248 #define FROM_PROTOCOL_INFO (-1)
00249 
00250 #define SO_PROTOCOL_INFOA 0x2004
00251 #define SO_PROTOCOL_INFOW 0x2005
00252 #ifdef UNICODE
00253 #define SO_PROTOCOL_INFO SO_PROTOCOL_INFOW
00254 #else
00255 #define SO_PROTOCOL_INFO SO_PROTOCOL_INFOA
00256 #endif
00257 #define PVD_CONFIG 0x3001
00258 
00259 #define PF_UNSPEC AF_UNSPEC
00260 #define PF_UNIX AF_UNIX
00261 #define PF_INET AF_INET
00262 #define PF_IMPLINK AF_IMPLINK
00263 #define PF_PUP AF_PUP
00264 #define PF_CHAOS AF_CHAOS
00265 #define PF_NS AF_NS
00266 #define PF_IPX AF_IPX
00267 #define PF_ISO AF_ISO
00268 #define PF_OSI AF_OSI
00269 #define PF_ECMA AF_ECMA
00270 #define PF_DATAKIT AF_DATAKIT
00271 #define PF_CCITT AF_CCITT
00272 #define PF_SNA AF_SNA
00273 #define PF_DECnet AF_DECnet
00274 #define PF_DLI AF_DLI
00275 #define PF_LAT AF_LAT
00276 #define PF_HYLINK AF_HYLINK
00277 #define PF_APPLETALK AF_APPLETALK
00278 #define PF_VOICEVIEW AF_VOICEVIEW
00279 #define PF_FIREFOX AF_FIREFOX
00280 #define PF_UNKNOWN1 AF_UNKNOWN1
00281 #define PF_BAN AF_BAN
00282 #define PF_ATM AF_ATM
00283 #define PF_INET6 AF_INET6
00284 #if(_WIN32_WINNT >= 0x0600)
00285 #define PF_BTH AF_BTH
00286 #endif
00287 #define PF_MAX AF_MAX
00288 
00289 #define MSG_PARTIAL 0x8000
00290 #define MSG_INTERRUPT 0x10
00291 #define MSG_MAXIOVLEN 16
00292 
00293 #define MAXGETHOSTSTRUCT 1024
00294 
00295 #define FD_READ_BIT 0
00296 #define FD_READ (1 << FD_READ_BIT)
00297 #define FD_WRITE_BIT 1
00298 #define FD_WRITE (1 << FD_WRITE_BIT)
00299 #define FD_OOB_BIT 2
00300 #define FD_OOB (1 << FD_OOB_BIT)
00301 #define FD_ACCEPT_BIT 3
00302 #define FD_ACCEPT (1 << FD_ACCEPT_BIT)
00303 #define FD_CONNECT_BIT 4
00304 #define FD_CONNECT (1 << FD_CONNECT_BIT)
00305 #define FD_CLOSE_BIT 5
00306 #define FD_CLOSE (1 << FD_CLOSE_BIT)
00307 #define FD_QOS_BIT 6
00308 #define FD_QOS (1 << FD_QOS_BIT)
00309 #define FD_GROUP_QOS_BIT 7
00310 #define FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT)
00311 #define FD_ROUTING_INTERFACE_CHANGE_BIT 8
00312 #define FD_ROUTING_INTERFACE_CHANGE (1 << FD_ROUTING_INTERFACE_CHANGE_BIT)
00313 #define FD_ADDRESS_LIST_CHANGE_BIT 9
00314 #define FD_ADDRESS_LIST_CHANGE (1 << FD_ADDRESS_LIST_CHANGE_BIT)
00315 #define FD_MAX_EVENTS 10
00316 #define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1)
00317 
00318 #ifndef WSABASEERR
00319 
00320 #define WSABASEERR 10000
00321 #define WSAEINTR (WSABASEERR+4)
00322 #define WSAEBADF (WSABASEERR+9)
00323 #define WSAEACCES (WSABASEERR+13)
00324 #define WSAEFAULT (WSABASEERR+14)
00325 #define WSAEINVAL (WSABASEERR+22)
00326 #define WSAEMFILE (WSABASEERR+24)
00327 #define WSAEWOULDBLOCK (WSABASEERR+35)
00328 #define WSAEINPROGRESS (WSABASEERR+36)
00329 #define WSAEALREADY (WSABASEERR+37)
00330 #define WSAENOTSOCK (WSABASEERR+38)
00331 #define WSAEDESTADDRREQ (WSABASEERR+39)
00332 #define WSAEMSGSIZE (WSABASEERR+40)
00333 #define WSAEPROTOTYPE (WSABASEERR+41)
00334 #define WSAENOPROTOOPT (WSABASEERR+42)
00335 #define WSAEPROTONOSUPPORT (WSABASEERR+43)
00336 #define WSAESOCKTNOSUPPORT (WSABASEERR+44)
00337 #define WSAEOPNOTSUPP (WSABASEERR+45)
00338 #define WSAEPFNOSUPPORT (WSABASEERR+46)
00339 #define WSAEAFNOSUPPORT (WSABASEERR+47)
00340 #define WSAEADDRINUSE (WSABASEERR+48)
00341 #define WSAEADDRNOTAVAIL (WSABASEERR+49)
00342 #define WSAENETDOWN (WSABASEERR+50)
00343 #define WSAENETUNREACH (WSABASEERR+51)
00344 #define WSAENETRESET (WSABASEERR+52)
00345 #define WSAECONNABORTED (WSABASEERR+53)
00346 #define WSAECONNRESET (WSABASEERR+54)
00347 #define WSAENOBUFS (WSABASEERR+55)
00348 #define WSAEISCONN (WSABASEERR+56)
00349 #define WSAENOTCONN (WSABASEERR+57)
00350 #define WSAESHUTDOWN (WSABASEERR+58)
00351 #define WSAETOOMANYREFS (WSABASEERR+59)
00352 #define WSAETIMEDOUT (WSABASEERR+60)
00353 #define WSAECONNREFUSED (WSABASEERR+61)
00354 #define WSAELOOP (WSABASEERR+62)
00355 #define WSAENAMETOOLONG (WSABASEERR+63)
00356 #define WSAEHOSTDOWN (WSABASEERR+64)
00357 #define WSAEHOSTUNREACH (WSABASEERR+65)
00358 #define WSAENOTEMPTY (WSABASEERR+66)
00359 #define WSAEPROCLIM (WSABASEERR+67)
00360 #define WSAEUSERS (WSABASEERR+68)
00361 #define WSAEDQUOT (WSABASEERR+69)
00362 #define WSAESTALE (WSABASEERR+70)
00363 #define WSAEREMOTE (WSABASEERR+71)
00364 #define WSASYSNOTREADY (WSABASEERR+91)
00365 #define WSAVERNOTSUPPORTED (WSABASEERR+92)
00366 #define WSANOTINITIALISED (WSABASEERR+93)
00367 #define WSAEDISCON (WSABASEERR+101)
00368 #define WSAENOMORE (WSABASEERR+102)
00369 #define WSAECANCELLED (WSABASEERR+103)
00370 #define WSAEINVALIDPROCTABLE (WSABASEERR+104)
00371 #define WSAEINVALIDPROVIDER (WSABASEERR+105)
00372 #define WSAEPROVIDERFAILEDINIT (WSABASEERR+106)
00373 #define WSASYSCALLFAILURE (WSABASEERR+107)
00374 #define WSASERVICE_NOT_FOUND (WSABASEERR+108)
00375 #define WSATYPE_NOT_FOUND (WSABASEERR+109)
00376 #define WSA_E_NO_MORE (WSABASEERR+110)
00377 #define WSA_E_CANCELLED (WSABASEERR+111)
00378 #define WSAEREFUSED (WSABASEERR+112)
00379 #define WSAHOST_NOT_FOUND (WSABASEERR+1001)
00380 #define WSATRY_AGAIN (WSABASEERR+1002)
00381 #define WSANO_RECOVERY (WSABASEERR+1003)
00382 #define WSANO_DATA (WSABASEERR+1004)
00383 #define WSA_QOS_RECEIVERS (WSABASEERR + 1005)
00384 #define WSA_QOS_SENDERS (WSABASEERR + 1006)
00385 #define WSA_QOS_NO_SENDERS (WSABASEERR + 1007)
00386 #define WSA_QOS_NO_RECEIVERS (WSABASEERR + 1008)
00387 #define WSA_QOS_REQUEST_CONFIRMED (WSABASEERR + 1009)
00388 #define WSA_QOS_ADMISSION_FAILURE (WSABASEERR + 1010)
00389 #define WSA_QOS_POLICY_FAILURE (WSABASEERR + 1011)
00390 #define WSA_QOS_BAD_STYLE (WSABASEERR + 1012)
00391 #define WSA_QOS_BAD_OBJECT (WSABASEERR + 1013)
00392 #define WSA_QOS_TRAFFIC_CTRL_ERROR (WSABASEERR + 1014)
00393 #define WSA_QOS_GENERIC_ERROR (WSABASEERR + 1015)
00394 #define WSA_QOS_ESERVICETYPE (WSABASEERR + 1016)
00395 #define WSA_QOS_EFLOWSPEC (WSABASEERR + 1017)
00396 #define WSA_QOS_EPROVSPECBUF (WSABASEERR + 1018)
00397 #define WSA_QOS_EFILTERSTYLE (WSABASEERR + 1019)
00398 #define WSA_QOS_EFILTERTYPE (WSABASEERR + 1020)
00399 #define WSA_QOS_EFILTERCOUNT (WSABASEERR + 1021)
00400 #define WSA_QOS_EOBJLENGTH (WSABASEERR + 1022)
00401 #define WSA_QOS_EFLOWCOUNT (WSABASEERR + 1023)
00402 #define WSA_QOS_EUNKOWNPSOBJ (WSABASEERR + 1024)
00403 #define WSA_QOS_EPOLICYOBJ (WSABASEERR + 1025)
00404 #define WSA_QOS_EFLOWDESC (WSABASEERR + 1026)
00405 #define WSA_QOS_EPSFLOWSPEC (WSABASEERR + 1027)
00406 #define WSA_QOS_EPSFILTERSPEC (WSABASEERR + 1028)
00407 #define WSA_QOS_ESDMODEOBJ (WSABASEERR + 1029)
00408 #define WSA_QOS_ESHAPERATEOBJ (WSABASEERR + 1030)
00409 #define WSA_QOS_RESERVED_PETYPE (WSABASEERR + 1031)
00410 
00411 #endif /* !WSABASEERR */
00412 
00413 #define WSANO_ADDRESS WSANO_DATA
00414 
00415 #define CF_ACCEPT 0x0000
00416 #define CF_REJECT 0x0001
00417 #define CF_DEFER 0x0002
00418 #define SD_RECEIVE 0x00
00419 #define SD_SEND 0x01
00420 #define SD_BOTH 0x02
00421 
00422 #define SG_UNCONSTRAINED_GROUP 0x01
00423 #define SG_CONSTRAINED_GROUP 0x02
00424 
00425 #define MAX_PROTOCOL_CHAIN 7
00426 
00427 #define BASE_PROTOCOL      1
00428 #define LAYERED_PROTOCOL   0
00429 
00430 #define WSAPROTOCOL_LEN 255
00431 
00432 #define PFL_MULTIPLE_PROTO_ENTRIES          0x00000001
00433 #define PFL_RECOMMENDED_PROTO_ENTRY         0x00000002
00434 #define PFL_HIDDEN                          0x00000004
00435 #define PFL_MATCHES_PROTOCOL_ZERO           0x00000008
00436 #define PFL_NETWORKDIRECT_PROVIDER          0x00000010
00437 
00438 #define XP1_CONNECTIONLESS                  0x00000001
00439 #define XP1_GUARANTEED_DELIVERY             0x00000002
00440 #define XP1_GUARANTEED_ORDER                0x00000004
00441 #define XP1_MESSAGE_ORIENTED                0x00000008
00442 #define XP1_PSEUDO_STREAM                   0x00000010
00443 #define XP1_GRACEFUL_CLOSE                  0x00000020
00444 #define XP1_EXPEDITED_DATA                  0x00000040
00445 #define XP1_CONNECT_DATA                    0x00000080
00446 #define XP1_DISCONNECT_DATA                 0x00000100
00447 #define XP1_SUPPORT_BROADCAST               0x00000200
00448 #define XP1_SUPPORT_MULTIPOINT              0x00000400
00449 #define XP1_MULTIPOINT_CONTROL_PLANE        0x00000800
00450 #define XP1_MULTIPOINT_DATA_PLANE           0x00001000
00451 #define XP1_QOS_SUPPORTED                   0x00002000
00452 #define XP1_INTERRUPT                       0x00004000
00453 #define XP1_UNI_SEND                        0x00008000
00454 #define XP1_UNI_RECV                        0x00010000
00455 #define XP1_IFS_HANDLES                     0x00020000
00456 #define XP1_PARTIAL_MESSAGE                 0x00040000
00457 #define XP1_SAN_SUPPORT_SDP                 0x00080000
00458 
00459 #define BIGENDIAN                           0x0000
00460 #define LITTLEENDIAN                        0x0001
00461 
00462 #define SECURITY_PROTOCOL_NONE              0x0000
00463 
00464 #define JL_SENDER_ONLY                      0x01
00465 #define JL_RECEIVER_ONLY                    0x02
00466 #define JL_BOTH                             0x04
00467 
00468 #define WSA_FLAG_OVERLAPPED                 0x01
00469 #define WSA_FLAG_MULTIPOINT_C_ROOT          0x02
00470 #define WSA_FLAG_MULTIPOINT_C_LEAF          0x04
00471 #define WSA_FLAG_MULTIPOINT_D_ROOT          0x08
00472 #define WSA_FLAG_MULTIPOINT_D_LEAF          0x10
00473 #define WSA_FLAG_ACCESS_SYSTEM_SECURITY     0x40
00474 
00475 #define TH_NETDEV                           0x00000001
00476 #define TH_TAPI                             0x00000002
00477 
00478 #define SERVICE_MULTIPLE                    0x00000001
00479 
00480 #define RES_UNUSED_1    0x00000001
00481 #define RES_FLUSH_CACHE 0x00000002
00482 #ifndef RES_SERVICE
00483 #define RES_SERVICE     0x00000004
00484 #endif
00485 
00486 #define SERVICE_TYPE_VALUE_IPXPORTA      "IpxSocket"
00487 #define SERVICE_TYPE_VALUE_IPXPORTW     L"IpxSocket"
00488 #define SERVICE_TYPE_VALUE_SAPIDA        "SapId"
00489 #define SERVICE_TYPE_VALUE_SAPIDW       L"SapId"
00490 
00491 #define SERVICE_TYPE_VALUE_TCPPORTA      "TcpPort"
00492 #define SERVICE_TYPE_VALUE_TCPPORTW     L"TcpPort"
00493 
00494 #define SERVICE_TYPE_VALUE_UDPPORTA      "UdpPort"
00495 #define SERVICE_TYPE_VALUE_UDPPORTW     L"UdpPort"
00496 
00497 #define SERVICE_TYPE_VALUE_OBJECTIDA     "ObjectId"
00498 #define SERVICE_TYPE_VALUE_OBJECTIDW    L"ObjectId"
00499 
00500 #ifdef UNICODE
00501 #define SERVICE_TYPE_VALUE_SAPID        SERVICE_TYPE_VALUE_SAPIDW
00502 #define SERVICE_TYPE_VALUE_TCPPORT      SERVICE_TYPE_VALUE_TCPPORTW
00503 #define SERVICE_TYPE_VALUE_UDPPORT      SERVICE_TYPE_VALUE_UDPPORTW
00504 #define SERVICE_TYPE_VALUE_OBJECTID     SERVICE_TYPE_VALUE_OBJECTIDW
00505 #else
00506 #define SERVICE_TYPE_VALUE_SAPID        SERVICE_TYPE_VALUE_SAPIDA
00507 #define SERVICE_TYPE_VALUE_TCPPORT      SERVICE_TYPE_VALUE_TCPPORTA
00508 #define SERVICE_TYPE_VALUE_UDPPORT      SERVICE_TYPE_VALUE_UDPPORTA
00509 #define SERVICE_TYPE_VALUE_OBJECTID     SERVICE_TYPE_VALUE_OBJECTIDA
00510 #endif
00511 
00512 #define LUP_DEEP                0x0001
00513 #define LUP_CONTAINERS          0x0002
00514 #define LUP_NOCONTAINERS        0x0004
00515 #define LUP_NEAREST             0x0008
00516 #define LUP_RETURN_NAME         0x0010
00517 #define LUP_RETURN_TYPE         0x0020
00518 #define LUP_RETURN_VERSION      0x0040
00519 #define LUP_RETURN_COMMENT      0x0080
00520 #define LUP_RETURN_ADDR         0x0100
00521 #define LUP_RETURN_BLOB         0x0200
00522 #define LUP_RETURN_ALIASES      0x0400
00523 #define LUP_RETURN_QUERY_STRING 0x0800
00524 #define LUP_RETURN_ALL          0x0FF0
00525 #define LUP_RES_SERVICE         0x8000
00526 #define LUP_FLUSHCACHE          0x1000
00527 #define LUP_FLUSHPREVIOUS       0x2000
00528 #define LUP_NON_AUTHORITATIVE   0x4000
00529 #define LUP_SECURE              0x8000
00530 #define LUP_RETURN_PREFERRED_NAMES 0x10000
00531 #define LUP_ADDRCONFIG          0x00100000
00532 #define LUP_DUAL_ADDR           0x00200000
00533 #define LUP_FILESERVER          0x00400000
00534 
00535 #define RESULT_IS_ALIAS      0x0001
00536 #if(_WIN32_WINNT >= 0x0501)
00537 #define RESULT_IS_ADDED      0x0010
00538 #define RESULT_IS_CHANGED    0x0020
00539 #define RESULT_IS_DELETED    0x0040
00540 #endif
00541 
00542 #ifndef s_addr
00543 
00544 #define s_addr S_un.S_addr
00545 #define s_host S_un.S_un_b.s_b2
00546 #define s_net S_un.S_un_b.s_b1
00547 #define s_imp S_un.S_un_w.s_w2
00548 #define s_impno S_un.S_un_b.s_b4
00549 #define s_lh S_un.S_un_b.s_b3
00550 
00551 typedef struct in_addr {
00552   union {
00553     struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
00554     struct { u_short s_w1,s_w2; } S_un_w;
00555     u_long S_addr;
00556   } S_un;
00557 } IN_ADDR, *PIN_ADDR;
00558 
00559 #endif /* s_addr */
00560 
00561 typedef struct WSAData {
00562   WORD wVersion;
00563   WORD wHighVersion;
00564 #ifdef _WIN64
00565   unsigned short iMaxSockets;
00566   unsigned short iMaxUdpDg;
00567   char FAR *lpVendorInfo;
00568   char szDescription[WSADESCRIPTION_LEN+1];
00569   char szSystemStatus[WSASYS_STATUS_LEN+1];
00570 #else
00571   char szDescription[WSADESCRIPTION_LEN+1];
00572   char szSystemStatus[WSASYS_STATUS_LEN+1];
00573   unsigned short iMaxSockets;
00574   unsigned short iMaxUdpDg;
00575   char FAR *lpVendorInfo;
00576 #endif
00577 } WSADATA, FAR *LPWSADATA;
00578 
00579 struct sockproto {
00580   u_short sp_family;
00581   u_short sp_protocol;
00582 };
00583 
00584 #ifdef WIN32
00585 
00586 #define WSAAPI FAR PASCAL
00587 #define WSAEVENT HANDLE
00588 #define LPWSAEVENT LPHANDLE
00589 #define WSAOVERLAPPED OVERLAPPED
00590 typedef struct _OVERLAPPED *LPWSAOVERLAPPED;
00591 #define WSA_IO_PENDING (ERROR_IO_PENDING)
00592 #define WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE)
00593 #define WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE)
00594 #define WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER)
00595 #define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY)
00596 #define WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED)
00597 #define WSA_INVALID_EVENT ((WSAEVENT)NULL)
00598 #define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
00599 #define WSA_WAIT_FAILED ((DWORD)-1L)
00600 #define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0)
00601 #define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION)
00602 #define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT)
00603 #define WSA_INFINITE (INFINITE)
00604 
00605 #else /* WIN16 */
00606 
00607 #define WSAAPI FAR PASCAL
00608 typedef DWORD WSAEVENT, FAR * LPWSAEVENT;
00609 
00610 typedef struct _WSAOVERLAPPED {
00611   DWORD Internal;
00612   DWORD InternalHigh;
00613   DWORD Offset;
00614   DWORD OffsetHigh;
00615   WSAEVENT hEvent;
00616 } WSAOVERLAPPED, FAR * LPWSAOVERLAPPED;
00617 
00618 #define WSA_IO_PENDING (WSAEWOULDBLOCK)
00619 #define WSA_IO_INCOMPLETE (WSAEWOULDBLOCK)
00620 #define WSA_INVALID_HANDLE (WSAENOTSOCK)
00621 #define WSA_INVALID_PARAMETER (WSAEINVAL)
00622 #define WSA_NOT_ENOUGH_MEMORY (WSAENOBUFS)
00623 #define WSA_OPERATION_ABORTED (WSAEINTR)
00624 
00625 #define WSA_INVALID_EVENT ((WSAEVENT)NULL)
00626 #define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
00627 #define WSA_WAIT_FAILED ((DWORD)-1L)
00628 #define WSA_WAIT_EVENT_0 ((DWORD)0)
00629 #define WSA_WAIT_TIMEOUT ((DWORD)0x102L)
00630 #define WSA_INFINITE ((DWORD)-1L)
00631 
00632 #endif /* WIN32 */
00633 
00634 #include <qos.h>
00635 
00636 typedef struct _QualityOfService {
00637   FLOWSPEC SendingFlowspec;
00638   FLOWSPEC ReceivingFlowspec;
00639   WSABUF ProviderSpecific;
00640 } QOS, *LPQOS;
00641 
00642 typedef unsigned int GROUP;
00643 
00644 typedef struct _WSANETWORKEVENTS {
00645   LONG lNetworkEvents;
00646   int iErrorCode[FD_MAX_EVENTS];
00647 } WSANETWORKEVENTS, *LPWSANETWORKEVENTS;
00648 
00649 #ifndef GUID_DEFINED
00650 #include <guiddef.h>
00651 #endif
00652 
00653 typedef struct _WSAPROTOCOLCHAIN {
00654   int ChainLen;
00655   DWORD ChainEntries[MAX_PROTOCOL_CHAIN];
00656 } WSAPROTOCOLCHAIN, *LPWSAPROTOCOLCHAIN;
00657 
00658 typedef struct _WSAPROTOCOL_INFOA {
00659   DWORD dwServiceFlags1;
00660   DWORD dwServiceFlags2;
00661   DWORD dwServiceFlags3;
00662   DWORD dwServiceFlags4;
00663   DWORD dwProviderFlags;
00664   GUID ProviderId;
00665   DWORD dwCatalogEntryId;
00666   WSAPROTOCOLCHAIN ProtocolChain;
00667   int iVersion;
00668   int iAddressFamily;
00669   int iMaxSockAddr;
00670   int iMinSockAddr;
00671   int iSocketType;
00672   int iProtocol;
00673   int iProtocolMaxOffset;
00674   int iNetworkByteOrder;
00675   int iSecurityScheme;
00676   DWORD dwMessageSize;
00677   DWORD dwProviderReserved;
00678   CHAR szProtocol[WSAPROTOCOL_LEN+1];
00679 } WSAPROTOCOL_INFOA, *LPWSAPROTOCOL_INFOA;
00680 
00681 typedef struct _WSAPROTOCOL_INFOW {
00682   DWORD dwServiceFlags1;
00683   DWORD dwServiceFlags2;
00684   DWORD dwServiceFlags3;
00685   DWORD dwServiceFlags4;
00686   DWORD dwProviderFlags;
00687   GUID ProviderId;
00688   DWORD dwCatalogEntryId;
00689   WSAPROTOCOLCHAIN ProtocolChain;
00690   int iVersion;
00691   int iAddressFamily;
00692   int iMaxSockAddr;
00693   int iMinSockAddr;
00694   int iSocketType;
00695   int iProtocol;
00696   int iProtocolMaxOffset;
00697   int iNetworkByteOrder;
00698   int iSecurityScheme;
00699   DWORD dwMessageSize;
00700   DWORD dwProviderReserved;
00701   WCHAR szProtocol[WSAPROTOCOL_LEN+1];
00702 } WSAPROTOCOL_INFOW, * LPWSAPROTOCOL_INFOW;
00703 
00704 #ifdef UNICODE
00705 typedef WSAPROTOCOL_INFOW WSAPROTOCOL_INFO;
00706 typedef LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO;
00707 #else
00708 typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO;
00709 typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO;
00710 #endif
00711 
00712 typedef int
00713 (CALLBACK *LPCONDITIONPROC)(
00714   IN LPWSABUF lpCallerId,
00715   IN LPWSABUF lpCallerData,
00716   IN OUT LPQOS lpSQOS,
00717   IN OUT LPQOS lpGQOS,
00718   IN LPWSABUF lpCalleeId,
00719   IN LPWSABUF lpCalleeData,
00720   OUT GROUP FAR *g,
00721   IN DWORD_PTR dwCallbackData);
00722 
00723 typedef void
00724 (CALLBACK *LPWSAOVERLAPPED_COMPLETION_ROUTINE)(
00725   IN DWORD dwError,
00726   IN DWORD cbTransferred,
00727   IN LPWSAOVERLAPPED lpOverlapped,
00728   IN DWORD dwFlags);
00729 
00730 #if(_WIN32_WINNT >= 0x0501)
00731 
00732 #define SIO_NSP_NOTIFY_CHANGE _WSAIOW(IOC_WS2,25)
00733 
00734 typedef enum _WSACOMPLETIONTYPE {
00735   NSP_NOTIFY_IMMEDIATELY = 0,
00736   NSP_NOTIFY_HWND,
00737   NSP_NOTIFY_EVENT,
00738   NSP_NOTIFY_PORT,
00739   NSP_NOTIFY_APC
00740 } WSACOMPLETIONTYPE, * PWSACOMPLETIONTYPE, *LPWSACOMPLETIONTYPE;
00741 
00742 typedef struct _WSACOMPLETION {
00743   WSACOMPLETIONTYPE Type;
00744   union {
00745     struct {
00746       HWND hWnd;
00747       UINT uMsg;
00748       WPARAM context;
00749     } WindowMessage;
00750     struct {
00751       LPWSAOVERLAPPED lpOverlapped;
00752     } Event;
00753     struct {
00754       LPWSAOVERLAPPED lpOverlapped;
00755       LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc;
00756     } Apc;
00757     struct {
00758       LPWSAOVERLAPPED lpOverlapped;
00759       HANDLE hPort;
00760       ULONG_PTR Key;
00761     } Port;
00762   } Parameters;
00763 } WSACOMPLETION, *PWSACOMPLETION, *LPWSACOMPLETION;
00764 
00765 #endif /* (_WIN32_WINNT >= 0x0501) */
00766 
00767 #ifndef __BLOB_T_DEFINED /* also in wtypes.h and nspapi.h */
00768 #define __BLOB_T_DEFINED
00769 /* wine is using a diff define */
00770 #ifndef _tagBLOB_DEFINED
00771 #define _tagBLOB_DEFINED
00772 #define _BLOB_DEFINED
00773 #define _LPBLOB_DEFINED
00774 
00775 typedef struct _BLOB {
00776   ULONG cbSize;
00777 #ifdef MIDL_PASS
00778   [size_is(cbSize)] BYTE *pBlobData;
00779 #else
00780   _Field_size_bytes_(cbSize) BYTE *pBlobData ;
00781 #endif
00782 } BLOB,*PBLOB,*LPBLOB;
00783 
00784 #endif /* _tagBLOB_DEFINED */
00785 
00786 #endif /* __BLOB_T_DEFINED */
00787 
00788 typedef struct _AFPROTOCOLS {
00789   INT iAddressFamily;
00790   INT iProtocol;
00791 } AFPROTOCOLS, *PAFPROTOCOLS, *LPAFPROTOCOLS;
00792 
00793 typedef enum _WSAEcomparator {
00794   COMP_EQUAL = 0,
00795   COMP_NOTLESS
00796 } WSAECOMPARATOR, *PWSAECOMPARATOR, *LPWSAECOMPARATOR;
00797 
00798 typedef struct _WSAVersion {
00799   DWORD dwVersion;
00800   WSAECOMPARATOR ecHow;
00801 } WSAVERSION, *PWSAVERSION, *LPWSAVERSION;
00802 
00803 typedef struct _WSAQuerySetA {
00804   DWORD dwSize;
00805   LPSTR lpszServiceInstanceName;
00806   LPGUID lpServiceClassId;
00807   LPWSAVERSION lpVersion;
00808   LPSTR lpszComment;
00809   DWORD dwNameSpace;
00810   LPGUID lpNSProviderId;
00811   LPSTR lpszContext;
00812   DWORD dwNumberOfProtocols;
00813   _Field_size_(dwNumberOfProtocols) LPAFPROTOCOLS lpafpProtocols;
00814   LPSTR lpszQueryString;
00815   DWORD dwNumberOfCsAddrs;
00816   _Field_size_(dwNumberOfCsAddrs) LPCSADDR_INFO lpcsaBuffer;
00817   DWORD dwOutputFlags;
00818   LPBLOB lpBlob;
00819 } WSAQUERYSETA, *PWSAQUERYSETA, *LPWSAQUERYSETA;
00820 
00821 _Struct_size_bytes_(dwSize)
00822 typedef struct _WSAQuerySetW {
00823   _Field_range_(>=,sizeof(struct _WSAQuerySetW)) DWORD dwSize;
00824   LPWSTR lpszServiceInstanceName;
00825   LPGUID lpServiceClassId;
00826   LPWSAVERSION lpVersion;
00827   LPWSTR lpszComment;
00828   DWORD dwNameSpace;
00829   LPGUID lpNSProviderId;
00830   LPWSTR lpszContext;
00831   DWORD dwNumberOfProtocols;
00832   _Field_size_(dwNumberOfProtocols) LPAFPROTOCOLS lpafpProtocols;
00833   LPWSTR lpszQueryString;
00834   DWORD dwNumberOfCsAddrs;
00835   _Field_size_(dwNumberOfCsAddrs) LPCSADDR_INFO lpcsaBuffer;
00836   DWORD dwOutputFlags;
00837   LPBLOB lpBlob;
00838 } WSAQUERYSETW, *PWSAQUERYSETW, *LPWSAQUERYSETW;
00839 
00840 typedef struct _WSAQuerySet2A {
00841   DWORD dwSize;
00842   LPSTR lpszServiceInstanceName;
00843   LPWSAVERSION lpVersion;
00844   LPSTR lpszComment;
00845   DWORD dwNameSpace;
00846   LPGUID lpNSProviderId;
00847   LPSTR lpszContext;
00848   DWORD dwNumberOfProtocols;
00849   LPAFPROTOCOLS lpafpProtocols;
00850   LPSTR lpszQueryString;
00851   DWORD dwNumberOfCsAddrs;
00852   LPCSADDR_INFO lpcsaBuffer;
00853   DWORD dwOutputFlags;
00854   LPBLOB lpBlob;
00855 } WSAQUERYSET2A, *PWSAQUERYSET2A, *LPWSAQUERYSET2A;
00856 
00857 typedef struct _WSAQuerySet2W {
00858   DWORD dwSize;
00859   LPWSTR lpszServiceInstanceName;
00860   LPWSAVERSION lpVersion;
00861   LPWSTR lpszComment;
00862   DWORD dwNameSpace;
00863   LPGUID lpNSProviderId;
00864   LPWSTR lpszContext;
00865   DWORD dwNumberOfProtocols;
00866   _Field_size_(dwNumberOfProtocols) LPAFPROTOCOLS lpafpProtocols;
00867   LPWSTR lpszQueryString;
00868   DWORD dwNumberOfCsAddrs;
00869   _Field_size_(dwNumberOfCsAddrs) LPCSADDR_INFO lpcsaBuffer;
00870   DWORD dwOutputFlags;
00871   LPBLOB lpBlob;
00872 } WSAQUERYSET2W, *PWSAQUERYSET2W, *LPWSAQUERYSET2W;
00873 
00874 #ifdef UNICODE
00875 typedef WSAQUERYSETW WSAQUERYSET;
00876 typedef PWSAQUERYSETW PWSAQUERYSET;
00877 typedef LPWSAQUERYSETW LPWSAQUERYSET;
00878 typedef WSAQUERYSET2W WSAQUERYSET2;
00879 typedef PWSAQUERYSET2W PWSAQUERYSET2;
00880 typedef LPWSAQUERYSET2W LPWSAQUERYSET2;
00881 #else
00882 typedef WSAQUERYSETA WSAQUERYSET;
00883 typedef PWSAQUERYSETA PWSAQUERYSET;
00884 typedef LPWSAQUERYSETA LPWSAQUERYSET;
00885 typedef WSAQUERYSET2A WSAQUERYSET2;
00886 typedef PWSAQUERYSET2A PWSAQUERYSET2;
00887 typedef LPWSAQUERYSET2A LPWSAQUERYSET2;
00888 #endif /* UNICODE */
00889 
00890 typedef enum _WSAESETSERVICEOP {
00891   RNRSERVICE_REGISTER=0,
00892   RNRSERVICE_DEREGISTER,
00893   RNRSERVICE_DELETE
00894 } WSAESETSERVICEOP, *PWSAESETSERVICEOP, *LPWSAESETSERVICEOP;
00895 
00896 typedef struct _WSANSClassInfoA {
00897   LPSTR lpszName;
00898   DWORD dwNameSpace;
00899   DWORD dwValueType;
00900   DWORD dwValueSize;
00901   LPVOID lpValue;
00902 } WSANSCLASSINFOA, *PWSANSCLASSINFOA, *LPWSANSCLASSINFOA;
00903 
00904 typedef struct _WSANSClassInfoW {
00905   LPWSTR lpszName;
00906   DWORD dwNameSpace;
00907   DWORD dwValueType;
00908   DWORD dwValueSize;
00909   LPVOID lpValue;
00910 } WSANSCLASSINFOW, *PWSANSCLASSINFOW, *LPWSANSCLASSINFOW;
00911 
00912 #ifdef UNICODE
00913 typedef WSANSCLASSINFOW WSANSCLASSINFO;
00914 typedef PWSANSCLASSINFOW PWSANSCLASSINFO;
00915 typedef LPWSANSCLASSINFOW LPWSANSCLASSINFO;
00916 #else
00917 typedef WSANSCLASSINFOA WSANSCLASSINFO;
00918 typedef PWSANSCLASSINFOA PWSANSCLASSINFO;
00919 typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO;
00920 #endif
00921 
00922 typedef struct _WSAServiceClassInfoA {
00923   LPGUID lpServiceClassId;
00924   LPSTR lpszServiceClassName;
00925   DWORD dwCount;
00926   LPWSANSCLASSINFOA lpClassInfos;
00927 } WSASERVICECLASSINFOA, *PWSASERVICECLASSINFOA, *LPWSASERVICECLASSINFOA;
00928 
00929 typedef struct _WSAServiceClassInfoW {
00930   LPGUID lpServiceClassId;
00931   LPWSTR lpszServiceClassName;
00932   DWORD dwCount;
00933   LPWSANSCLASSINFOW lpClassInfos;
00934 } WSASERVICECLASSINFOW, *PWSASERVICECLASSINFOW, *LPWSASERVICECLASSINFOW;
00935 
00936 #ifdef UNICODE
00937 typedef WSASERVICECLASSINFOW WSASERVICECLASSINFO;
00938 typedef PWSASERVICECLASSINFOW PWSASERVICECLASSINFO;
00939 typedef LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO;
00940 #else
00941 typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO;
00942 typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO;
00943 typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO;
00944 #endif
00945 
00946 typedef struct _WSANAMESPACE_INFOA {
00947   GUID NSProviderId;
00948   DWORD dwNameSpace;
00949   BOOL fActive;
00950   DWORD dwVersion;
00951   LPSTR lpszIdentifier;
00952 } WSANAMESPACE_INFOA, *PWSANAMESPACE_INFOA, *LPWSANAMESPACE_INFOA;
00953 
00954 typedef struct _WSANAMESPACE_INFOW {
00955   GUID NSProviderId;
00956   DWORD dwNameSpace;
00957   BOOL fActive;
00958   DWORD dwVersion;
00959   LPWSTR lpszIdentifier;
00960 } WSANAMESPACE_INFOW, *PWSANAMESPACE_INFOW, *LPWSANAMESPACE_INFOW;
00961 
00962 typedef struct _WSANAMESPACE_INFOEXA {
00963   GUID NSProviderId;
00964   DWORD dwNameSpace;
00965   BOOL fActive;
00966   DWORD dwVersion;
00967   LPSTR lpszIdentifier;
00968   BLOB ProviderSpecific;
00969 } WSANAMESPACE_INFOEXA, *PWSANAMESPACE_INFOEXA, *LPWSANAMESPACE_INFOEXA;
00970 
00971 typedef struct _WSANAMESPACE_INFOEXW {
00972   GUID NSProviderId;
00973   DWORD dwNameSpace;
00974   BOOL fActive;
00975   DWORD dwVersion;
00976   LPWSTR lpszIdentifier;
00977   BLOB ProviderSpecific;
00978 } WSANAMESPACE_INFOEXW, *PWSANAMESPACE_INFOEXW, *LPWSANAMESPACE_INFOEXW;
00979 
00980 #ifdef UNICODE
00981 typedef WSANAMESPACE_INFOW WSANAMESPACE_INFO;
00982 typedef PWSANAMESPACE_INFOW PWSANAMESPACE_INFO;
00983 typedef LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO;
00984 typedef WSANAMESPACE_INFOEXW WSANAMESPACE_INFOEX;
00985 typedef PWSANAMESPACE_INFOEXW PWSANAMESPACE_INFOEX;
00986 typedef LPWSANAMESPACE_INFOEXW LPWSANAMESPACE_INFOEX;
00987 #else
00988 typedef WSANAMESPACE_INFOA WSANAMESPACE_INFO;
00989 typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO;
00990 typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO;
00991 typedef WSANAMESPACE_INFOEXA WSANAMESPACE_INFOEX;
00992 typedef PWSANAMESPACE_INFOEXA PWSANAMESPACE_INFOEX;
00993 typedef LPWSANAMESPACE_INFOEXA LPWSANAMESPACE_INFOEX;
00994 #endif /* UNICODE */
00995 
00996 #if(_WIN32_WINNT >= 0x0600)
00997 
00998 #define POLLRDNORM  0x0100
00999 #define POLLRDBAND  0x0200
01000 #define POLLIN      (POLLRDNORM | POLLRDBAND)
01001 #define POLLPRI     0x0400
01002 
01003 #define POLLWRNORM  0x0010
01004 #define POLLOUT     (POLLWRNORM)
01005 #define POLLWRBAND  0x0020
01006 
01007 #define POLLERR     0x0001
01008 #define POLLHUP     0x0002
01009 #define POLLNVAL    0x0004
01010 
01011 typedef struct pollfd {
01012   SOCKET fd;
01013   SHORT events;
01014   SHORT revents;
01015 } WSAPOLLFD, *PWSAPOLLFD, FAR *LPWSAPOLLFD;
01016 
01017 #endif /* (_WIN32_WINNT >= 0x0600) */
01018 
01019 #if INCL_WINSOCK_API_TYPEDEFS
01020 
01021 _Must_inspect_result_
01022 typedef SOCKET
01023 (WSAAPI *LPFN_ACCEPT)(
01024   _In_ SOCKET s,
01025   _Out_writes_bytes_opt_(*addrlen) struct sockaddr FAR *addr,
01026   _Inout_opt_ int FAR *addrlen);
01027 
01028 typedef int
01029 (WSAAPI *LPFN_BIND)(
01030   _In_ SOCKET s,
01031   _In_reads_bytes_(namelen) const struct sockaddr FAR *name,
01032   _In_ int namelen);
01033 
01034 typedef int
01035 (WSAAPI *LPFN_CLOSESOCKET)(
01036   _In_ SOCKET s);
01037 
01038 typedef int
01039 (WSAAPI *LPFN_CONNECT)(
01040   _In_ SOCKET s,
01041   _In_reads_bytes_(namelen) const struct sockaddr FAR *name,
01042   _In_ int namelen);
01043 
01044 typedef int
01045 (WSAAPI *LPFN_IOCTLSOCKET)(
01046   _In_ SOCKET s,
01047   _In_ long cmd,
01048   _Inout_ u_long FAR *argp);
01049 
01050 typedef int
01051 (WSAAPI *LPFN_GETPEERNAME)(
01052   _In_ SOCKET s,
01053   _Out_writes_bytes_to_(*namelen,*namelen) struct sockaddr FAR *name,
01054   _Inout_ int FAR *namelen);
01055 
01056 typedef int
01057 (WSAAPI *LPFN_GETSOCKNAME)(
01058   _In_ SOCKET s,
01059   _Out_writes_bytes_to_(*namelen,*namelen) struct sockaddr FAR *name,
01060   _Inout_ int FAR *namelen);
01061 
01062 typedef int
01063 (WSAAPI *LPFN_GETSOCKOPT)(
01064   _In_ SOCKET s,
01065   _In_ int level,
01066   _In_ int optname,
01067   _Out_writes_bytes_(*optlen) char FAR *optval,
01068   _Inout_ int FAR *optlen);
01069 
01070 typedef u_long
01071 (WSAAPI *LPFN_HTONL)(
01072   _In_ u_long hostlong);
01073 
01074 typedef u_short
01075 (WSAAPI *LPFN_HTONS)(
01076   _In_ u_short hostshort);
01077 
01078 typedef unsigned long
01079 (WSAAPI *LPFN_INET_ADDR)(
01080   _In_ const char FAR *cp);
01081 
01082 typedef char FAR *
01083 (WSAAPI *LPFN_INET_NTOA)(
01084   _In_ struct in_addr in);
01085 
01086 typedef int
01087 (WSAAPI *LPFN_LISTEN)(
01088   _In_ SOCKET s,
01089   _In_ int backlog);
01090 
01091 typedef u_long
01092 (WSAAPI *LPFN_NTOHL)(
01093   _In_ u_long netlong);
01094 
01095 typedef u_short
01096 (WSAAPI *LPFN_NTOHS)(
01097   _In_ u_short netshort);
01098 
01099 typedef int
01100 (WSAAPI *LPFN_RECV)(
01101   _In_ SOCKET s,
01102   _Out_writes_bytes_to_(len, return) char FAR *buf,
01103   _In_ int len,
01104   _In_ int flags);
01105 
01106 typedef int
01107 (WSAAPI *LPFN_RECVFROM)(
01108   _In_ SOCKET s,
01109   _Out_writes_bytes_to_(len, return) char FAR *buf,
01110   _In_ int len,
01111   _In_ int flags,
01112   _Out_writes_bytes_to_opt_(*fromlen, *fromlen) struct sockaddr FAR *from,
01113   _Inout_opt_ int FAR * fromlen);
01114 
01115 typedef int
01116 (WSAAPI *LPFN_SELECT)(
01117   _In_ int nfds,
01118   _Inout_opt_ fd_set FAR *readfds,
01119   _Inout_opt_ fd_set FAR *writefds,
01120   _Inout_opt_ fd_set FAR *exceptfds,
01121   _In_opt_ const struct timeval FAR *timeout);
01122 
01123 typedef int
01124 (WSAAPI *LPFN_SEND)(
01125   _In_ SOCKET s,
01126   _In_reads_bytes_(len) const char FAR *buf,
01127   _In_ int len,
01128   _In_ int flags);
01129 
01130 typedef int
01131 (WSAAPI *LPFN_SENDTO)(
01132   _In_ SOCKET s,
01133   _In_reads_bytes_(len) const char FAR *buf,
01134   _In_ int len,
01135   _In_ int flags,
01136   _In_reads_bytes_(tolen) const struct sockaddr FAR *to,
01137   _In_ int tolen);
01138 
01139 typedef int
01140 (WSAAPI *LPFN_SETSOCKOPT)(
01141   _In_ SOCKET s,
01142   _In_ int level,
01143   _In_ int optname,
01144   _In_reads_bytes_(optlen) const char FAR *optval,
01145   _In_ int optlen);
01146 
01147 typedef int
01148 (WSAAPI *LPFN_SHUTDOWN)(
01149   _In_ SOCKET s,
01150   _In_ int how);
01151 
01152 _Must_inspect_result_
01153 typedef SOCKET
01154 (WSAAPI *LPFN_SOCKET)(
01155   _In_ int af,
01156   _In_ int type,
01157   _In_ int protocol);
01158 
01159 typedef struct hostent FAR *
01160 (WSAAPI *LPFN_GETHOSTBYADDR)(
01161   _In_reads_bytes_(len) const char FAR *addr,
01162   _In_ int len,
01163   _In_ int type);
01164 
01165 typedef struct hostent FAR *
01166 (WSAAPI *LPFN_GETHOSTBYNAME)(
01167   _In_ const char FAR *name);
01168 
01169 typedef int
01170 (WSAAPI *LPFN_GETHOSTNAME)(
01171   _Out_writes_bytes_(namelen) char FAR *name,
01172   _In_ int namelen);
01173 
01174 typedef struct servent FAR *
01175 (WSAAPI *LPFN_GETSERVBYPORT)(
01176   _In_ int port,
01177   _In_opt_z_ const char FAR *proto);
01178 
01179 typedef struct servent FAR *
01180 (WSAAPI *LPFN_GETSERVBYNAME)(
01181   _In_z_ const char FAR *name,
01182   _In_opt_z_ const char FAR *proto);
01183 
01184 typedef struct protoent FAR *
01185 (WSAAPI *LPFN_GETPROTOBYNUMBER)(
01186   _In_ int number);
01187 
01188 typedef struct protoent FAR *
01189 (WSAAPI *LPFN_GETPROTOBYNAME)(
01190   _In_z_ const char FAR *name);
01191 
01192 _Must_inspect_result_
01193 typedef int
01194 (WSAAPI *LPFN_WSASTARTUP)(
01195   _In_ WORD wVersionRequired,
01196   _Out_ LPWSADATA lpWSAData);
01197 
01198 typedef int
01199 (WSAAPI *LPFN_WSACLEANUP)(void);
01200 
01201 typedef void
01202 (WSAAPI *LPFN_WSASETLASTERROR)(
01203   _In_ int iError);
01204 
01205 typedef int
01206 (WSAAPI *LPFN_WSAGETLASTERROR)(void);
01207 
01208 typedef BOOL
01209 (WSAAPI *LPFN_WSAISBLOCKING)(void);
01210 
01211 typedef int
01212 (WSAAPI *LPFN_WSAUNHOOKBLOCKINGHOOK)(void);
01213 
01214 typedef FARPROC
01215 (WSAAPI *LPFN_WSASETBLOCKINGHOOK)(
01216   _In_ FARPROC lpBlockFunc);
01217 
01218 typedef int
01219 (WSAAPI *LPFN_WSACANCELBLOCKINGCALL)(void);
01220 
01221 typedef HANDLE
01222 (WSAAPI *LPFN_WSAASYNCGETSERVBYNAME)(
01223   _In_ HWND hWnd,
01224   _In_ u_int wMsg,
01225   _In_z_ const char FAR *name,
01226   _In_z_ const char FAR *proto,
01227   _Out_writes_bytes_(buflen) char FAR *buf,
01228   _In_ int buflen);
01229 
01230 typedef HANDLE
01231 (WSAAPI *LPFN_WSAASYNCGETSERVBYPORT)(
01232   _In_ HWND hWnd,
01233   _In_ u_int wMsg,
01234   _In_ int port,
01235   _In_ const char FAR *proto,
01236   _Out_writes_bytes_(buflen) char FAR *buf,
01237   _In_ int buflen);
01238 
01239 typedef HANDLE
01240 (WSAAPI *LPFN_WSAASYNCGETPROTOBYNAME)(
01241   _In_ HWND hWnd,
01242   _In_ u_int wMsg,
01243   _In_z_ const char FAR *name,
01244   _Out_writes_bytes_(buflen) char FAR *buf,
01245   _In_ int buflen);
01246 
01247 typedef HANDLE
01248 (WSAAPI *LPFN_WSAASYNCGETPROTOBYNUMBER)(
01249   _In_ HWND hWnd,
01250   _In_ u_int wMsg,
01251   _In_ int number,
01252   _Out_writes_bytes_(buflen) char FAR *buf,
01253   _In_ int buflen);
01254 
01255 typedef HANDLE
01256 (WSAAPI *LPFN_WSAASYNCGETHOSTBYNAME)(
01257   _In_ HWND hWnd,
01258   _In_ u_int wMsg,
01259   _In_z_ const char FAR *name,
01260   _Out_writes_bytes_(buflen) char FAR *buf,
01261   _In_ int buflen);
01262 
01263 typedef HANDLE
01264 (WSAAPI *LPFN_WSAASYNCGETHOSTBYADDR)(
01265   _In_ HWND hWnd,
01266   _In_ u_int wMsg,
01267   _In_reads_bytes_(len) const char FAR *addr,
01268   _In_ int len,
01269   _In_ int type,
01270   _Out_writes_bytes_(buflen) char FAR *buf,
01271   _In_ int buflen);
01272 
01273 typedef int
01274 (WSAAPI *LPFN_WSACANCELASYNCREQUEST)(
01275   _In_ HANDLE hAsyncTaskHandle);
01276 
01277 typedef int
01278 (WSAAPI *LPFN_WSAASYNCSELECT)(
01279   _In_ SOCKET s,
01280   _In_ HWND hWnd,
01281   _In_ u_int wMsg,
01282   _In_ long lEvent);
01283 
01284 _Must_inspect_result_
01285 typedef SOCKET
01286 (WSAAPI *LPFN_WSAACCEPT)(
01287   _In_ SOCKET s,
01288   _Out_writes_bytes_to_opt_(*addrlen,*addrlen) struct sockaddr FAR *addr,
01289   _Inout_opt_ LPINT addrlen,
01290   _In_opt_ LPCONDITIONPROC lpfnCondition,
01291   _In_opt_ DWORD_PTR dwCallbackData);
01292 
01293 typedef BOOL
01294 (WSAAPI *LPFN_WSACLOSEEVENT)(
01295   _In_ WSAEVENT hEvent);
01296 
01297 typedef int
01298 (WSAAPI *LPFN_WSACONNECT)(
01299   _In_ SOCKET s,
01300   _In_reads_bytes_(namelen) const struct sockaddr FAR *name,
01301   _In_ int namelen,
01302   _In_opt_ LPWSABUF lpCallerData,
01303   _Out_opt_ LPWSABUF lpCalleeData,
01304   _In_opt_ LPQOS lpSQOS,
01305   _In_opt_ LPQOS lpGQOS);
01306 
01307 typedef WSAEVENT
01308 (WSAAPI *LPFN_WSACREATEEVENT)(void);
01309 
01310 typedef int
01311 (WSAAPI *LPFN_WSADUPLICATESOCKETA)(
01312   _In_ SOCKET s,
01313   _In_ DWORD dwProcessId,
01314   _Out_ LPWSAPROTOCOL_INFOA lpProtocolInfo);
01315 
01316 typedef int
01317 (WSAAPI *LPFN_WSADUPLICATESOCKETW)(
01318   _In_ SOCKET s,
01319   _In_ DWORD dwProcessId,
01320   _Out_ LPWSAPROTOCOL_INFOW lpProtocolInfo);
01321 
01322 #ifdef UNICODE
01323 #define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW
01324 #else
01325 #define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETA
01326 #endif
01327 
01328 typedef int
01329 (WSAAPI *LPFN_WSAENUMNETWORKEVENTS)(
01330   _In_ SOCKET s,
01331   _In_ WSAEVENT hEventObject,
01332   _Out_ LPWSANETWORKEVENTS lpNetworkEvents);
01333 
01334 typedef int
01335 (WSAAPI *LPFN_WSAENUMPROTOCOLSA)(
01336   _In_opt_ LPINT lpiProtocols,
01337   _Out_writes_bytes_to_opt_(*lpdwBufferLength,*lpdwBufferLength) LPWSAPROTOCOL_INFOA lpProtocolBuffer,
01338   _Inout_ LPDWORD lpdwBufferLength);
01339 
01340 typedef int
01341 (WSAAPI *LPFN_WSAENUMPROTOCOLSW)(
01342   _In_opt_ LPINT lpiProtocols,
01343   _Out_writes_bytes_to_opt_(*lpdwBufferLength,*lpdwBufferLength) LPWSAPROTOCOL_INFOW lpProtocolBuffer,
01344   _Inout_ LPDWORD lpdwBufferLength);
01345 
01346 #ifdef UNICODE
01347 #define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSW
01348 #else
01349 #define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSA
01350 #endif
01351 
01352 typedef int
01353 (WSAAPI *LPFN_WSAEVENTSELECT)(
01354   _In_ SOCKET s,
01355   _In_opt_ WSAEVENT hEventObject,
01356   _In_ long lNetworkEvents);
01357 
01358 typedef BOOL
01359 (WSAAPI *LPFN_WSAGETOVERLAPPEDRESULT)(
01360   _In_ SOCKET s,
01361   _In_ LPWSAOVERLAPPED lpOverlapped,
01362   _Out_ LPDWORD lpcbTransfer,
01363   _In_ BOOL fWait,
01364   _Out_ LPDWORD lpdwFlags);
01365 
01366 typedef BOOL
01367 (WSAAPI *LPFN_WSAGETQOSBYNAME)(
01368   IN SOCKET s,
01369   IN LPWSABUF lpQOSName,
01370   OUT LPQOS lpQOS);
01371 
01372 typedef int
01373 (WSAAPI *LPFN_WSAHTONL)(
01374   _In_ SOCKET s,
01375   _In_ u_long hostlong,
01376   _Out_ u_long FAR *lpnetlong);
01377 
01378 typedef int
01379 (WSAAPI *LPFN_WSAHTONS)(
01380   _In_ SOCKET s,
01381   _In_ u_short hostshort,
01382   _Out_ u_short FAR *lpnetshort);
01383 
01384 typedef int
01385 (WSAAPI *LPFN_WSAIOCTL)(
01386   _In_ SOCKET s,
01387   _In_ DWORD dwIoControlCode,
01388   _In_reads_bytes_opt_(cbInBuffer) LPVOID lpvInBuffer,
01389   _In_ DWORD cbInBuffer,
01390   _Out_writes_bytes_to_opt_(cbOutBuffer, *lpcbBytesReturned) LPVOID lpvOutBuffer,
01391   _In_ DWORD cbOutBuffer,
01392   _Out_ LPDWORD lpcbBytesReturned,
01393   _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
01394   _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
01395 
01396 typedef SOCKET
01397 (WSAAPI *LPFN_WSAJOINLEAF)(
01398   _In_ SOCKET s,
01399   _In_reads_bytes_(namelen) const struct sockaddr FAR *name,
01400   _In_ int namelen,
01401   _In_opt_ LPWSABUF lpCallerData,
01402   _Out_opt_ LPWSABUF lpCalleeData,
01403   _In_opt_ LPQOS lpSQOS,
01404   _In_opt_ LPQOS lpGQOS,
01405   _In_ DWORD dwFlags);
01406 
01407 typedef int
01408 (WSAAPI *LPFN_WSANTOHL)(
01409   _In_ SOCKET s,
01410   _In_ u_long netlong,
01411   _Out_ u_long FAR *lphostlong);
01412 
01413 typedef int
01414 (WSAAPI *LPFN_WSANTOHS)(
01415   _In_ SOCKET s,
01416   _In_ u_short netshort,
01417   _Out_ u_short FAR *lphostshort);
01418 
01419 typedef int
01420 (WSAAPI *LPFN_WSARECV)(
01421   _In_ SOCKET s,
01422   _In_reads_(dwBufferCount) LPWSABUF lpBuffers,
01423   _In_ DWORD dwBufferCount,
01424   _Out_opt_ LPDWORD lpNumberOfBytesRecvd,
01425   _Inout_ LPDWORD lpFlags,
01426   _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
01427   _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
01428 
01429 typedef int
01430 (WSAAPI *LPFN_WSARECVDISCONNECT)(
01431   _In_ SOCKET s,
01432   __out_data_source(NETWORK) LPWSABUF lpInboundDisconnectData);
01433 
01434 typedef int
01435 (WSAAPI *LPFN_WSARECVFROM)(
01436   _In_ SOCKET s,
01437   _In_reads_(dwBufferCount) LPWSABUF lpBuffers,
01438   _In_ DWORD dwBufferCount,
01439   _Out_opt_ LPDWORD lpNumberOfBytesRecvd,
01440   _Inout_ LPDWORD lpFlags,
01441   _Out_writes_bytes_to_opt_(*lpFromlen,*lpFromlen) struct sockaddr FAR *lpFrom,
01442   _Inout_opt_ LPINT lpFromlen,
01443   _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
01444   _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
01445 
01446 typedef BOOL
01447 (WSAAPI *LPFN_WSARESETEVENT)(
01448   _In_ WSAEVENT hEvent);
01449 
01450 typedef int
01451 (WSAAPI *LPFN_WSASEND)(
01452   _In_ SOCKET s,
01453   _In_reads_(dwBufferCount) LPWSABUF lpBuffers,
01454   _In_ DWORD dwBufferCount,
01455   _Out_opt_ LPDWORD lpNumberOfBytesSent,
01456   _In_ DWORD dwFlags,
01457   _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
01458   _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
01459 
01460 typedef int
01461 (WSAAPI *LPFN_WSASENDDISCONNECT)(
01462   _In_ SOCKET s,
01463   _In_opt_ LPWSABUF lpOutboundDisconnectData);
01464 
01465 typedef int
01466 (WSAAPI *LPFN_WSASENDTO)(
01467   _In_ SOCKET s,
01468   _In_reads_(dwBufferCount) LPWSABUF lpBuffers,
01469   _In_ DWORD dwBufferCount,
01470   _Out_opt_ LPDWORD lpNumberOfBytesSent,
01471   _In_ DWORD dwFlags,
01472   _In_reads_bytes_opt_(iTolen) const struct sockaddr FAR *lpTo,
01473   _In_ int iTolen,
01474   _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
01475   _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
01476 
01477 typedef BOOL
01478 (WSAAPI *LPFN_WSASETEVENT)(
01479   _In_ WSAEVENT hEvent);
01480 
01481 _Must_inspect_result_
01482 typedef SOCKET
01483 (WSAAPI *LPFN_WSASOCKETA)(
01484   _In_ int af,
01485   _In_ int type,
01486   _In_ int protocol,
01487   _In_opt_ LPWSAPROTOCOL_INFOA lpProtocolInfo,
01488   _In_ GROUP g,
01489   _In_ DWORD dwFlags);
01490 
01491 _Must_inspect_result_
01492 typedef SOCKET
01493 (WSAAPI *LPFN_WSASOCKETW)(
01494   _In_ int af,
01495   _In_ int type,
01496   _In_ int protocol,
01497   _In_opt_ LPWSAPROTOCOL_INFOW lpProtocolInfo,
01498   _In_ GROUP g,
01499   _In_ DWORD dwFlags);
01500 
01501 #ifdef UNICODE
01502 #define LPFN_WSASOCKET LPFN_WSASOCKETW
01503 #else
01504 #define LPFN_WSASOCKET LPFN_WSASOCKETA
01505 #endif
01506 
01507 typedef DWORD
01508 (WSAAPI *LPFN_WSAWAITFORMULTIPLEEVENTS)(
01509   _In_ DWORD cEvents,
01510   _In_reads_(cEvents) const WSAEVENT FAR *lphEvents,
01511   _In_ BOOL fWaitAll,
01512   _In_ DWORD dwTimeout,
01513   _In_ BOOL fAlertable);
01514 
01515 typedef INT
01516 (WSAAPI *LPFN_WSAADDRESSTOSTRINGA)(
01517   _In_reads_bytes_(dwAddressLength) LPSOCKADDR lpsaAddress,
01518   _In_ DWORD dwAddressLength,
01519   _In_opt_ LPWSAPROTOCOL_INFOA lpProtocolInfo,
01520   _Out_writes_to_(*lpdwAddressStringLength,*lpdwAddressStringLength) LPSTR lpszAddressString,
01521   _Inout_ LPDWORD lpdwAddressStringLength);
01522 
01523 typedef INT
01524 (WSAAPI *LPFN_WSAADDRESSTOSTRINGW)(
01525   _In_reads_bytes_(dwAddressLength) LPSOCKADDR lpsaAddress,
01526   _In_ DWORD dwAddressLength,
01527   _In_opt_ LPWSAPROTOCOL_INFOW lpProtocolInfo,
01528   _Out_writes_to_(*lpdwAddressStringLength,*lpdwAddressStringLength) LPWSTR lpszAddressString,
01529   _Inout_ LPDWORD lpdwAddressStringLength);
01530 
01531 #ifdef UNICODE
01532 #define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGW
01533 #else
01534 #define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGA
01535 #endif
01536 
01537 typedef INT
01538 (WSAAPI *LPFN_WSASTRINGTOADDRESSA)(
01539   _In_ LPSTR AddressString,
01540   _In_ INT AddressFamily,
01541   _In_opt_ LPWSAPROTOCOL_INFOA lpProtocolInfo,
01542   _Out_writes_bytes_to_(*lpAddressLength,*lpAddressLength) LPSOCKADDR lpAddress,
01543   _Inout_ LPINT lpAddressLength);
01544 
01545 typedef INT
01546 (WSAAPI *LPFN_WSASTRINGTOADDRESSW)(
01547   _In_ LPWSTR AddressString,
01548   _In_ INT AddressFamily,
01549   _In_opt_ LPWSAPROTOCOL_INFOW lpProtocolInfo,
01550   _Out_writes_bytes_to_(*lpAddressLength,*lpAddressLength) LPSOCKADDR lpAddress,
01551   _Inout_ LPINT lpAddressLength);
01552 
01553 #ifdef UNICODE
01554 #define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSW
01555 #else
01556 #define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSA
01557 #endif
01558 
01559 typedef INT
01560 (WSAAPI *LPFN_WSALOOKUPSERVICEBEGINA)(
01561   _In_ LPWSAQUERYSETA lpqsRestrictions,
01562   _In_ DWORD dwControlFlags,
01563   _Out_ LPHANDLE lphLookup);
01564 
01565 typedef INT
01566 (WSAAPI *LPFN_WSALOOKUPSERVICEBEGINW)(
01567   _In_ LPWSAQUERYSETW lpqsRestrictions,
01568   _In_ DWORD dwControlFlags,
01569   _Out_ LPHANDLE lphLookup);
01570 
01571 #ifdef UNICODE
01572 #define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINW
01573 #else
01574 #define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINA
01575 #endif
01576 
01577 typedef INT
01578 (WSAAPI *LPFN_WSALOOKUPSERVICENEXTA)(
01579   _In_ HANDLE hLookup,
01580   _In_ DWORD dwControlFlags,
01581   _Inout_ LPDWORD lpdwBufferLength,
01582   _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPWSAQUERYSETA lpqsResults);
01583 
01584 typedef INT
01585 (WSAAPI *LPFN_WSALOOKUPSERVICENEXTW)(
01586   _In_ HANDLE hLookup,
01587   _In_ DWORD dwControlFlags,
01588   _Inout_ LPDWORD lpdwBufferLength,
01589   _Out_writes_bytes_to_opt_(*lpdwBufferLength,*lpdwBufferLength) LPWSAQUERYSETW lpqsResults);
01590 
01591 #ifdef UNICODE
01592 #define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTW
01593 #else
01594 #define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTA
01595 #endif
01596 
01597 typedef INT
01598 (WSAAPI *LPFN_WSALOOKUPSERVICEEND)(
01599   _In_ HANDLE hLookup);
01600 
01601 typedef INT
01602 (WSAAPI *LPFN_WSAINSTALLSERVICECLASSA)(
01603   _In_ LPWSASERVICECLASSINFOA lpServiceClassInfo);
01604 
01605 typedef INT
01606 (WSAAPI *LPFN_WSAINSTALLSERVICECLASSW)(
01607   _In_ LPWSASERVICECLASSINFOW lpServiceClassInfo);
01608 
01609 #ifdef UNICODE
01610 #define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSW
01611 #else
01612 #define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSA
01613 #endif
01614 
01615 typedef INT
01616 (WSAAPI *LPFN_WSAREMOVESERVICECLASS)(
01617   _In_ LPGUID lpServiceClassId);
01618 
01619 typedef INT
01620 (WSAAPI *LPFN_WSAGETSERVICECLASSINFOA)(
01621   _In_ LPGUID lpProviderId,
01622   _In_ LPGUID lpServiceClassId,
01623   _Inout_ LPDWORD lpdwBufSize,
01624   _Out_writes_bytes_to_(*lpdwBufSize,*lpdwBufSize) LPWSASERVICECLASSINFOA lpServiceClassInfo);
01625 
01626 typedef INT
01627 (WSAAPI *LPFN_WSAGETSERVICECLASSINFOW)(
01628   _In_ LPGUID lpProviderId,
01629   _In_ LPGUID lpServiceClassId,
01630   _Inout_ LPDWORD lpdwBufSize,
01631   _Out_writes_bytes_to_(*lpdwBufSize,*lpdwBufSize) LPWSASERVICECLASSINFOW lpServiceClassInfo);
01632 
01633 #ifdef UNICODE
01634 #define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOW
01635 #else
01636 #define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOA
01637 #endif
01638 
01639 typedef INT
01640 (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSA)(
01641   _Inout_ LPDWORD lpdwBufferLength,
01642   _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPWSANAMESPACE_INFOA lpnspBuffer);
01643 
01644 typedef INT
01645 (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSW)(
01646   _Inout_ LPDWORD lpdwBufferLength,
01647   _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPWSANAMESPACE_INFOW lpnspBuffer);
01648 
01649 #ifdef UNICODE
01650 #define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
01651 #else
01652 #define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSA
01653 #endif
01654 
01655 typedef INT
01656 (WSAAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA)(
01657   _In_ LPGUID lpServiceClassId,
01658   _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPSTR lpszServiceClassName,
01659   _Inout_ LPDWORD lpdwBufferLength);
01660 
01661 typedef INT
01662 (WSAAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW)(
01663   _In_ LPGUID lpServiceClassId,
01664   _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPWSTR lpszServiceClassName,
01665   _Inout_ LPDWORD lpdwBufferLength);
01666 
01667 #ifdef UNICODE
01668 #define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW
01669 #else
01670 #define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA
01671 #endif
01672 
01673 typedef INT
01674 (WSAAPI *LPFN_WSASETSERVICEA)(
01675   _In_ LPWSAQUERYSETA lpqsRegInfo,
01676   _In_ WSAESETSERVICEOP essoperation,
01677   _In_ DWORD dwControlFlags);
01678 
01679 typedef INT
01680 (WSAAPI *LPFN_WSASETSERVICEW)(
01681   _In_ LPWSAQUERYSETW lpqsRegInfo,
01682   _In_ WSAESETSERVICEOP essoperation,
01683   _In_ DWORD dwControlFlags);
01684 
01685 #ifdef UNICODE
01686 #define LPFN_WSASETSERVICE LPFN_WSASETSERVICEW
01687 #else
01688 #define LPFN_WSASETSERVICE LPFN_WSASETSERVICEA
01689 #endif
01690 
01691 typedef INT
01692 (WSAAPI *LPFN_WSAPROVIDERCONFIGCHANGE)(
01693   _Inout_ LPHANDLE lpNotificationHandle,
01694   _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
01695   _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
01696 
01697 #if(_WIN32_WINNT >= 0x0501)
01698 typedef INT
01699 (WSAAPI *LPFN_WSANSPIOCTL)(
01700   _In_ HANDLE hLookup,
01701   _In_ DWORD dwControlCode,
01702   _In_reads_bytes_opt_(cbInBuffer) LPVOID lpvInBuffer,
01703   _In_ DWORD cbInBuffer,
01704   _Out_writes_bytes_to_opt_(cbOutBuffer, *lpcbBytesReturned) LPVOID lpvOutBuffer,
01705   _In_ DWORD cbOutBuffer,
01706   _Out_ LPDWORD lpcbBytesReturned,
01707   _In_opt_ LPWSACOMPLETION lpCompletion);
01708 #endif /* (_WIN32_WINNT >= 0x0501) */
01709 
01710 #if (_WIN32_WINNT >= 0x0600)
01711 
01712 typedef INT
01713 (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSEXA)(
01714   _Inout_ LPDWORD lpdwBufferLength,
01715   _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPWSANAMESPACE_INFOEXA lpnspBuffer);
01716 
01717 typedef INT
01718 (WSAAPI *LPFN_WSAENUMNAMESPACEPROVIDERSEXW)(
01719   _Inout_ LPDWORD lpdwBufferLength,
01720   _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPWSANAMESPACE_INFOEXW lpnspBuffer);
01721 
01722 #ifdef UNICODE
01723 #define LPFN_WSAENUMNAMESPACEPROVIDERSEX LPFN_WSAENUMNAMESPACEPROVIDERSEXW
01724 #else
01725 #define LPFN_WSAENUMNAMESPACEPROVIDERSEX LPFN_WSAENUMNAMESPACEPROVIDERSEXA
01726 #endif
01727 
01728 #endif /* (_WIN32_WINNT >= 0x600) */
01729 
01730 #endif /* INCL_WINSOCK_API_TYPEDEFS */
01731 
01732 #if INCL_WINSOCK_API_PROTOTYPES
01733 
01734 _Must_inspect_result_
01735 WINSOCK_API_LINKAGE
01736 SOCKET
01737 WSAAPI
01738 accept(
01739   _In_ SOCKET s,
01740   _Out_writes_bytes_opt_(*addrlen) struct sockaddr FAR *addr,
01741   _Inout_opt_ int FAR *addrlen);
01742 
01743 WINSOCK_API_LINKAGE
01744 int
01745 WSAAPI
01746 bind(
01747   _In_ SOCKET s,
01748   _In_reads_bytes_(namelen) const struct sockaddr FAR *addr,
01749   _In_ int namelen);
01750 
01751 WINSOCK_API_LINKAGE
01752 int
01753 WSAAPI
01754 closesocket(
01755   _In_ SOCKET s);
01756 
01757 WINSOCK_API_LINKAGE
01758 int
01759 WSAAPI
01760 connect(
01761   _In_ SOCKET s,
01762   _In_reads_bytes_(namelen) const struct sockaddr FAR *name,
01763   _In_ int namelen);
01764 
01765 WINSOCK_API_LINKAGE
01766 int
01767 WSAAPI
01768 ioctlsocket(
01769   _In_ SOCKET s,
01770   _In_ long cmd,
01771   _Inout_ u_long FAR *argp);
01772 
01773 WINSOCK_API_LINKAGE
01774 int
01775 WSAAPI
01776 getpeername(
01777   _In_ SOCKET s,
01778   _Out_writes_bytes_to_(*namelen,*namelen) struct sockaddr FAR *name,
01779   _Inout_ int FAR *namelen);
01780 
01781 WINSOCK_API_LINKAGE
01782 int
01783 WSAAPI
01784 getsockname(
01785   _In_ SOCKET s,
01786   _Out_writes_bytes_to_(*namelen,*namelen) struct sockaddr FAR *name,
01787   _Inout_ int FAR *namelen);
01788 
01789 WINSOCK_API_LINKAGE
01790 int
01791 WSAAPI
01792 getsockopt(
01793   _In_ SOCKET s,
01794   _In_ int level,
01795   _In_ int optname,
01796   _Out_writes_bytes_(*optlen) char FAR *optval,
01797   _Inout_ int FAR *optlen);
01798 
01799 WINSOCK_API_LINKAGE
01800 u_long
01801 WSAAPI
01802 htonl(
01803   IN u_long hostlong);
01804 
01805 WINSOCK_API_LINKAGE
01806 u_short
01807 WSAAPI
01808 htons(
01809   _In_ u_short hostshort);
01810 
01811 WINSOCK_API_LINKAGE
01812 unsigned long
01813 WSAAPI
01814 inet_addr(
01815   _In_z_ const char FAR *cp);
01816 
01817 WINSOCK_API_LINKAGE
01818 char FAR *
01819 WSAAPI
01820 inet_ntoa(
01821   _In_ struct in_addr in);
01822 
01823 WINSOCK_API_LINKAGE
01824 int
01825 WSAAPI
01826 listen(
01827   _In_ SOCKET s,
01828   _In_ int backlog);
01829 
01830 WINSOCK_API_LINKAGE
01831 u_long
01832 WSAAPI
01833 ntohl(
01834   _In_ u_long netlong);
01835 
01836 WINSOCK_API_LINKAGE
01837 u_short
01838 WSAAPI
01839 ntohs(
01840   _In_ u_short netshort);
01841 
01842 WINSOCK_API_LINKAGE
01843 int
01844 WSAAPI
01845 recv(
01846   _In_ SOCKET s,
01847   _Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR *buf,
01848   _In_ int len,
01849   _In_ int flags);
01850 
01851 WINSOCK_API_LINKAGE
01852 int
01853 WSAAPI
01854 recvfrom(
01855   _In_ SOCKET s,
01856   _Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR *buf,
01857   _In_ int len,
01858   _In_ int flags,
01859   _Out_writes_bytes_to_opt_(*fromlen, *fromlen) struct sockaddr FAR *from,
01860   _Inout_opt_ int FAR *fromlen);
01861 
01862 WINSOCK_API_LINKAGE
01863 int
01864 WSAAPI
01865 select(
01866   _In_ int nfds,
01867   _Inout_opt_ fd_set FAR *readfds,
01868   _Inout_opt_ fd_set FAR *writefds,
01869   _Inout_opt_ fd_set FAR *exceptfds,
01870   _In_opt_ const struct timeval FAR *timeout);
01871 
01872 WINSOCK_API_LINKAGE
01873 int
01874 WSAAPI
01875 send(
01876   _In_ SOCKET s,
01877   _In_reads_bytes_(len) const char FAR *buf,
01878   _In_ int len,
01879   _In_ int flags);
01880 
01881 WINSOCK_API_LINKAGE
01882 int
01883 WSAAPI
01884 sendto(
01885   _In_ SOCKET s,
01886   _In_reads_bytes_(len) const char FAR *buf,
01887   _In_ int len,
01888   _In_ int flags,
01889   _In_reads_bytes_(tolen) const struct sockaddr FAR *to,
01890   _In_ int tolen);
01891 
01892 WINSOCK_API_LINKAGE
01893 int
01894 WSAAPI
01895 setsockopt(
01896   _In_ SOCKET s,
01897   _In_ int level,
01898   _In_ int optname,
01899   _In_reads_bytes_opt_(optlen) const char FAR *optval,
01900   _In_ int optlen);
01901 
01902 WINSOCK_API_LINKAGE
01903 int
01904 WSAAPI
01905 shutdown(
01906   _In_ SOCKET s,
01907   _In_ int how);
01908 
01909 _Must_inspect_result_
01910 WINSOCK_API_LINKAGE
01911 SOCKET
01912 WSAAPI
01913 socket(
01914   _In_ int af,
01915   _In_ int type,
01916   _In_ int protocol);
01917 
01918 WINSOCK_API_LINKAGE
01919 struct hostent FAR *
01920 WSAAPI
01921 gethostbyaddr(
01922   _In_reads_bytes_(len) const char FAR *addr,
01923   _In_ int len,
01924   _In_ int type);
01925 
01926 WINSOCK_API_LINKAGE
01927 struct hostent FAR *
01928 WSAAPI
01929 gethostbyname(
01930   _In_z_ const char FAR *name);
01931 
01932 WINSOCK_API_LINKAGE
01933 int
01934 WSAAPI
01935 gethostname(
01936   _Out_writes_bytes_(namelen) char FAR *name,
01937   _In_ int namelen);
01938 
01939 WINSOCK_API_LINKAGE
01940 struct servent FAR *
01941 WSAAPI
01942 getservbyport(
01943   _In_ int port,
01944   _In_opt_z_ const char FAR *proto);
01945 
01946 WINSOCK_API_LINKAGE
01947 struct servent FAR *
01948 WSAAPI
01949 getservbyname(
01950   _In_z_ const char FAR *name,
01951   _In_opt_z_ const char FAR *proto);
01952 
01953 WINSOCK_API_LINKAGE
01954 struct protoent FAR *
01955 WSAAPI
01956 getprotobynumber(
01957   _In_ int number);
01958 
01959 WINSOCK_API_LINKAGE
01960 struct protoent FAR *
01961 WSAAPI
01962 getprotobyname(
01963   _In_z_ const char FAR *name);
01964 
01965 _Must_inspect_result_
01966 WINSOCK_API_LINKAGE
01967 int
01968 WSAAPI
01969 WSAStartup(
01970   _In_ WORD wVersionRequired,
01971   _Out_ LPWSADATA lpWSAData);
01972 
01973 WINSOCK_API_LINKAGE
01974 int
01975 WSAAPI
01976 WSACleanup(void);
01977 
01978 WINSOCK_API_LINKAGE
01979 void
01980 WSAAPI
01981 WSASetLastError(
01982   _In_ int iError);
01983 
01984 WINSOCK_API_LINKAGE
01985 int
01986 WSAAPI
01987 WSAGetLastError(void);
01988 
01989 WINSOCK_API_LINKAGE
01990 BOOL
01991 WSAAPI
01992 WSAIsBlocking(void);
01993 
01994 WINSOCK_API_LINKAGE
01995 int
01996 WSAAPI
01997 WSAUnhookBlockingHook(void);
01998 
01999 WINSOCK_API_LINKAGE
02000 FARPROC
02001 WSAAPI
02002 WSASetBlockingHook(
02003   _In_ FARPROC lpBlockFunc);
02004 
02005 WINSOCK_API_LINKAGE
02006 int
02007 WSAAPI
02008 WSACancelBlockingCall(void);
02009 
02010 WINSOCK_API_LINKAGE
02011 HANDLE
02012 WSAAPI
02013 WSAAsyncGetServByName(
02014   _In_ HWND hWnd,
02015   _In_ u_int wMsg,
02016   _In_z_ const char FAR *name,
02017   _In_z_ const char FAR *proto,
02018   _Out_writes_bytes_(buflen) char FAR *buf,
02019   _In_ int buflen);
02020 
02021 WINSOCK_API_LINKAGE
02022 HANDLE
02023 WSAAPI
02024 WSAAsyncGetServByPort(
02025   _In_ HWND hWnd,
02026   _In_ u_int wMsg,
02027   _In_ int port,
02028   _In_ const char FAR *proto,
02029   _Out_writes_bytes_(buflen) char FAR *buf,
02030   _In_ int buflen);
02031 
02032 WINSOCK_API_LINKAGE
02033 HANDLE
02034 WSAAPI
02035 WSAAsyncGetProtoByName(
02036   _In_ HWND hWnd,
02037   _In_ u_int wMsg,
02038   _In_z_ const char FAR *name,
02039   _Out_writes_bytes_(buflen) char FAR *buf,
02040   _In_ int buflen);
02041 
02042 WINSOCK_API_LINKAGE
02043 HANDLE
02044 WSAAPI
02045 WSAAsyncGetProtoByNumber(
02046   _In_ HWND hWnd,
02047   _In_ u_int wMsg,
02048   _In_ int number,
02049   _Out_writes_bytes_(buflen) char FAR *buf,
02050   _In_ int buflen);
02051 
02052 WINSOCK_API_LINKAGE
02053 HANDLE
02054 WSAAPI
02055 WSAAsyncGetHostByName(
02056   _In_ HWND hWnd,
02057   _In_ u_int wMsg,
02058   _In_z_ const char FAR *name,
02059   _Out_writes_bytes_(buflen) char FAR *buf,
02060   _In_ int buflen);
02061 
02062 WINSOCK_API_LINKAGE
02063 HANDLE
02064 WSAAPI
02065 WSAAsyncGetHostByAddr(
02066   _In_ HWND hWnd,
02067   _In_ u_int wMsg,
02068   _In_reads_bytes_(len) const char FAR *addr,
02069   _In_ int len,
02070   _In_ int type,
02071   _Out_writes_bytes_(buflen) char FAR *buf,
02072   _In_ int buflen);
02073 
02074 WINSOCK_API_LINKAGE
02075 int
02076 WSAAPI
02077 WSACancelAsyncRequest(
02078   _In_ HANDLE hAsyncTaskHandle);
02079 
02080 WINSOCK_API_LINKAGE
02081 int
02082 WSAAPI
02083 WSAAsyncSelect(
02084   _In_ SOCKET s,
02085   _In_ HWND hWnd,
02086   _In_ u_int wMsg,
02087   _In_ long lEvent);
02088 
02089 _Must_inspect_result_
02090 WINSOCK_API_LINKAGE
02091 SOCKET
02092 WSAAPI
02093 WSAAccept(
02094   _In_ SOCKET s,
02095   _Out_writes_bytes_to_opt_(*addrlen,*addrlen) struct sockaddr FAR *addr,
02096   _Inout_opt_ LPINT addrlen,
02097   _In_opt_ LPCONDITIONPROC lpfnCondition,
02098   _In_opt_ DWORD_PTR dwCallbackData);
02099 
02100 WINSOCK_API_LINKAGE
02101 BOOL
02102 WSAAPI
02103 WSACloseEvent(
02104   _In_ WSAEVENT hEvent);
02105 
02106 WINSOCK_API_LINKAGE
02107 int
02108 WSAAPI
02109 WSAConnect(
02110   _In_ SOCKET s,
02111   _In_reads_bytes_(namelen) const struct sockaddr FAR *name,
02112   _In_ int namelen,
02113   _In_opt_ LPWSABUF lpCallerData,
02114   _Out_opt_ LPWSABUF lpCalleeData,
02115   _In_opt_ LPQOS lpSQOS,
02116   _In_opt_ LPQOS lpGQOS);
02117 
02118 #ifdef UNICODE
02119 #define WSAConnectByName WSAConnectByNameW
02120 #else
02121 #define WSAConnectByName WSAConnectByNameA
02122 #endif
02123 
02124 BOOL
02125 PASCAL
02126 WSAConnectByNameW(
02127   _In_ SOCKET s,
02128   _In_ LPWSTR nodename,
02129   _In_ LPWSTR servicename,
02130   _Inout_opt_ LPDWORD LocalAddressLength,
02131   _Out_writes_bytes_to_opt_(*LocalAddressLength,*LocalAddressLength) LPSOCKADDR LocalAddress,
02132   _Inout_opt_ LPDWORD RemoteAddressLength,
02133   _Out_writes_bytes_to_opt_(*RemoteAddressLength,*RemoteAddressLength) LPSOCKADDR RemoteAddress,
02134   _In_opt_ const struct timeval *timeout,
02135   _Reserved_ LPWSAOVERLAPPED Reserved);
02136 
02137 BOOL
02138 PASCAL
02139 WSAConnectByNameA(
02140   _In_ SOCKET s,
02141   _In_ LPCSTR nodename,
02142   _In_ LPCSTR servicename,
02143   _Inout_opt_ LPDWORD LocalAddressLength,
02144   _Out_writes_bytes_to_opt_(*LocalAddressLength,*LocalAddressLength) LPSOCKADDR LocalAddress,
02145   _Inout_opt_ LPDWORD RemoteAddressLength,
02146   _Out_writes_bytes_to_opt_(*RemoteAddressLength,*RemoteAddressLength) LPSOCKADDR RemoteAddress,
02147   _In_opt_ const struct timeval *timeout,
02148   _Reserved_ LPWSAOVERLAPPED Reserved);
02149 
02150 BOOL
02151 PASCAL
02152 WSAConnectByList(
02153   _In_ SOCKET s,
02154   _In_ PSOCKET_ADDRESS_LIST SocketAddress,
02155   _Inout_opt_ LPDWORD LocalAddressLength,
02156   _Out_writes_bytes_to_opt_(*LocalAddressLength,*LocalAddressLength) LPSOCKADDR LocalAddress,
02157   _Inout_opt_ LPDWORD RemoteAddressLength,
02158   _Out_writes_bytes_to_opt_(*RemoteAddressLength,*RemoteAddressLength) LPSOCKADDR RemoteAddress,
02159   _In_opt_ const struct timeval *timeout,
02160   _Reserved_ LPWSAOVERLAPPED Reserved);
02161 
02162 WINSOCK_API_LINKAGE
02163 WSAEVENT
02164 WSAAPI
02165 WSACreateEvent(void);
02166 
02167 WINSOCK_API_LINKAGE
02168 int
02169 WSAAPI
02170 WSADuplicateSocketA(
02171   _In_ SOCKET s,
02172   _In_ DWORD dwProcessId,
02173   _Out_ LPWSAPROTOCOL_INFOA lpProtocolInfo);
02174 
02175 WINSOCK_API_LINKAGE
02176 int
02177 WSAAPI
02178 WSADuplicateSocketW(
02179   _In_ SOCKET s,
02180   _In_ DWORD dwProcessId,
02181   _Out_ LPWSAPROTOCOL_INFOW lpProtocolInfo);
02182 
02183 #ifdef UNICODE
02184 #define WSADuplicateSocket WSADuplicateSocketW
02185 #else
02186 #define WSADuplicateSocket WSADuplicateSocketA
02187 #endif
02188 
02189 WINSOCK_API_LINKAGE
02190 int
02191 WSAAPI
02192 WSAEnumNetworkEvents(
02193   _In_ SOCKET s,
02194   _In_ WSAEVENT hEventObject,
02195   _Out_ LPWSANETWORKEVENTS lpNetworkEvents);
02196 
02197 WINSOCK_API_LINKAGE
02198 int
02199 WSAAPI
02200 WSAEnumProtocolsA(
02201   _In_opt_ LPINT lpiProtocols,
02202   _Out_writes_bytes_to_opt_(*lpdwBufferLength,*lpdwBufferLength) LPWSAPROTOCOL_INFOA lpProtocolBuffer,
02203   _Inout_ LPDWORD lpdwBufferLength);
02204 
02205 WINSOCK_API_LINKAGE
02206 int
02207 WSAAPI
02208 WSAEnumProtocolsW(
02209   _In_opt_ LPINT lpiProtocols,
02210   _Out_writes_bytes_to_opt_(*lpdwBufferLength,*lpdwBufferLength) LPWSAPROTOCOL_INFOW lpProtocolBuffer,
02211   _Inout_ LPDWORD lpdwBufferLength);
02212 
02213 #ifdef UNICODE
02214 #define WSAEnumProtocols WSAEnumProtocolsW
02215 #else
02216 #define WSAEnumProtocols WSAEnumProtocolsA
02217 #endif
02218 
02219 WINSOCK_API_LINKAGE
02220 int
02221 WSAAPI
02222 WSAEventSelect(
02223   _In_ SOCKET s,
02224   _In_opt_ WSAEVENT hEventObject,
02225   _In_ long lNetworkEvents);
02226 
02227 WINSOCK_API_LINKAGE
02228 BOOL
02229 WSAAPI
02230 WSAGetOverlappedResult(
02231   _In_ SOCKET s,
02232   _In_ LPWSAOVERLAPPED lpOverlapped,
02233   _Out_ LPDWORD lpcbTransfer,
02234   _In_ BOOL fWait,
02235   _Out_ LPDWORD lpdwFlags);
02236 
02237 WINSOCK_API_LINKAGE
02238 BOOL
02239 WSAAPI
02240 WSAGetQOSByName(
02241   _In_ SOCKET s,
02242   _In_ LPWSABUF lpQOSName,
02243   _Out_ LPQOS lpQOS);
02244 
02245 WINSOCK_API_LINKAGE
02246 int
02247 WSAAPI
02248 WSAHtonl(
02249   _In_ SOCKET s,
02250   _In_ u_long hostlong,
02251   _Out_ u_long FAR *lpnetlong);
02252 
02253 WINSOCK_API_LINKAGE
02254 int
02255 WSAAPI
02256 WSAHtons(
02257   _In_ SOCKET s,
02258   _In_ u_short hostshort,
02259   _Out_ u_short FAR *lpnetshort);
02260 
02261 WINSOCK_API_LINKAGE
02262 int
02263 WSAAPI
02264 WSAIoctl(
02265   _In_ SOCKET s,
02266   _In_ DWORD dwIoControlCode,
02267   _In_reads_bytes_opt_(cbInBuffer) LPVOID lpvInBuffer,
02268   _In_ DWORD cbInBuffer,
02269   _Out_writes_bytes_to_opt_(cbOutBuffer, *lpcbBytesReturned) LPVOID lpvOutBuffer,
02270   _In_ DWORD cbOutBuffer,
02271   _Out_ LPDWORD lpcbBytesReturned,
02272   _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
02273   _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
02274 
02275 WINSOCK_API_LINKAGE
02276 SOCKET
02277 WSAAPI
02278 WSAJoinLeaf(
02279   _In_ SOCKET s,
02280   _In_reads_bytes_(namelen) const struct sockaddr FAR *name,
02281   _In_ int namelen,
02282   _In_opt_ LPWSABUF lpCallerData,
02283   _Out_opt_ LPWSABUF lpCalleeData,
02284   _In_opt_ LPQOS lpSQOS,
02285   _In_opt_ LPQOS lpGQOS,
02286   _In_ DWORD dwFlags);
02287 
02288 WINSOCK_API_LINKAGE
02289 int
02290 WSAAPI
02291 WSANtohl(
02292   _In_ SOCKET s,
02293   _In_ u_long netlong,
02294   _Out_ u_long FAR *lphostlong);
02295 
02296 WINSOCK_API_LINKAGE
02297 int
02298 WSAAPI
02299 WSANtohs(
02300   _In_ SOCKET s,
02301   _In_ u_short netshort,
02302   _Out_ u_short FAR *lphostshort);
02303 
02304 WINSOCK_API_LINKAGE
02305 int
02306 WSAAPI
02307 WSARecv(
02308   _In_ SOCKET s,
02309   _In_reads_(dwBufferCount) __out_data_source(NETWORK) LPWSABUF lpBuffers,
02310   _In_ DWORD dwBufferCount,
02311   _Out_opt_ LPDWORD lpNumberOfBytesRecvd,
02312   _Inout_ LPDWORD lpFlags,
02313   _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
02314   _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
02315 
02316 WINSOCK_API_LINKAGE
02317 int
02318 WSAAPI
02319 WSARecvDisconnect(
02320   _In_ SOCKET s,
02321   _In_opt_ __out_data_source(NETWORK) LPWSABUF lpInboundDisconnectData);
02322 
02323 WINSOCK_API_LINKAGE
02324 int
02325 WSAAPI
02326 WSARecvFrom(
02327   _In_ SOCKET s,
02328   _In_reads_(dwBufferCount) __out_data_source(NETWORK) LPWSABUF lpBuffers,
02329   _In_ DWORD dwBufferCount,
02330   _Out_opt_ LPDWORD lpNumberOfBytesRecvd,
02331   _Inout_ LPDWORD lpFlags,
02332   _Out_writes_bytes_to_opt_(*lpFromlen,*lpFromlen) struct sockaddr FAR *lpFrom,
02333   _Inout_opt_ LPINT lpFromlen,
02334   _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
02335   _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
02336 
02337 WINSOCK_API_LINKAGE
02338 BOOL
02339 WSAAPI
02340 WSAResetEvent(
02341   _In_ WSAEVENT hEvent);
02342 
02343 WINSOCK_API_LINKAGE
02344 int
02345 WSAAPI
02346 WSASendDisconnect(
02347   _In_ SOCKET s,
02348   _In_opt_ LPWSABUF lpOutboundDisconnectData);
02349 
02350 WINSOCK_API_LINKAGE
02351 int
02352 WSAAPI
02353 WSASend(
02354   _In_ SOCKET s,
02355   _In_reads_(dwBufferCount) LPWSABUF lpBuffers,
02356   _In_ DWORD dwBufferCount,
02357   _Out_opt_ LPDWORD lpNumberOfBytesSent,
02358   _In_ DWORD dwFlags,
02359   _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
02360   _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
02361 
02362 WINSOCK_API_LINKAGE
02363 int
02364 WSAAPI
02365 WSASendTo(
02366   _In_ SOCKET s,
02367   _In_reads_(dwBufferCount) LPWSABUF lpBuffers,
02368   _In_ DWORD dwBufferCount,
02369   _Out_opt_ LPDWORD lpNumberOfBytesSent,
02370   _In_ DWORD dwFlags,
02371   _In_reads_bytes_opt_(iTolen) const struct sockaddr FAR *lpTo,
02372   _In_ int iTolen,
02373   _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
02374   _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
02375 
02376 WINSOCK_API_LINKAGE
02377 BOOL
02378 WSAAPI
02379 WSASetEvent(
02380   _In_ WSAEVENT hEvent);
02381 
02382 _Must_inspect_result_
02383 WINSOCK_API_LINKAGE
02384 SOCKET
02385 WSAAPI
02386 WSASocketA(
02387   _In_ int af,
02388   _In_ int type,
02389   _In_ int protocol,
02390   _In_opt_ LPWSAPROTOCOL_INFOA lpProtocolInfo,
02391   _In_ GROUP g,
02392   _In_ DWORD dwFlags);
02393 
02394 _Must_inspect_result_
02395 WINSOCK_API_LINKAGE
02396 SOCKET
02397 WSAAPI
02398 WSASocketW(
02399   _In_ int af,
02400   _In_ int type,
02401   _In_ int protocol,
02402   _In_opt_ LPWSAPROTOCOL_INFOW lpProtocolInfo,
02403   _In_ GROUP g,
02404   _In_ DWORD dwFlags);
02405 
02406 #ifdef UNICODE
02407 #define WSASocket WSASocketW
02408 #else
02409 #define WSASocket WSASocketA
02410 #endif
02411 
02412 WINSOCK_API_LINKAGE
02413 DWORD
02414 WSAAPI
02415 WSAWaitForMultipleEvents(
02416   _In_ DWORD cEvents,
02417   _In_reads_(cEvents) const WSAEVENT FAR *lphEvents,
02418   _In_ BOOL fWaitAll,
02419   _In_ DWORD dwTimeout,
02420   _In_ BOOL fAlertable);
02421 
02422 WINSOCK_API_LINKAGE
02423 INT
02424 WSAAPI
02425 WSAAddressToStringA(
02426   _In_reads_bytes_(dwAddressLength) LPSOCKADDR lpsaAddress,
02427   _In_ DWORD dwAddressLength,
02428   _In_opt_ LPWSAPROTOCOL_INFOA lpProtocolInfo,
02429   _Out_writes_to_(*lpdwAddressStringLength,*lpdwAddressStringLength) LPSTR lpszAddressString,
02430   _Inout_ LPDWORD lpdwAddressStringLength);
02431 
02432 WINSOCK_API_LINKAGE
02433 INT
02434 WSAAPI
02435 WSAAddressToStringW(
02436   _In_reads_bytes_(dwAddressLength) LPSOCKADDR lpsaAddress,
02437   _In_ DWORD dwAddressLength,
02438   _In_opt_ LPWSAPROTOCOL_INFOW lpProtocolInfo,
02439   _Out_writes_to_(*lpdwAddressStringLength,*lpdwAddressStringLength) LPWSTR lpszAddressString,
02440   _Inout_ LPDWORD lpdwAddressStringLength);
02441 
02442 #ifdef UNICODE
02443 #define WSAAddressToString WSAAddressToStringW
02444 #else
02445 #define WSAAddressToString WSAAddressToStringA
02446 #endif
02447 
02448 WINSOCK_API_LINKAGE
02449 INT
02450 WSAAPI
02451 WSAStringToAddressA(
02452   _In_ LPSTR AddressString,
02453   _In_ INT AddressFamily,
02454   _In_opt_ LPWSAPROTOCOL_INFOA lpProtocolInfo,
02455   _Out_writes_bytes_to_(*lpAddressLength,*lpAddressLength) LPSOCKADDR lpAddress,
02456   _Inout_ LPINT lpAddressLength);
02457 
02458 WINSOCK_API_LINKAGE
02459 INT
02460 WSAAPI
02461 WSAStringToAddressW(
02462   _In_ LPWSTR AddressString,
02463   _In_ INT AddressFamily,
02464   _In_opt_ LPWSAPROTOCOL_INFOW lpProtocolInfo,
02465   _Out_writes_bytes_to_(*lpAddressLength,*lpAddressLength) LPSOCKADDR lpAddress,
02466   _Inout_ LPINT lpAddressLength);
02467 
02468 #ifdef UNICODE
02469 #define WSAStringToAddress WSAStringToAddressW
02470 #else
02471 #define WSAStringToAddress WSAStringToAddressA
02472 #endif
02473 
02474 WINSOCK_API_LINKAGE
02475 INT
02476 WSAAPI
02477 WSALookupServiceBeginA(
02478   _In_ LPWSAQUERYSETA lpqsRestrictions,
02479   _In_ DWORD dwControlFlags,
02480   _Out_ LPHANDLE lphLookup);
02481 
02482 WINSOCK_API_LINKAGE
02483 INT
02484 WSAAPI
02485 WSALookupServiceBeginW(
02486   _In_ LPWSAQUERYSETW lpqsRestrictions,
02487   _In_ DWORD dwControlFlags,
02488   _Out_ LPHANDLE lphLookup);
02489 
02490 #ifdef UNICODE
02491 #define WSALookupServiceBegin WSALookupServiceBeginW
02492 #else
02493 #define WSALookupServiceBegin WSALookupServiceBeginA
02494 #endif
02495 
02496 WINSOCK_API_LINKAGE
02497 INT
02498 WSAAPI
02499 WSALookupServiceNextA(
02500   _In_ HANDLE hLookup,
02501   _In_ DWORD dwControlFlags,
02502   _Inout_ LPDWORD lpdwBufferLength,
02503   _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPWSAQUERYSETA lpqsResults);
02504 
02505 WINSOCK_API_LINKAGE
02506 INT
02507 WSAAPI
02508 WSALookupServiceNextW(
02509   _In_ HANDLE hLookup,
02510   _In_ DWORD dwControlFlags,
02511   _Inout_ LPDWORD lpdwBufferLength,
02512   _Out_writes_bytes_to_opt_(*lpdwBufferLength,*lpdwBufferLength) LPWSAQUERYSETW lpqsResults);
02513 
02514 #ifdef UNICODE
02515 #define WSALookupServiceNext WSALookupServiceNextW
02516 #else
02517 #define WSALookupServiceNext WSALookupServiceNextA
02518 #endif
02519 
02520 WINSOCK_API_LINKAGE
02521 INT
02522 WSAAPI
02523 WSALookupServiceEnd(
02524   _In_ HANDLE hLookup);
02525 
02526 WINSOCK_API_LINKAGE
02527 INT
02528 WSAAPI
02529 WSAInstallServiceClassA(
02530   _In_ LPWSASERVICECLASSINFOA lpServiceClassInfo);
02531 
02532 WINSOCK_API_LINKAGE
02533 INT
02534 WSAAPI
02535 WSAInstallServiceClassW(
02536   _In_ LPWSASERVICECLASSINFOW lpServiceClassInfo);
02537 
02538 #ifdef UNICODE
02539 #define WSAInstallServiceClass WSAInstallServiceClassW
02540 #else
02541 #define WSAInstallServiceClass WSAInstallServiceClassA
02542 #endif
02543 
02544 WINSOCK_API_LINKAGE
02545 INT
02546 WSAAPI
02547 WSARemoveServiceClass(
02548   _In_ LPGUID lpServiceClassId);
02549 
02550 WINSOCK_API_LINKAGE
02551 INT
02552 WSAAPI
02553 WSAGetServiceClassInfoA(
02554   _In_ LPGUID lpProviderId,
02555   _In_ LPGUID lpServiceClassId,
02556   _Inout_ LPDWORD lpdwBufSize,
02557   _Out_writes_bytes_to_(*lpdwBufSize,*lpdwBufSize) LPWSASERVICECLASSINFOA lpServiceClassInfo);
02558 
02559 WINSOCK_API_LINKAGE
02560 INT
02561 WSAAPI
02562 WSAGetServiceClassInfoW(
02563   _In_ LPGUID lpProviderId,
02564   _In_ LPGUID lpServiceClassId,
02565   _Inout_ LPDWORD lpdwBufSize,
02566   _Out_writes_bytes_to_(*lpdwBufSize,*lpdwBufSize) LPWSASERVICECLASSINFOW lpServiceClassInfo);
02567 
02568 #ifdef UNICODE
02569 #define WSAGetServiceClassInfo WSAGetServiceClassInfoW
02570 #else
02571 #define WSAGetServiceClassInfo WSAGetServiceClassInfoA
02572 #endif
02573 
02574 WINSOCK_API_LINKAGE
02575 INT
02576 WSAAPI
02577 WSAEnumNameSpaceProvidersA(
02578   _Inout_ LPDWORD lpdwBufferLength,
02579   _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPWSANAMESPACE_INFOA lpnspBuffer);
02580 
02581 WINSOCK_API_LINKAGE
02582 INT
02583 WSAAPI
02584 WSAEnumNameSpaceProvidersW(
02585   _Inout_ LPDWORD lpdwBufferLength,
02586   _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPWSANAMESPACE_INFOW lpnspBuffer);
02587 
02588 #ifdef UNICODE
02589 #define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
02590 #else
02591 #define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA
02592 #endif
02593 
02594 _Success_(return == 0)
02595 WINSOCK_API_LINKAGE
02596 INT
02597 WSAAPI
02598 WSAGetServiceClassNameByClassIdA(
02599   _In_ LPGUID lpServiceClassId,
02600   _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPSTR lpszServiceClassName,
02601   _Inout_ LPDWORD lpdwBufferLength);
02602 
02603 _Success_(return == 0)
02604 WINSOCK_API_LINKAGE
02605 INT
02606 WSAAPI
02607 WSAGetServiceClassNameByClassIdW(
02608   _In_ LPGUID lpServiceClassId,
02609   _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPWSTR lpszServiceClassName,
02610   _Inout_ LPDWORD lpdwBufferLength);
02611 
02612 #ifdef UNICODE
02613 #define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW
02614 #else
02615 #define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA
02616 #endif
02617 
02618 WINSOCK_API_LINKAGE
02619 INT
02620 WSAAPI
02621 WSASetServiceA(
02622   _In_ LPWSAQUERYSETA lpqsRegInfo,
02623   _In_ WSAESETSERVICEOP essoperation,
02624   _In_ DWORD dwControlFlags);
02625 
02626 WINSOCK_API_LINKAGE
02627 INT
02628 WSAAPI
02629 WSASetServiceW(
02630   _In_ LPWSAQUERYSETW lpqsRegInfo,
02631   _In_ WSAESETSERVICEOP essoperation,
02632   _In_ DWORD dwControlFlags);
02633 
02634 #ifdef UNICODE
02635 #define WSASetService WSASetServiceW
02636 #else
02637 #define WSASetService WSASetServiceA
02638 #endif
02639 
02640 WINSOCK_API_LINKAGE
02641 INT
02642 WSAAPI
02643 WSAProviderConfigChange(
02644   _Inout_ LPHANDLE lpNotificationHandle,
02645   _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
02646   _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
02647 
02648 #if(_WIN32_WINNT >= 0x0501)
02649 WINSOCK_API_LINKAGE
02650 INT
02651 WSAAPI
02652 WSANSPIoctl(
02653   _In_ HANDLE hLookup,
02654   _In_ DWORD dwControlCode,
02655   _In_reads_bytes_opt_(cbInBuffer) LPVOID lpvInBuffer,
02656   _In_ DWORD cbInBuffer,
02657   _Out_writes_bytes_to_opt_(cbOutBuffer, *lpcbBytesReturned) LPVOID lpvOutBuffer,
02658   _In_ DWORD cbOutBuffer,
02659   _Out_ LPDWORD lpcbBytesReturned,
02660   _In_opt_ LPWSACOMPLETION lpCompletion);
02661 #endif /* (_WIN32_WINNT >= 0x0501) */
02662 
02663 #if(_WIN32_WINNT >= 0x0600)
02664 
02665 WINSOCK_API_LINKAGE
02666 int
02667 WSAAPI
02668 WSASendMsg(
02669   _In_ SOCKET Handle,
02670   _In_ LPWSAMSG lpMsg,
02671   _In_ DWORD dwFlags,
02672   _Out_opt_ LPDWORD lpNumberOfBytesSent,
02673   _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
02674   _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
02675 
02676 WINSOCK_API_LINKAGE
02677 INT
02678 WSAAPI
02679 WSAEnumNameSpaceProvidersExA(
02680   _Inout_ LPDWORD lpdwBufferLength,
02681   _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPWSANAMESPACE_INFOEXA lpnspBuffer);
02682 
02683 WINSOCK_API_LINKAGE
02684 INT
02685 WSAAPI
02686 WSAEnumNameSpaceProvidersExW(
02687   _Inout_ LPDWORD lpdwBufferLength,
02688   _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPWSANAMESPACE_INFOEXW lpnspBuffer);
02689 
02690 #ifdef UNICODE
02691 #define WSAEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExW
02692 #else
02693 #define WSAEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExA
02694 #endif
02695 
02696 WINSOCK_API_LINKAGE
02697 int
02698 WSAAPI
02699 WSAPoll(
02700   _Inout_ LPWSAPOLLFD fdArray,
02701   _In_ ULONG fds,
02702   _In_ INT timeout);
02703 
02704 #endif /* (_WIN32_WINNT >= 0x0600) */
02705 
02706 #endif /* INCL_WINSOCK_API_PROTOTYPES */
02707 
02708 typedef struct sockaddr_in FAR *LPSOCKADDR_IN;
02709 typedef struct linger LINGER;
02710 typedef struct linger *PLINGER;
02711 typedef struct linger FAR *LPLINGER;
02712 typedef struct fd_set FD_SET;
02713 typedef struct fd_set *PFD_SET;
02714 typedef struct fd_set FAR *LPFD_SET;
02715 typedef struct hostent HOSTENT;
02716 typedef struct hostent *PHOSTENT;
02717 typedef struct hostent FAR *LPHOSTENT;
02718 typedef struct servent SERVENT;
02719 typedef struct servent *PSERVENT;
02720 typedef struct servent FAR *LPSERVENT;
02721 typedef struct protoent PROTOENT;
02722 typedef struct protoent *PPROTOENT;
02723 typedef struct protoent FAR *LPPROTOENT;
02724 typedef struct timeval TIMEVAL;
02725 typedef struct timeval *PTIMEVAL;
02726 typedef struct timeval FAR *LPTIMEVAL;
02727 
02728 #define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error)
02729 #define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error)
02730 #define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam)
02731 #define WSAGETASYNCERROR(lParam) HIWORD(lParam)
02732 #define WSAGETSELECTEVENT(lParam) LOWORD(lParam)
02733 #define WSAGETSELECTERROR(lParam) HIWORD(lParam)
02734 
02735 #ifdef __cplusplus
02736 }
02737 #endif
02738 
02739 #ifdef _NEED_POPPACK
02740 #include <poppack.h>
02741 #endif
02742 
02743 /* FIXME : 
02744 #if(_WIN32_WINNT >= 0x0501)
02745 #ifdef IPV6STRICT
02746 #include <wsipv6ok.h>
02747 #endif
02748 #endif */
02749 
02750 #endif /* !(defined _WINSOCK2API_ || defined _WINSOCKAPI_) */

Generated on Sun May 27 2012 04:32:49 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.