Files
reactos/reactos/include/winsock2.h
T
Casper Hornstrup 05a9cdcf10 2003-06-01 Casper S. Hornstrup <[email protected]>
Changes for compiling with w32api

	* include/ntos/zwtypes.h (SYSTEM_MODULES): Rename to
	SYSTEM_MODULE_INFORMATION. Match w32api structure fieldnames.
	(SYSTEM_MODULE_INFORMATION):  Rename to SYSTEM_MODULE_INFORMATION_ENTRY.
	Match w32api structure fieldnames.
	* include/epsapi.h: Include <ntos.h>.
	(PSYSMOD_ENUM_ROUTINE, PsaCaptureSystemModules, PsaWalkSystemModules,
	PsaWalkFirstSystemModule, PsaWalkNextSystemModule): Use
	SYSTEM_MODULE_INFORMATION_ENTRY and SYSTEM_MODULE_INFORMATION structures.
	* lib/epsapi/enum/drivers.c: Use SYSTEM_MODULE_INFORMATION_ENTRY and
	SYSTEM_MODULE_INFORMATION structures.
	* lib/psapi/misc/win32.c: Ditto.
	* ntoskrnl/ldr/loader.c: Ditto.
	* lib/epsapi/enum/modules.c: Include <ntos.h>.
	* lib/ntdll/rtl/thread.c: Ditto.
	* lib/rosrtl/thread/context.c: Ditto.
	* lib/rosrtl/thread/create.c: Ditto.
	* lib/rosrtl/thread/stack.c: Ditto.
	* include/ntos.h: Include "rosrtl/thread.h".
	* include/structs.h (_BLOB_DEFINED): Rename to __BLOB_T_DEFINED.
	* include/winsock2.h: Ditto.
	* include/ntos/obtypes.h (POBJECT_TYPE): Make a pointer to struct
	_OBJECT_TYPE.
	(PHANDLE_TABLE): Make a pointer to struct _HANDLE_TABLE.
	* ntoskrnl/include/internal/mm.h (PSECTION_OBJECT): Make a pointer to
	struct _SECTION_OBJECT.
	* ntoskrnl/include/internal/i386/ps.h (PKPCR): Make a pointer to struct
	_KPCR.

svn path=/trunk/; revision=4807
2003-06-01 14:59:02 +00:00

1573 lines
36 KiB
C

/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Winsock 2 DLL
* FILE: include/winsock2.h
* PURPOSE: Header file for the WinSock 2 DLL
* and WinSock 2 applications
* DEFINES: UNICODE - Use unicode prototypes
* FD_SETSIZE - Maximum size of an FD_SET (default is 64)
*/
#ifndef __WINSOCK2_H
#define __WINSOCK2_H
#include <windows.h>
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
#define WSAAPI STDCALL
#if 0
typedef struct _GUID {
ULONG Data1;
USHORT Data2;
USHORT Data3;
UCHAR Data4[8];
} GUID, *PGUID, *LPGUID;
#endif
typedef UINT SOCKET;
#define INVALID_SOCKET ((SOCKET)~0)
#define SOCKET_ERROR (-1)
/* Socket types */
#define SOCK_STREAM 1
#define SOCK_DGRAM 2
#define SOCK_RAW 3
#define SOCK_RDM 4
#define SOCK_SEQPACKET 5
/* Per socket flags */
#define SO_DEBUG 0x0001
#define SO_ACCEPTCONN 0x0002
#define SO_REUSEADDR 0x0004
#define SO_KEEPALIVE 0x0008
#define SO_DONTROUTE 0x0010
#define SO_BROADCAST 0x0020
#define SO_USELOOPBACK 0x0040
#define SO_LINGER 0x0080
#define SO_OOBINLINE 0x0100
#define SO_DONTLINGER (UINT)(~SO_LINGER)
#define SO_SNDBUF 0x1001
#define SO_RCVBUF 0x1002
#define SO_SNDLOWAT 0x1003
#define SO_RCVLOWAT 0x1004
#define SO_SNDTIMEO 0x1005
#define SO_RCVTIMEO 0x1006
#define SO_ERROR 0x1007
#define SO_TYPE 0x1008
/* Address families */
#define AF_UNSPEC 0
#define AF_UNIX 1
#define AF_INET 2
#define AF_IMPLINK 3
#define AF_PUP 4
#define AF_CHAOS 5
#define AF_NS 6
#define AF_ISO 7
#define AF_OSI AF_ISO
#define AF_ECMA 8
#define AF_DATAKIT 9
#define AF_CCITT 10
#define AF_SNA 11
#define AF_DECnet 12
#define AF_DLI 13
#define AF_LAT 14
#define AF_HYLINK 15
#define AF_APPLETALK 16
#define AF_NETBIOS 17
#define AF_MAX 18
/* Protocol families, same as address families */
#define PF_UNSPEC AF_UNSPEC
#define PF_UNIX AF_UNIX
#define PF_INET AF_INET
#define PF_IMPLINK AF_IMPLINK
#define PF_PUP AF_PUP
#define PF_CHAOS AF_CHAOS
#define PF_NS AF_NS
#define PF_ISO AF_ISO
#define PF_OSI AF_OSI
#define PF_ECMA AF_ECMA
#define PF_DATAKIT AF_DATAKIT
#define PF_CCITT AF_CCITT
#define PF_SNA AF_SNA
#define PF_DECnet AF_DECnet
#define PF_DLI AF_DLI
#define PF_LAT AF_LAT
#define PF_HYLINK AF_HYLINK
#define PF_APPLETALK AF_APPLETALK
#define PF_MAX AF_MAX
#define SOL_SOCKET 0xffff
#define SOMAXCONN 5
#define MSG_OOB 0x1
#define MSG_PEEK 0x2
#define MSG_DONTROUTE 0x4
#define MSG_MAXIOVLEN 16
#define FD_READ 0x01
#define FD_WRITE 0x02
#define FD_OOB 0x04
#define FD_ACCEPT 0x08
#define FD_CONNECT 0x10
#define FD_CLOSE 0x20
#define FD_MAX_EVENTS 6
#define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1)
/* Error codes */
#define WSABASEERR 10000
#define WSAEINTR (WSABASEERR+4)
#define WSAEBADF (WSABASEERR+9)
#define WSAEACCES (WSABASEERR+13)
#define WSAEFAULT (WSABASEERR+14)
#define WSAEINVAL (WSABASEERR+22)
#define WSAEMFILE (WSABASEERR+24)
#define WSAEWOULDBLOCK (WSABASEERR+35)
#define WSAEINPROGRESS (WSABASEERR+36)
#define WSAEALREADY (WSABASEERR+37)
#define WSAENOTSOCK (WSABASEERR+38)
#define WSAEDESTADDRREQ (WSABASEERR+39)
#define WSAEMSGSIZE (WSABASEERR+40)
#define WSAEPROTOTYPE (WSABASEERR+41)
#define WSAENOPROTOOPT (WSABASEERR+42)
#define WSAEPROTONOSUPPORT (WSABASEERR+43)
#define WSAESOCKTNOSUPPORT (WSABASEERR+44)
#define WSAEOPNOTSUPP (WSABASEERR+45)
#define WSAEPFNOSUPPORT (WSABASEERR+46)
#define WSAEAFNOSUPPORT (WSABASEERR+47)
#define WSAEADDRINUSE (WSABASEERR+48)
#define WSAEADDRNOTAVAIL (WSABASEERR+49)
#define WSAENETDOWN (WSABASEERR+50)
#define WSAENETUNREACH (WSABASEERR+51)
#define WSAENETRESET (WSABASEERR+52)
#define WSAECONNABORTED (WSABASEERR+53)
#define WSAECONNRESET (WSABASEERR+54)
#define WSAENOBUFS (WSABASEERR+55)
#define WSAEISCONN (WSABASEERR+56)
#define WSAENOTCONN (WSABASEERR+57)
#define WSAESHUTDOWN (WSABASEERR+58)
#define WSAETOOMANYREFS (WSABASEERR+59)
#define WSAETIMEDOUT (WSABASEERR+60)
#define WSAECONNREFUSED (WSABASEERR+61)
#define WSAELOOP (WSABASEERR+62)
#define WSAENAMETOOLONG (WSABASEERR+63)
#define WSAEHOSTDOWN (WSABASEERR+64)
#define WSAEHOSTUNREACH (WSABASEERR+65)
#define WSAENOTEMPTY (WSABASEERR+66)
#define WSAEUSERS (WSABASEERR+68)
#define WSAEDQUOT (WSABASEERR+69)
#define WSAESTALE (WSABASEERR+70)
#define WSAEREMOTE (WSABASEERR+71)
/* Extended Windows Sockets error codes */
#define WSASYSNOTREADY (WSABASEERR+91)
#define WSAVERNOTSUPPORTED (WSABASEERR+92)
#define WSANOTINITIALISED (WSABASEERR+93)
#define WSAEDISCON (WSABASEERR+101)
#define WSAENOMORE (WSABASEERR+102)
#define WSAECANCELLED (WSABASEERR+103)
#define WSAEINVALIDPROCTABLE (WSABASEERR+104)
#define WSAEINVALIDPROVIDER (WSABASEERR+105)
#define WSAEPROVIDERFAILEDINIT (WSABASEERR+106)
#define WSASYSCALLFAILURE (WSABASEERR+107)
#define WSASERVICE_NOT_FOUND (WSABASEERR+108)
#define WSATYPE_NOT_FOUND (WSABASEERR+109)
#define WSA_E_NO_MORE (WSABASEERR+110)
#define WSA_E_CANCELLED (WSABASEERR+111)
#define WSAEREFUSED (WSABASEERR+112)
#define WSAHOST_NOT_FOUND (WSABASEERR+1001)
#define WSATRY_AGAIN (WSABASEERR+1002)
#define WSANO_RECOVERY (WSABASEERR+1003)
#define WSANO_DATA (WSABASEERR+1004)
#define WSANO_ADDRESS WSANO_DATA
#define WSAEVENT HANDLE
#define LPWSAEVENT LPHANDLE
#define WSA_IO_PENDING (ERROR_IO_PENDING)
#define WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE)
#define WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE)
#define WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER)
#define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY)
#define WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED)
#define WSA_INVALID_EVENT ((WSAEVENT)NULL)
#define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
#define WSA_WAIT_FAILED ((DWORD)-1L)
#define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0)
#define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION)
#define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT)
#define WSA_INFINITE (INFINITE)
#define IOCPARM_MASK 0x7f
#define IOC_VOID 0x20000000
#define IOC_OUT 0x40000000
#define IOC_IN 0x80000000
#define IOC_INOUT (IOC_IN|IOC_OUT)
#define _IO(x, y) (IOC_VOID|(x<<8)|y)
#define _IOR(x, y, t) (IOC_OUT|(((LONG)sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y)
#define _IOW(x, y, t) (IOC_IN|(((LONG)sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y)
#define FIONREAD _IOR('f', 127, ULONG)
#define FIONBIO _IOW('f', 126, ULONG)
#define FIOASYNC _IOW('f', 125, ULONG)
/* Socket I/O controls */
#define SIOCSHIWAT _IOW('s', 0, ULONG)
#define SIOCGHIWAT _IOR('s', 1, ULONG)
#define SIOCSLOWAT _IOW('s', 2, ULONG)
#define SIOCGLOWAT _IOR('s', 3, ULONG)
#define SIOCATMARK _IOR('s', 7, ULONG)
struct in_addr {
union {
struct { UCHAR s_b1, s_b2,s_b3,s_b4; } S_un_b;
struct { USHORT s_w1,s_w2; } S_un_w;
ULONG S_addr;
} S_un;
#define s_addr S_un.S_addr
#define s_host S_un.S_un_b.s_b2
#define s_net S_un.S_un_b.s_b1
#define s_imp S_un.S_un_w.s_w2
#define s_impno S_un.S_un_b.s_b4
#define s_lh S_un.S_un_b.s_b3
};
/*
Definitions of bits in internet address integers.
NOTE: On subnets the decomposition of addresses to host and
net parts is done according to subnet mask, not the masks here.
*/
#define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0)
#define IN_CLASSA_NET 0xff000000
#define IN_CLASSA_NSHIFT 24
#define IN_CLASSA_HOST 0x00ffffff
#define IN_CLASSA_MAX 128
#define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000)
#define IN_CLASSB_NET 0xffff0000
#define IN_CLASSB_NSHIFT 16
#define IN_CLASSB_HOST 0x0000ffff
#define IN_CLASSB_MAX 65536
#define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000)
#define IN_CLASSC_NET 0xffffff00
#define IN_CLASSC_NSHIFT 8
#define IN_CLASSC_HOST 0x000000ff
#define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000)
#define IN_CLASSD_NET 0xf0000000 /* These ones aren't really */
#define IN_CLASSD_NSHIFT 28 /* net and host fields, but */
#define IN_CLASSD_HOST 0x0fffffff /* routing needn't know. */
#define IN_MULTICAST(i) IN_CLASSD(i)
#define ADDR_ANY INADDR_ANY
struct timeval {
LONG tv_sec;
LONG tv_usec;
};
struct sockaddr {
USHORT sa_family;
CHAR sa_data[14];
};
struct linger {
USHORT l_onoff;
USHORT l_linger;
};
/* IP specific */
struct sockaddr_in {
SHORT sin_family;
USHORT sin_port;
struct in_addr sin_addr;
CHAR sin_zero[8];
};
#define INADDR_ANY ((ULONG)0x00000000)
#define INADDR_LOOPBACK ((ULONG)0x7f000001)
#define INADDR_BROADCAST ((ULONG)0xffffffff)
#define INADDR_NONE ((ULONG)0xffffffff)
#define IPPROTO_IP 0
#define IPPROTO_ICMP 1
#define IPPROTO_IGMP 2
#define IPPROTO_GGP 3
#define IPPROTO_TCP 6
#define IPPROTO_PUP 12
#define IPPROTO_UDP 17
#define IPPROTO_IDP 22
#define IPPROTO_ND 77
#define IPPROTO_RAW 255
#define IPPROTO_MAX 256
#ifndef FD_SETSIZE
#define FD_SETSIZE 64
#endif /* FD_SETSIZE */
typedef struct fd_set {
UINT fd_count;
SOCKET fd_array[FD_SETSIZE];
} fd_set;
extern INT PASCAL FAR __WSAFDIsSet(SOCKET, fd_set FAR*);
#define FD_CLR(s, set) do { \
UINT __i; \
for (__i = 0; __i < ((fd_set FAR*)(set))->fd_count; __i++) { \
if (((fd_set FAR*)(set))->fd_array[__i] == s) { \
while (__i < ((fd_set FAR*)(set))->fd_count - 1) { \
((fd_set FAR *)(set))->fd_array[__i] = \
((fd_set FAR*)(set))->fd_array[__i+1]; \
__i++; \
} \
((fd_set FAR *)(set))->fd_count--; \
break; \
} \
} \
} while(0)
#define FD_SET(s, set) do { \
UINT __i; \
for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count; __i++) { \
if (((fd_set FAR *)(set))->fd_array[__i] == (s)) { \
break; \
} \
} \
if (__i == ((fd_set FAR *)(set))->fd_count) { \
if (((fd_set FAR*)(set))->fd_count < FD_SETSIZE) { \
((fd_set FAR*)(set))->fd_array[__i] = (s); \
((fd_set FAR*)(set))->fd_count++; \
} \
} \
} while(0)
#define FD_ISSET(s, set) __WSAFDIsSet((SOCKET)(s), (fd_set FAR*)(set))
#define FD_ZERO(set) (((fd_set FAR*)(set))->fd_count = 0)
typedef struct _WSAOVERLAPPED {
DWORD Internal; // reserved
DWORD InternalHigh; // reserved
DWORD Offset; // reserved
DWORD OffsetHigh; // reserved
WSAEVENT hEvent;
} WSAOVERLAPPED, FAR* LPWSAOVERLAPPED;
typedef struct __WSABUF {
ULONG len; // buffer length
CHAR FAR* buf; // pointer to buffer
} WSABUF, FAR* LPWSABUF;
typedef ULONG SERVICETYPE;
#define SERVICETYPE_NOTRAFFIC 0x00000000
#define SERVICETYPE_BESTEFFORT 0x00000001
#define SERVICETYPE_CONTROLLEDLOAD 0x00000002
#define SERVICETYPE_GUARANTEED 0x00000003
#define SERVICETYPE_NETWORK_UNAVAILABLE 0x00000004
#define SERVICETYPE_GENERAL_INFORMATION 0x00000005
#define SERVICETYPE_NOCHANGE 0x00000006
#define SERVICE_IMMEDIATE_TRAFFIC_CONTROL 0x00000007
typedef struct _flowspec {
ULONG TokenRate; /* In Bytes/sec */
ULONG TokenBucketSize; /* In Bytes */
ULONG PeakBandwidth; /* In Bytes/sec */
ULONG Latency; /* In microseconds */
ULONG DelayVariation; /* In microseconds */
SERVICETYPE ServiceType;
ULONG MaxSduSize; /* In Bytes */
ULONG MinimumPolicedSize; /* In Bytes */
} FLOWSPEC, *PFLOWSPEC, FAR* LPFLOWSPEC;
typedef struct _QualityOfService {
FLOWSPEC SendingFlowspec; /* The flow spec for data sending */
FLOWSPEC ReceivingFlowspec; /* The flow spec for data receiving */
WSABUF ProviderSpecific; /* Additional provider specific stuff */
} QOS, FAR* LPQOS;
typedef struct _WSANETWORKEVENTS {
LONG lNetworkEvents;
INT iErrorCode[FD_MAX_EVENTS];
} WSANETWORKEVENTS, FAR* LPWSANETWORKEVENTS;
#define MAX_PROTOCOL_CHAIN 7
#define BASE_PROTOCOL 1
#define LAYERED_PROTOCOL 0
typedef struct _WSAPROTOCOLCHAIN {
INT ChainLen;
DWORD ChainEntries[MAX_PROTOCOL_CHAIN];
} WSAPROTOCOLCHAIN, FAR* LPWSAPROTOCOLCHAIN;
#define WSAPROTOCOL_LEN 255
typedef struct _WSAPROTOCOL_INFOA {
DWORD dwServiceFlags1;
DWORD dwServiceFlags2;
DWORD dwServiceFlags3;
DWORD dwServiceFlags4;
DWORD dwProviderFlags;
GUID ProviderId;
DWORD dwCatalogEntryId;
WSAPROTOCOLCHAIN ProtocolChain;
INT iVersion;
INT iAddressFamily;
INT iMaxSockAddr;
INT iMinSockAddr;
INT iSocketType;
INT iProtocol;
INT iProtocolMaxOffset;
INT iNetworkByteOrder;
INT iSecurityScheme;
DWORD dwMessageSize;
DWORD dwProviderReserved;
CHAR szProtocol[WSAPROTOCOL_LEN + 1];
} WSAPROTOCOL_INFOA, FAR* LPWSAPROTOCOL_INFOA;
typedef struct _WSAPROTOCOL_INFOW {
DWORD dwServiceFlags1;
DWORD dwServiceFlags2;
DWORD dwServiceFlags3;
DWORD dwServiceFlags4;
DWORD dwProviderFlags;
GUID ProviderId;
DWORD dwCatalogEntryId;
WSAPROTOCOLCHAIN ProtocolChain;
INT iVersion;
INT iAddressFamily;
INT iMaxSockAddr;
INT iMinSockAddr;
INT iSocketType;
INT iProtocol;
INT iProtocolMaxOffset;
INT iNetworkByteOrder;
INT iSecurityScheme;
DWORD dwMessageSize;
DWORD dwProviderReserved;
WCHAR szProtocol[WSAPROTOCOL_LEN + 1];
} WSAPROTOCOL_INFOW, FAR * LPWSAPROTOCOL_INFOW;
#ifdef UNICODE
typedef WSAPROTOCOL_INFOW WSAPROTOCOL_INFO;
typedef LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO;
#else /* UNICODE */
typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO;
typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO;
#endif /* UNICODE */
/* WinSock 2 extended commands for WSAIoctl() */
#define IOC_UNIX 0x00000000
#define IOC_WS2 0x08000000
#define IOC_FAMILY 0x10000000
#define IOC_VENDOR 0x18000000
#define _WSAIO (x,y) (IOC_VOID | (x) | (y))
#define _WSAIOR (x,y) (IOC_OUT | (x) | (y))
#define _WSAIOW (x,y) (IOC_IN | (x) | (y))
#define _WSAIORW(x,y) (IOC_INOUT| (x) | (y))
#define SIO_ASSOCIATE_HANDLE _WSAIOW (IOC_WS2, 1)
#define SIO_ENABLE_CIRCULAR_QUEUEING _WSAIO (IOC_WS2, 2)
#define SIO_FIND_ROUTE _WSAIOR (IOC_WS2, 3)
#define SIO_FLUSH _WSAIO (IOC_WS2, 4)
#define SIO_GET_BROADCAST_ADDRESS -WSAIOR (IOC_WS2, 5)
#define SIO_GET_EXTENSION_FUNCTION_POINTER _WSAIORW(IOC_WS2, 6)
#define SIO_GET_QOS _WSAIORW(IOC_WS2, 7)
#define SIO_GET_GROUP_QOS _WSAIORW(IOC_WS2, 8)
#define SIO_MULTIPOINT_LOOPBACK _WSAIOW (IOC_WS2, 9)
#define SIO_MULTICAST_SCOPE _WSAIOW (IOC_WS2, 10)
#define SIO_SET_QOS _WSAIOW (IOC_WS2, 11)
#define SIO_SET_GROUP_QOS _WSAIOW (IOC_WS2, 12)
#define SIO_TRANSLATE_HANDLE _WSAIORW(IOC_WS2, 13)
#define SIO_ROUTING_INTERFACE_QUERY _WSAIORW(IOC_WS2, 20)
#define SIO_ROUTING_INTERFACE_CHANGE _WSAIOW (IOC_WS2, 21)
#define SIO_ADDRESS_LIST_QUERY _WSAIOR (IOC_WS2, 22)
#define SIO_ADDRESS_LIST_CHANGE _WSAIO (IOC_WS2, 23)
#define SIO_QUERY_TARGET_PNP_HANDLE _WSAIOR (IOC_W32, 24)
/* Structures for WinSock 1.1 compatible namespace resolution */
struct hostent {
CHAR FAR* h_name;
CHAR FAR* FAR* h_aliases;
SHORT h_addrtype;
SHORT h_length;
CHAR FAR* FAR* h_addr_list;
#define h_addr h_addr_list[0] /* Backward compatible field name */
};
struct protoent {
CHAR FAR* p_name;
CHAR FAR* FAR* p_aliases;
SHORT p_proto;
};
struct servent {
CHAR FAR* s_name;
CHAR FAR* FAR* s_aliases;
SHORT s_port;
CHAR FAR* s_proto;
};
// It is assumed here that a network number fits in 32 bits.
struct netent {
CHAR FAR* n_name; // official net name
CHAR FAR* FAR* n_aliases; // list of alias's
SHORT n_addrtype; // network address type id
ULONG n_net; // network number
};
typedef UINT GROUP;
typedef
INT
(CALLBACK * LPCONDITIONPROC)(
LPWSABUF lpCallerId,
LPWSABUF lpCallerData,
LPQOS lpSQOS,
LPQOS lpGQOS,
LPWSABUF lpCalleeId,
LPWSABUF lpCalleeData,
GROUP FAR* g,
DWORD dwCallbackData);
typedef
VOID
(CALLBACK* LPWSAOVERLAPPED_COMPLETION_ROUTINE)(
DWORD dwError,
DWORD cbTransferred,
LPWSAOVERLAPPED lpOverlapped,
DWORD dwFlags);
/* Microsoft Windows extended data types */
typedef struct sockaddr SOCKADDR;
typedef struct sockaddr *PSOCKADDR;
typedef struct sockaddr FAR *LPSOCKADDR;
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr_in *PSOCKADDR_IN;
typedef struct sockaddr_in FAR *LPSOCKADDR_IN;
typedef struct linger LINGER;
typedef struct linger *PLINGER;
typedef struct linger FAR *LPLINGER;
typedef struct in_addr IN_ADDR;
typedef struct in_addr *PIN_ADDR;
typedef struct in_addr FAR *LPIN_ADDR;
typedef struct fd_set FD_SET;
typedef struct fd_set *PFD_SET;
typedef struct fd_set FAR *LPFD_SET;
typedef struct hostent HOSTENT;
typedef struct hostent *PHOSTENT;
typedef struct hostent FAR *LPHOSTENT;
typedef struct servent SERVENT;
typedef struct servent *PSERVENT;
typedef struct servent FAR *LPSERVENT;
typedef struct protoent PROTOENT;
typedef struct protoent *PPROTOENT;
typedef struct protoent FAR *LPPROTOENT;
typedef struct timeval TIMEVAL;
typedef struct timeval *PTIMEVAL;
typedef struct timeval FAR *LPTIMEVAL;
#define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error)
#define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error)
#define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam)
#define WSAGETASYNCERROR(lParam) HIWORD(lParam)
#define WSAGETSELECTEVENT(lParam) LOWORD(lParam)
#define WSAGETSELECTERROR(lParam) HIWORD(lParam)
#define WSADESCRIPTION_LEN 256
#define WSASYS_STATUS_LEN 128
typedef struct WSAData {
WORD wVersion;
WORD wHighVersion;
CHAR szDescription[WSADESCRIPTION_LEN + 1];
CHAR szSystemStatus[WSASYS_STATUS_LEN + 1];
USHORT iMaxSockets;
USHORT iMaxUdpDg;
CHAR FAR* lpVendorInfo;
} WSADATA, FAR* LPWSADATA;
#ifndef __BLOB_T_DEFINED
#define __BLOB_T_DEFINED
typedef struct _BLOB {
ULONG cbSize;
BYTE *pBlobData;
} BLOB, *LPBLOB;
#else
typedef BLOB *LPBLOB;
#endif
typedef struct _SOCKET_ADDRESS {
LPSOCKADDR lpSockaddr;
INT iSockaddrLength;
} SOCKET_ADDRESS, *PSOCKET_ADDRESS, FAR* LPSOCKET_ADDRESS;
typedef struct _SOCKET_ADDRESS_LIST {
INT iAddressCount;
SOCKET_ADDRESS Address[1];
} SOCKET_ADDRESS_LIST, FAR* LPSOCKET_ADDRESS_LIST;
typedef struct _CSADDR_INFO {
SOCKET_ADDRESS LocalAddr;
SOCKET_ADDRESS RemoteAddr;
INT iSocketType;
INT iProtocol;
} CSADDR_INFO, *PCSADDR_INFO, FAR* LPCSADDR_INFO;
/* Structures for namespace resolution */
typedef struct _WSANAMESPACE_INFOA {
GUID NSProviderId;
DWORD dwNameSpace;
BOOL fActive;
DWORD dwVersion;
LPSTR lpszIdentifier;
} WSANAMESPACE_INFOA, *PWSANAMESPACE_INFOA, *LPWSANAMESPACE_INFOA;
typedef struct _WSANAMESPACE_INFOW {
GUID NSProviderId;
DWORD dwNameSpace;
BOOL fActive;
DWORD dwVersion;
LPWSTR lpszIdentifier;
} WSANAMESPACE_INFOW, *PWSANAMESPACE_INFOW, *LPWSANAMESPACE_INFOW;
#ifdef UNICODE
typedef WSANAMESPACE_INFOW WSANAMESPACE_INFO;
typedef PWSANAMESPACE_INFOW PWSANAMESPACE_INFO;
typedef LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO;
#else /* UNICODE */
typedef WSANAMESPACE_INFOA WSANAMESPACE_INFO;
typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO;
typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO;
#endif /* UNICODE */
typedef enum _WSAEcomparator
{
COMP_EQUAL = 0,
COMP_NOTLESS
} WSAECOMPARATOR, *PWSAECOMPARATOR, *LPWSAECOMPARATOR;
typedef struct _WSAVersion
{
DWORD dwVersion;
WSAECOMPARATOR ecHow;
}WSAVERSION, *PWSAVERSION, *LPWSAVERSION;
typedef struct _AFPROTOCOLS {
INT iAddressFamily;
INT iProtocol;
} AFPROTOCOLS, *PAFPROTOCOLS, *LPAFPROTOCOLS;
typedef struct _WSAQuerySetA {
DWORD dwSize;
LPSTR lpszServiceInstanceName;
LPGUID lpServiceClassId;
LPWSAVERSION lpVersion;
LPSTR lpszComment;
DWORD dwNameSpace;
LPGUID lpNSProviderId;
LPSTR lpszContext;
DWORD dwNumberOfProtocols;
LPAFPROTOCOLS lpafpProtocols;
LPSTR lpszQueryString;
DWORD dwNumberOfCsAddrs;
LPCSADDR_INFO lpcsaBuffer;
DWORD dwOutputFlags;
LPBLOB lpBlob;
} WSAQUERYSETA, *PWSAQUERYSETA, *LPWSAQUERYSETA;
typedef struct _WSAQuerySetW {
DWORD dwSize;
LPWSTR lpszServiceInstanceName;
LPGUID lpServiceClassId;
LPWSAVERSION lpVersion;
LPWSTR lpszComment;
DWORD dwNameSpace;
LPGUID lpNSProviderId;
LPWSTR lpszContext;
DWORD dwNumberOfProtocols;
LPAFPROTOCOLS lpafpProtocols;
LPWSTR lpszQueryString;
DWORD dwNumberOfCsAddrs;
LPCSADDR_INFO lpcsaBuffer;
DWORD dwOutputFlags;
LPBLOB lpBlob;
} WSAQUERYSETW, *PWSAQUERYSETW, *LPWSAQUERYSETW;
#ifdef UNICODE
typedef WSAQUERYSETW WSAQUERYSET;
typedef PWSAQUERYSETW PWSAQUERYSET;
typedef LPWSAQUERYSETW LPWSAQUERYSET;
#else /* UNICODE */
typedef WSAQUERYSETA WSAQUERYSET;
typedef PWSAQUERYSETA PWSAQUERYSET;
typedef LPWSAQUERYSETA LPWSAQUERYSET;
#endif /* UNICODE */
typedef enum _WSAESETSERVICEOP {
RNRSERVICE_REGISTER = 0,
RNRSERVICE_DEREGISTER,
RNRSERVICE_DELETE
} WSAESETSERVICEOP, *PWSAESETSERVICEOP, *LPWSAESETSERVICEOP;
typedef struct _WSANSClassInfoA {
LPSTR lpszName;
DWORD dwNameSpace;
DWORD dwValueType;
DWORD dwValueSize;
LPVOID lpValue;
} WSANSCLASSINFOA, *PWSANSCLASSINFOA, *LPWSANSCLASSINFOA;
typedef struct _WSANSClassInfoW {
LPWSTR lpszName;
DWORD dwNameSpace;
DWORD dwValueType;
DWORD dwValueSize;
LPVOID lpValue;
} WSANSCLASSINFOW, *PWSANSCLASSINFOW, *LPWSANSCLASSINFOW;
#ifdef UNICODE
typedef WSANSCLASSINFOW WSANSCLASSINFO;
typedef PWSANSCLASSINFOW PWSANSCLASSINFO;
typedef LPWSANSCLASSINFOW LPWSANSCLASSINFO;
#else /* UNICODE */
typedef WSANSCLASSINFOA WSANSCLASSINFO;
typedef PWSANSCLASSINFOA PWSANSCLASSINFO;
typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO;
#endif /* UNICODE */
typedef struct _WSAServiceClassInfoA {
LPGUID lpServiceClassId;
LPSTR lpszServiceClassName;
DWORD dwCount;
LPWSANSCLASSINFOA lpClassInfos;
} WSASERVICECLASSINFOA, *PWSASERVICECLASSINFOA, *LPWSASERVICECLASSINFOA;
typedef struct _WSAServiceClassInfoW {
LPGUID lpServiceClassId;
LPWSTR lpszServiceClassName;
DWORD dwCount;
LPWSANSCLASSINFOW lpClassInfos;
} WSASERVICECLASSINFOW, *PWSASERVICECLASSINFOW, *LPWSASERVICECLASSINFOW;
#ifdef UNICODE
typedef WSASERVICECLASSINFOW WSASERVICECLASSINFO;
typedef PWSASERVICECLASSINFOW PWSASERVICECLASSINFO;
typedef LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO;
#else /* UNICODE */
typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO;
typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO;
typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO;
#endif /* UNICODE */
/* WinSock 2 DLL prototypes */
SOCKET
WSAAPI
accept(
IN SOCKET s,
OUT LPSOCKADDR addr,
OUT INT FAR* addrlen);
INT
WSAAPI
bind(
IN SOCKET s,
IN CONST LPSOCKADDR name,
IN INT namelen);
INT
WSAAPI
closesocket(
IN SOCKET s);
INT
WSAAPI
connect(
IN SOCKET s,
IN CONST LPSOCKADDR name,
IN INT namelen);
INT
WSAAPI
getpeername(
IN SOCKET s,
OUT LPSOCKADDR name,
IN OUT INT FAR* namelen);
INT
WSAAPI
getsockname(
IN SOCKET s,
OUT LPSOCKADDR name,
IN OUT INT FAR* namelen);
INT
WSAAPI
getsockopt(
IN SOCKET s,
IN INT level,
IN INT optname,
OUT CHAR FAR* optval,
IN OUT INT FAR* optlen);
ULONG
WSAAPI
htonl(
IN ULONG hostlong);
USHORT
WSAAPI
htons(
IN USHORT hostshort);
INT
WSAAPI
ioctlsocket(
IN SOCKET s,
IN LONG cmd,
IN OUT ULONG FAR* argp);
INT
WSAAPI
listen(
IN SOCKET s,
IN INT backlog);
ULONG
WSAAPI
ntohl(
IN ULONG netlong);
USHORT
WSAAPI
ntohs(
IN USHORT netshort);
INT
WSAAPI
recv(
IN SOCKET s,
OUT CHAR FAR* buf,
IN INT len,
IN INT flags);
INT
WSAAPI
recvfrom(
IN SOCKET s,
OUT CHAR FAR* buf,
IN INT len,
IN INT flags,
OUT LPSOCKADDR from,
IN OUT INT FAR* fromlen);
INT
WSAAPI
select(
IN INT nfds,
IN OUT LPFD_SET readfds,
IN OUT LPFD_SET writefds,
IN OUT LPFD_SET exceptfds,
IN CONST LPTIMEVAL timeout);
INT
WSAAPI
send(
IN SOCKET s,
IN CONST CHAR FAR* buf,
IN INT len,
IN INT flags);
INT
WSAAPI
sendto(
IN SOCKET s,
IN CONST CHAR FAR* buf,
IN INT len,
IN INT flags,
IN CONST LPSOCKADDR to,
IN INT tolen);
INT
WSAAPI
setsockopt(
IN SOCKET s,
IN INT level,
IN INT optname,
IN CONST CHAR FAR* optval,
IN INT optlen);
INT
WSAAPI
shutdown(
IN SOCKET s,
IN INT how);
SOCKET
WSAAPI
socket(
IN INT af,
IN INT type,
IN INT protocol);
SOCKET
WSAAPI
WSAAccept(
IN SOCKET s,
OUT LPSOCKADDR addr,
IN OUT LPINT addrlen,
IN LPCONDITIONPROC lpfnCondition,
IN DWORD dwCallbackData);
INT
WSAAPI
WSAAsyncSelect(
IN SOCKET s,
IN HWND hWnd,
IN UINT wMsg,
IN LONG lEvent);
INT
WSAAPI
WSACancelBlockingCall(VOID);
INT
WSAAPI
WSACleanup(VOID);
BOOL
WSAAPI
WSACloseEvent(
IN WSAEVENT hEvent);
INT
WSAAPI
WSAConnect(
IN SOCKET s,
IN CONST LPSOCKADDR name,
IN INT namelen,
IN LPWSABUF lpCallerData,
OUT LPWSABUF lpCalleeData,
IN LPQOS lpSQOS,
IN LPQOS lpGQOS);
WSAEVENT
WSAAPI
WSACreateEvent(VOID);
INT
WSAAPI
WSADuplicateSocketA(
IN SOCKET s,
IN DWORD dwProcessId,
OUT LPWSAPROTOCOL_INFOA lpProtocolInfo);
INT
WSAAPI
WSADuplicateSocketW(
IN SOCKET s,
IN DWORD dwProcessId,
OUT LPWSAPROTOCOL_INFOW lpProtocolInfo);
#ifdef UNICODE
#define WSADuplicateSocket WSADuplicateSocketA
#else /* UNICODE */
#define WSADuplicateSocket WSADuplicateSocketW
#endif /* UNICODE */
INT
WSAAPI
WSAEnumNetworkEvents(
IN SOCKET s,
IN WSAEVENT hEventObject,
OUT LPWSANETWORKEVENTS lpNetworkEvents);
INT
WSAAPI
WSAEnumProtocolsA(
IN LPINT lpiProtocols,
OUT LPWSAPROTOCOL_INFOA lpProtocolBuffer,
IN OUT LPDWORD lpdwBufferLength);
INT
WSAAPI
WSAEnumProtocolsW(
IN LPINT lpiProtocols,
OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer,
IN OUT LPDWORD lpdwBufferLength);
#ifdef UNICODE
#define WSAEnumProtocols WSAEnumProtocolsA
#else /* UNICODE */
#define WSAEnumProtocols WSAEnumProtocolsW
#endif /* UNICODE */
INT
WSAAPI
WSAEventSelect(
IN SOCKET s,
IN WSAEVENT hEventObject,
IN LONG lNetworkEvents);
INT
WSAAPI
WSAGetLastError(VOID);
BOOL
WSAAPI
WSAGetOverlappedResult(
IN SOCKET s,
IN LPWSAOVERLAPPED lpOverlapped,
OUT LPDWORD lpcbTransfer,
IN BOOL fWait,
OUT LPDWORD lpdwFlags);
BOOL
WSAAPI
WSAGetQOSByName(
IN SOCKET s,
IN OUT LPWSABUF lpQOSName,
OUT LPQOS lpQOS);
INT
WSAAPI
WSAHtonl(
IN SOCKET s,
IN ULONG hostlong,
OUT ULONG FAR* lpnetlong);
INT
WSAAPI
WSAHtons(
IN SOCKET s,
IN USHORT hostshort,
OUT USHORT FAR* lpnetshort);
INT
WSAAPI
WSAIoctl(
IN SOCKET s,
IN DWORD dwIoControlCode,
IN LPVOID lpvInBuffer,
IN DWORD cbInBuffer,
OUT LPVOID lpvOutBuffer,
IN DWORD cbOutBuffer,
OUT LPDWORD lpcbBytesReturned,
IN LPWSAOVERLAPPED lpOverlapped,
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
BOOL
WSAAPI
WSAIsBlocking(VOID);
SOCKET
WSAAPI
WSAJoinLeaf(
IN SOCKET s,
IN CONST LPSOCKADDR name,
IN INT namelen,
IN LPWSABUF lpCallerData,
OUT LPWSABUF lpCalleeData,
IN LPQOS lpSQOS,
IN LPQOS lpGQOS,
IN DWORD dwFlags);
INT
WSAAPI
WSANtohl(
IN SOCKET s,
IN ULONG netlong,
OUT ULONG FAR* lphostlong);
INT
WSAAPI
WSANtohs(
IN SOCKET s,
IN USHORT netshort,
OUT USHORT FAR* lphostshort);
INT
WSAAPI
WSARecv(
IN SOCKET s,
IN OUT LPWSABUF lpBuffers,
IN DWORD dwBufferCount,
OUT LPDWORD lpNumberOfBytesRecvd,
IN OUT LPDWORD lpFlags,
IN LPWSAOVERLAPPED lpOverlapped,
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
INT
WSAAPI
WSARecvDisconnect(
IN SOCKET s,
OUT LPWSABUF lpInboundDisconnectData);
INT
WSAAPI
WSARecvFrom(
IN SOCKET s,
IN OUT LPWSABUF lpBuffers,
IN DWORD dwBufferCount,
OUT LPDWORD lpNumberOfBytesRecvd,
IN OUT LPDWORD lpFlags,
OUT LPSOCKADDR lpFrom,
IN OUT LPINT lpFromlen,
IN LPWSAOVERLAPPED lpOverlapped,
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
BOOL
WSAAPI
WSAResetEvent(
IN WSAEVENT hEvent);
INT
WSAAPI
WSASend(
IN SOCKET s,
IN LPWSABUF lpBuffers,
IN DWORD dwBufferCount,
OUT LPDWORD lpNumberOfBytesSent,
IN DWORD dwFlags,
IN LPWSAOVERLAPPED lpOverlapped,
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
INT
WSAAPI
WSASendDisconnect(
IN SOCKET s,
IN LPWSABUF lpOutboundDisconnectData);
INT
WSAAPI
WSASendTo(
IN SOCKET s,
IN LPWSABUF lpBuffers,
IN DWORD dwBufferCount,
OUT LPDWORD lpNumberOfBytesSent,
IN DWORD dwFlags,
IN CONST LPSOCKADDR lpTo,
IN INT iToLen,
IN LPWSAOVERLAPPED lpOverlapped,
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
FARPROC
WSAAPI
WSASetBlockingHook(
IN FARPROC lpBlockFunc);
BOOL
WSAAPI
WSASetEvent(
IN WSAEVENT hEvent);
VOID
WSAAPI
WSASetLastError(
IN INT iError);
SOCKET
WSAAPI
WSASocketA(
IN INT af,
IN INT type,
IN INT protocol,
IN LPWSAPROTOCOL_INFOA lpProtocolInfo,
IN GROUP g,
IN DWORD dwFlags);
SOCKET
WSAAPI
WSASocketW(
IN INT af,
IN INT type,
IN INT protocol,
IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
IN GROUP g,
IN DWORD dwFlags);
#ifdef UNICODE
#define WSASocket WSASocketW
#else /* UNICODE */
#define WSASocket WSASocketA
#endif /* UNICODE */
INT
WSAAPI
WSAStartup(
IN WORD wVersionRequested,
OUT LPWSADATA lpWSAData);
INT
WSAAPI
WSAUnhookBlockingHook(VOID);
DWORD
WSAAPI
WSAWaitForMultipleEvents(
IN DWORD cEvents,
IN CONST WSAEVENT FAR* lphEvents,
IN BOOL fWaitAll,
IN DWORD dwTimeout,
IN BOOL fAlertable);
INT
WSAAPI
WSAProviderConfigChange(
IN OUT LPHANDLE lpNotificationHandle,
IN LPWSAOVERLAPPED lpOverlapped,
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
/* Name resolution APIs */
INT
WSAAPI
WSAAddressToStringA(
IN LPSOCKADDR lpsaAddress,
IN DWORD dwAddressLength,
IN LPWSAPROTOCOL_INFOA lpProtocolInfo,
OUT LPSTR lpszAddressString,
IN OUT LPDWORD lpdwAddressStringLength);
INT
WSAAPI
WSAAddressToStringW(
IN LPSOCKADDR lpsaAddress,
IN DWORD dwAddressLength,
IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
OUT LPWSTR lpszAddressString,
IN OUT LPDWORD lpdwAddressStringLength);
#ifdef UNICODE
#define WSAAddressToString WSAAddressToStringW
#else /* UNICODE */
#define WSAAddressToString WSAAddressToStringA
#endif /* UNICODE */
INT
WSAAPI
WSAEnumNameSpaceProvidersA(
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSANAMESPACE_INFOA lpnspBuffer);
INT
WSAAPI
WSAEnumNameSpaceProvidersW(
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSANAMESPACE_INFOW lpnspBuffer);
#ifdef UNICODE
#define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
#else /* UNICODE */
#define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA
#endif /* UNICODE */
INT
WSAAPI
WSAGetServiceClassInfoA(
IN LPGUID lpProviderId,
IN LPGUID lpServiceClassId,
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSASERVICECLASSINFOA lpServiceClassInfo);
INT
WSAAPI
WSAGetServiceClassInfoW(
IN LPGUID lpProviderId,
IN LPGUID lpServiceClassId,
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSASERVICECLASSINFOW lpServiceClassInfo);
#ifdef UNICODE
#define WSAGetServiceClassInfo WSAGetServiceClassInfoW
#else /* UNICODE */
#define WSAGetServiceClassInfo WSAGetServiceClassInfoA
#endif /* UNICODE */
INT
WSAAPI
WSAGetServiceClassNameByClassIdA(
IN LPGUID lpServiceClassId,
OUT LPSTR lpszServiceClassName,
IN OUT LPDWORD lpdwBufferLength);
INT
WSAAPI
WSAGetServiceClassNameByClassIdW(
IN LPGUID lpServiceClassId,
OUT LPWSTR lpszServiceClassName,
IN OUT LPDWORD lpdwBufferLength);
#ifdef UNICODE
#define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW
#else /* UNICODE */
#define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA
#endif /* UNICODE */
INT
WSAAPI
WSAInstallServiceClassA(
IN LPWSASERVICECLASSINFOA lpServiceClassInfo);
INT
WSAAPI
WSAInstallServiceClassW(
IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
#ifdef UNICODE
#define WSAInstallServiceClass WSAInstallServiceClassW
#else /* UNICODE */
#define WSAInstallServiceClass WSAInstallServiceClassA
#endif /* UNICODE */
INT
WSAAPI
WSALookupServiceBegin(
IN LPWSAQUERYSET lpqsRestrictions,
IN DWORD dwControlFlags,
OUT LPHANDLE lphLookup);
INT
WSAAPI
WSALookupServiceEnd(
IN HANDLE hLookup);
INT
WSAAPI
WSALookupServiceNext(
IN HANDLE hLookup,
IN DWORD dwControlFlags,
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSAQUERYSET lpqsResults);
INT
WSAAPI
WSARemoveServiceClass(
IN LPGUID lpServiceClassId);
INT
WSAAPI
WSASetService(
IN LPWSAQUERYSET lpqsRegInfo,
IN WSAESETSERVICEOP essOperation,
IN DWORD dwControlFlags);
INT
WSAAPI
WSAStringToAddressA(
IN LPSTR AddressString,
IN INT AddressFamily,
IN LPWSAPROTOCOL_INFOA lpProtocolInfo,
OUT LPSOCKADDR lpAddress,
IN OUT LPINT lpAddressLength);
INT
WSAAPI
WSAStringToAddressW(
IN LPWSTR AddressString,
IN INT AddressFamily,
IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
OUT LPSOCKADDR lpAddress,
IN OUT LPINT lpAddressLength);
#ifdef UNICODE
#define WSAStringToAddress WSAStringToAddressW
#else /* UNICODE */
#define WSAStringToAddress WSAStringToAddressA
#endif /* UNICODE */
/* WinSock 1.1 compatible name resolution APIs */
LPHOSTENT
WSAAPI
gethostbyaddr(
IN CONST CHAR FAR* addr,
IN INT len,
IN INT type);
LPHOSTENT
WSAAPI
gethostbyname(
IN CONST CHAR FAR* name);
INT
WSAAPI
gethostname(
OUT CHAR FAR* name,
IN INT namelen);
LPPROTOENT
WSAAPI
getprotobyname(
IN CONST CHAR FAR* name);
LPPROTOENT
WSAAPI
getprotobynumber(
IN INT number);
LPSERVENT
WSAAPI
getservbyname(
IN CONST CHAR FAR* name,
IN CONST CHAR FAR* proto);
LPSERVENT
WSAAPI
getservbyport(
IN INT port,
IN CONST CHAR FAR* proto);
ULONG
WSAAPI
inet_addr(
IN CONST CHAR FAR* cp);
CHAR FAR*
WSAAPI
inet_ntoa(
IN IN_ADDR in);
HANDLE
WSAAPI
WSAAsyncGetHostByAddr(
IN HWND hWnd,
IN UINT wMsg,
IN CONST CHAR FAR* addr,
IN INT len,
IN INT type,
OUT CHAR FAR* buf,
IN INT buflen);
HANDLE
WSAAPI
WSAAsyncGetHostByName(
IN HWND hWnd,
IN UINT wMsg,
IN CONST CHAR FAR* name,
OUT CHAR FAR* buf,
IN INT buflen);
HANDLE
WSAAPI
WSAAsyncGetProtoByName(
IN HWND hWnd,
IN UINT wMsg,
IN CONST CHAR FAR* name,
OUT CHAR FAR* buf,
IN INT buflen);
HANDLE
WSAAPI
WSAAsyncGetProtoByNumber(
IN HWND hWnd,
IN UINT wMsg,
IN INT number,
OUT CHAR FAR* buf,
IN INT buflen);
HANDLE
WSAAPI
WSAAsyncGetServByName(
IN HWND hWnd,
IN UINT wMsg,
IN CONST CHAR FAR* name,
IN CONST CHAR FAR* proto,
OUT CHAR FAR* buf,
IN INT buflen);
HANDLE
WSAAPI
WSAAsyncGetServByPort(
IN HWND hWnd,
IN UINT wMsg,
IN INT port,
IN CONST CHAR FAR* proto,
OUT CHAR FAR* buf,
IN INT buflen);
INT
WSAAPI
WSACancelAsyncRequest(
IN HANDLE hAsyncTaskHandle);
#ifdef __cplusplus
};
#endif /* __cplusplus */
#endif /* __WINSOCK2_H */
/* EOF */