625 lines
23 KiB
C
625 lines
23 KiB
C
/*
|
|
|
|
Definitions for winsock 2
|
|
|
|
Initially taken from the Wine project.
|
|
|
|
Portions Copyright (c) 1980, 1983, 1988, 1993
|
|
The Regents of the University of California. All rights reserved.
|
|
|
|
Portions Copyright (c) 1993 by Digital Equipment Corporation.
|
|
*/
|
|
|
|
#ifndef _WINSOCK2_H
|
|
#define _WINSOCK2_H
|
|
|
|
/* Macros that are also defined in winsock.h, and need to be overridden.
|
|
These will go away once we have a completely standalone winsock2.h. */
|
|
#ifdef FD_SET
|
|
#define _FD_SET_DEFINED
|
|
#endif
|
|
#include <winsock.h>
|
|
|
|
#ifndef _NSPAPI_H
|
|
#include <nspapi.h>
|
|
#endif
|
|
#ifndef _WTYPES_H
|
|
#include <wtypes.h>
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define ADDR_ANY INADDR_ANY
|
|
|
|
#define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000)
|
|
#define IN_CLASSD_NET 0xf0000000
|
|
#define IN_CLASSD_NSHIFT 28
|
|
#define IN_CLASSD_HOST 0x0fffffff
|
|
#define IN_MULTICAST(i) IN_CLASSD(i)
|
|
|
|
#define FROM_PROTOCOL_INFO (-1)
|
|
|
|
#define SO_DONTLINGER (u_int)(~SO_LINGER)
|
|
#define SO_GROUP_ID 0x2001
|
|
#define SO_GROUP_PRIORITY 0x2002
|
|
/* FIXME/TODO: need this because we also include winsock.h. */
|
|
#undef SOMAXCONN
|
|
#define SOMAXCONN 0x7fffffff
|
|
#define SO_MAX_MSG_SIZE 0x2003
|
|
#define SO_PROTOCOL_INFOA 0x2004
|
|
#define SO_PROTOCOL_INFOW 0x2005
|
|
#ifdef UNICODE
|
|
#define SO_PROTOCOL_INFO SO_PROTOCOL_INFOW
|
|
#else
|
|
#define SO_PROTOCOL_INFO SO_PROTOCOL_INFOA
|
|
#endif
|
|
#define PVD_CONFIG 0x3001
|
|
|
|
#define FD_READ_BIT 0
|
|
#define FD_WRITE_BIT 1
|
|
#define FD_OOB_BIT 2
|
|
#define FD_ACCEPT_BIT 3
|
|
#define FD_CONNECT_BIT 4
|
|
#define FD_CLOSE_BIT 5
|
|
#define FD_QOS_BIT 6
|
|
#define FD_GROUP_QOS_BIT 7
|
|
#define FD_MAX_EVENTS 8
|
|
#define FD_ALL_EVENTS (255)
|
|
|
|
#if !defined(_FD_SET_DEFINED)
|
|
#undef FD_SET
|
|
#define FD_SET(fd, set) do { u_int __i;\
|
|
for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\
|
|
if (((fd_set *)(set))->fd_array[__i] == (fd)) {\
|
|
break;\
|
|
}\
|
|
}\
|
|
if (__i == ((fd_set *)(set))->fd_count) {\
|
|
if (((fd_set *)(set))->fd_count < FD_SETSIZE) {\
|
|
((fd_set *)(set))->fd_array[__i] = (fd);\
|
|
((fd_set *)(set))->fd_count++;\
|
|
}\
|
|
}\
|
|
} while(0)
|
|
#else
|
|
#undef _FD_SET_DEFINED
|
|
#endif
|
|
|
|
#define MSG_INTERRUPT 0x10
|
|
#define MSG_MAXIOVLEN 16
|
|
|
|
#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 WSAAPI WINAPI
|
|
#define WSAEVENT HANDLE
|
|
#define LPWSAEVENT LPHANDLE
|
|
#define WSAOVERLAPPED OVERLAPPED
|
|
typedef struct _OVERLAPPED *LPWSAOVERLAPPED;
|
|
|
|
#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)
|
|
|
|
typedef struct _WSABUF {
|
|
unsigned long len;
|
|
char *buf;
|
|
} WSABUF, *LPWSABUF;
|
|
|
|
typedef enum
|
|
{
|
|
BestEffortService,
|
|
ControlledLoadService,
|
|
PredictiveService,
|
|
GuaranteedDelayService,
|
|
GuaranteedService
|
|
} GUARANTEE;
|
|
|
|
typedef long int32;
|
|
|
|
typedef struct _flowspec
|
|
{
|
|
int32 TokenRate;
|
|
int32 TokenBucketSize;
|
|
int32 PeakBandwidth;
|
|
int32 Latency;
|
|
int32 DelayVariation;
|
|
GUARANTEE LevelOfGuarantee;
|
|
int32 CostOfCall;
|
|
int32 NetworkAvailability;
|
|
} FLOWSPEC, *LPFLOWSPEC;
|
|
|
|
typedef struct _QualityOfService
|
|
{
|
|
FLOWSPEC SendingFlowspec;
|
|
FLOWSPEC ReceivingFlowspec;
|
|
WSABUF ProviderSpecific;
|
|
} QOS, *LPQOS;
|
|
|
|
#define CF_ACCEPT 0x0000
|
|
#define CF_REJECT 0x0001
|
|
#define CF_DEFER 0x0002
|
|
#define SD_RECEIVE 0x00
|
|
#define SD_SEND 0x01
|
|
#define SD_BOTH 0x02
|
|
typedef unsigned int GROUP;
|
|
|
|
#define SG_UNCONSTRAINED_GROUP 0x01
|
|
#define SG_CONSTRAINED_GROUP 0x02
|
|
typedef struct _WSANETWORKEVENTS {
|
|
long lNetworkEvents;
|
|
int iErrorCode[FD_MAX_EVENTS];
|
|
} WSANETWORKEVENTS, *LPWSANETWORKEVENTS;
|
|
|
|
#define MAX_PROTOCOL_CHAIN 7
|
|
|
|
#define BASE_PROTOCOL 1
|
|
#define LAYERED_PROTOCOL 0
|
|
|
|
typedef enum _WSAESETSERVICEOP
|
|
{
|
|
RNRSERVICE_REGISTER=0,
|
|
RNRSERVICE_DEREGISTER,
|
|
RNRSERVICE_DELETE
|
|
} WSAESETSERVICEOP, *PWSAESETSERVICEOP, *LPWSAESETSERVICEOP;
|
|
|
|
typedef struct _AFPROTOCOLS {
|
|
INT iAddressFamily;
|
|
INT iProtocol;
|
|
} AFPROTOCOLS, *PAFPROTOCOLS, *LPAFPROTOCOLS;
|
|
|
|
|
|
typedef enum _WSAEcomparator
|
|
{
|
|
COMP_EQUAL = 0,
|
|
COMP_NOTLESS
|
|
} WSAECOMPARATOR, *PWSAECOMPARATOR, *LPWSAECOMPARATOR;
|
|
|
|
typedef struct _WSAVersion
|
|
{
|
|
DWORD dwVersion;
|
|
WSAECOMPARATOR ecHow;
|
|
} WSAVERSION, *PWSAVERSION, *LPWSAVERSION;
|
|
|
|
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
|
|
typedef WSAQUERYSETA WSAQUERYSET;
|
|
typedef PWSAQUERYSETA PWSAQUERYSET;
|
|
typedef LPWSAQUERYSETA LPWSAQUERYSET;
|
|
#endif
|
|
|
|
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
|
|
typedef WSANSCLASSINFOA WSANSCLASSINFO;
|
|
typedef PWSANSCLASSINFOA PWSANSCLASSINFO;
|
|
typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO;
|
|
#endif
|
|
|
|
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
|
|
typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO;
|
|
typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO;
|
|
typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO;
|
|
#endif
|
|
|
|
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
|
|
typedef WSANAMESPACE_INFOA WSANAMESPACE_INFO;
|
|
typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO;
|
|
typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO;
|
|
#endif
|
|
|
|
typedef struct _WSAPROTOCOLCHAIN {
|
|
int ChainLen;
|
|
DWORD ChainEntries[MAX_PROTOCOL_CHAIN];
|
|
} WSAPROTOCOLCHAIN, *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, *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, * LPWSAPROTOCOL_INFOW;
|
|
|
|
typedef int (CALLBACK *LPCONDITIONPROC)(LPWSABUF, LPWSABUF, LPQOS, LPQOS, LPWSABUF, LPWSABUF, GROUP *, DWORD);
|
|
typedef void (WINAPI *LPWSAOVERLAPPED_COMPLETION_ROUTINE)(DWORD, DWORD, LPWSAOVERLAPPED, DWORD);
|
|
|
|
|
|
#ifdef UNICODE
|
|
typedef WSAPROTOCOL_INFOW WSAPROTOCOL_INFO;
|
|
typedef LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO;
|
|
#else
|
|
typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO;
|
|
typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO;
|
|
#endif
|
|
|
|
#define PFL_MULTIPLE_PROTO_ENTRIES 0x00000001
|
|
#define PFL_RECOMMENDED_PROTO_ENTRY 0x00000002
|
|
#define PFL_HIDDEN 0x00000004
|
|
#define PFL_MATCHES_PROTOCOL_ZERO 0x00000008
|
|
#define XP1_CONNECTIONLESS 0x00000001
|
|
#define XP1_GUARANTEED_DELIVERY 0x00000002
|
|
#define XP1_GUARANTEED_ORDER 0x00000004
|
|
#define XP1_MESSAGE_ORIENTED 0x00000008
|
|
#define XP1_PSEUDO_STREAM 0x00000010
|
|
#define XP1_GRACEFUL_CLOSE 0x00000020
|
|
#define XP1_EXPEDITED_DATA 0x00000040
|
|
#define XP1_CONNECT_DATA 0x00000080
|
|
#define XP1_DISCONNECT_DATA 0x00000100
|
|
#define XP1_SUPPORT_BROADCAST 0x00000200
|
|
#define XP1_SUPPORT_MULTIPOINT 0x00000400
|
|
#define XP1_MULTIPOINT_CONTROL_PLANE 0x00000800
|
|
#define XP1_MULTIPOINT_DATA_PLANE 0x00001000
|
|
#define XP1_QOS_SUPPORTED 0x00002000
|
|
#define XP1_INTERRUPT 0x00004000
|
|
#define XP1_UNI_SEND 0x00008000
|
|
#define XP1_UNI_RECV 0x00010000
|
|
#define XP1_IFS_HANDLES 0x00020000
|
|
#define XP1_PARTIAL_MESSAGE 0x00040000
|
|
|
|
#define BIGENDIAN 0x0000
|
|
#define LITTLEENDIAN 0x0001
|
|
|
|
#define SECURITY_PROTOCOL_NONE 0x0000
|
|
#define JL_SENDER_ONLY 0x01
|
|
#define JL_RECEIVER_ONLY 0x02
|
|
#define JL_BOTH 0x04
|
|
#define WSA_FLAG_OVERLAPPED 0x01
|
|
#define WSA_FLAG_MULTIPOINT_C_ROOT 0x02
|
|
#define WSA_FLAG_MULTIPOINT_C_LEAF 0x04
|
|
#define WSA_FLAG_MULTIPOINT_D_ROOT 0x08
|
|
#define WSA_FLAG_MULTIPOINT_D_LEAF 0x10
|
|
#define IOC_UNIX 0x00000000
|
|
#define IOC_WS2 0x08000000
|
|
#define IOC_PROTOCOL 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 TH_NETDEV 0x00000001
|
|
#define TH_TAPI 0x00000002
|
|
|
|
#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)
|
|
|
|
SOCKET WINAPI WSAAccept(SOCKET, struct sockaddr *, LPINT, LPCONDITIONPROC, DWORD);
|
|
INT WINAPI WSAAddressToStringA(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD);
|
|
INT WINAPI WSAAddressToStringW(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD);
|
|
BOOL WINAPI WSACloseEvent(WSAEVENT);
|
|
int WINAPI WSAConnect(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS);
|
|
WSAEVENT WINAPI WSACreateEvent(void);
|
|
int WINAPI WSADuplicateSocketA(SOCKET, DWORD, LPWSAPROTOCOL_INFOA);
|
|
int WINAPI WSADuplicateSocketW(SOCKET, DWORD, LPWSAPROTOCOL_INFOW);
|
|
INT WINAPI WSAEnumNameSpaceProvidersA(LPDWORD, LPWSANAMESPACE_INFOA);
|
|
INT WINAPI WSAEnumNameSpaceProvidersW(LPDWORD, LPWSANAMESPACE_INFOW);
|
|
int WINAPI WSAEnumNetworkEvents(SOCKET, WSAEVENT, LPWSANETWORKEVENTS);
|
|
int WINAPI WSAEnumProtocolsA(LPINT, LPWSAPROTOCOL_INFOA, LPDWORD);
|
|
int WINAPI WSAEnumProtocolsW(LPINT, LPWSAPROTOCOL_INFOW, LPDWORD);
|
|
int WINAPI WSAEventSelect(SOCKET, WSAEVENT, long);
|
|
BOOL WINAPI WSAGetOverlappedResult(SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD);
|
|
BOOL WINAPI WSAGetQOSByName(SOCKET, LPWSABUF, LPQOS);
|
|
INT WINAPI WSAGetServiceClassInfoA(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA);
|
|
INT WINAPI WSAGetServiceClassInfoW(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW);
|
|
INT WINAPI WSAGetServiceClassNameByClassIdA(LPGUID, LPSTR, LPDWORD);
|
|
INT WINAPI WSAGetServiceClassNameByClassIdW(LPGUID, LPWSTR, LPDWORD);
|
|
int WINAPI WSAHtonl(SOCKET, unsigned long, unsigned long *);
|
|
int WINAPI WSAHtons(SOCKET, unsigned short, unsigned short *);
|
|
INT WINAPI WSAInstallServiceClassA(LPWSASERVICECLASSINFOA);
|
|
INT WINAPI WSAInstallServiceClassW(LPWSASERVICECLASSINFOW);
|
|
int WINAPI WSAIoctl(SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
|
|
SOCKET WINAPI WSAJoinLeaf(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD);
|
|
INT WINAPI WSALookupServiceBeginA(LPWSAQUERYSETA, DWORD, LPHANDLE);
|
|
INT WINAPI WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions, DWORD, LPHANDLE);
|
|
INT WINAPI WSALookupServiceNextA(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA);
|
|
INT WINAPI WSALookupServiceNextW(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW);
|
|
INT WINAPI WSALookupServiceEnd(HANDLE);
|
|
int WINAPI WSANtohl(SOCKET, unsigned long, unsigned long *);
|
|
int WINAPI WSANtohs(SOCKET, unsigned short, unsigned short *);
|
|
int WINAPI WSARecv(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
|
|
int WINAPI WSARecvDisconnect(SOCKET, LPWSABUF);
|
|
int WINAPI WSARecvFrom(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, struct sockaddr *, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
|
|
INT WINAPI WSARemoveServiceClass(LPGUID);
|
|
BOOL WINAPI WSAResetEvent(WSAEVENT);
|
|
int WINAPI WSASend(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
|
|
int WINAPI WSASendDisconnect(SOCKET, LPWSABUF);
|
|
int WINAPI WSASendTo(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
|
|
BOOL WINAPI WSASetEvent(WSAEVENT);
|
|
INT WSAAPI WSASetServiceA(LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD);
|
|
INT WINAPI WSASetServiceW(LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD);
|
|
SOCKET WINAPI WSASocketA(int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD);
|
|
SOCKET WINAPI WSASocketW(int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD);
|
|
INT WINAPI WSAStringToAddressA(LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT);
|
|
INT WINAPI WSAStringToAddressW(LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT);
|
|
DWORD WINAPI WSAWaitForMultipleEvents(DWORD, const WSAEVENT *, BOOL, DWORD, BOOL);
|
|
|
|
typedef SOCKET (WINAPI *LPFN_WSAACCEPT)(SOCKET, struct sockaddr *, LPINT, LPCONDITIONPROC, DWORD);
|
|
typedef INT (WINAPI *LPFN_WSAADDRESSTOSTRINGA)(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD);
|
|
typedef INT (WINAPI *LPFN_WSAADDRESSTOSTRINGW)(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD);
|
|
typedef BOOL (WINAPI *LPFN_WSACLOSEEVENT)(WSAEVENT);
|
|
typedef int (WINAPI *LPFN_WSACONNECT)(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS);
|
|
typedef WSAEVENT (WINAPI *LPFN_WSACREATEEVENT)(void);
|
|
typedef int (WINAPI *LPFN_WSADUPLICATESOCKETA)(SOCKET, DWORD, LPWSAPROTOCOL_INFOA);
|
|
typedef int (WINAPI *LPFN_WSADUPLICATESOCKETW)(SOCKET, DWORD, LPWSAPROTOCOL_INFOW);
|
|
typedef INT (WINAPI *LPFN_WSAENUMNAMESPACEPROVIDERSA)(LPDWORD, LPWSANAMESPACE_INFOA);
|
|
typedef INT (WINAPI *LPFN_WSAENUMNAMESPACEPROVIDERSW)(LPDWORD, LPWSANAMESPACE_INFOW);
|
|
typedef int (WINAPI *LPFN_WSAENUMNETWORKEVENTS)(SOCKET, WSAEVENT, LPWSANETWORKEVENTS);
|
|
typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSA)(LPINT, LPWSAPROTOCOL_INFOA, LPDWORD);
|
|
typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSW)(LPINT, LPWSAPROTOCOL_INFOW, LPDWORD);
|
|
typedef int (WINAPI *LPFN_WSAEVENTSELECT)(SOCKET, WSAEVENT, long);
|
|
typedef BOOL (WINAPI *LPFN_WSAGETOVERLAPPEDRESULT)(SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD);
|
|
typedef BOOL (WINAPI *LPFN_WSAGETQOSBYNAME)(SOCKET, LPWSABUF, LPQOS);
|
|
typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSINFOA)(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA);
|
|
typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSINFOW)(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW);
|
|
typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA)(LPGUID, LPSTR, LPDWORD);
|
|
typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW)(LPGUID, LPWSTR, LPDWORD);
|
|
typedef int (WINAPI *LPFN_WSAHTONL)(SOCKET, unsigned long, unsigned long *);
|
|
typedef int (WINAPI *LPFN_WSAHTONS)(SOCKET, unsigned short, unsigned short *);
|
|
typedef INT (WINAPI *LPFN_WSAINSTALLSERVICECLASSA)(LPWSASERVICECLASSINFOA);
|
|
typedef INT (WINAPI *LPFN_WSAINSTALLSERVICECLASSW)(LPWSASERVICECLASSINFOW);
|
|
typedef int (WINAPI *LPFN_WSAIOCTL)(SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
|
|
typedef SOCKET (WINAPI *LPFN_WSAJOINLEAF)(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD);
|
|
typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEBEGINA)(LPWSAQUERYSETA, DWORD, LPHANDLE);
|
|
typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEBEGINW)(LPWSAQUERYSETW, DWORD, LPHANDLE);
|
|
typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTA)(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA);
|
|
typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTW)(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW);
|
|
typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEEND)(HANDLE);
|
|
typedef int (WINAPI *LPFN_WSANTOHL)(SOCKET, unsigned long, unsigned long *);
|
|
typedef int (WINAPI *LPFN_WSANTOHS)(SOCKET, unsigned short, unsigned short *);
|
|
typedef int (WINAPI *LPFN_WSARECV)(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
|
|
typedef int (WINAPI *LPFN_WSARECVDISCONNECT)(SOCKET, LPWSABUF);
|
|
typedef int (WINAPI *LPFN_WSARECVFROM)(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, struct sockaddr *, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
|
|
typedef INT (WINAPI *LPFN_WSAREMOVESERVICECLASS)(LPGUID);
|
|
typedef BOOL (WINAPI *LPFN_WSARESETEVENT)(WSAEVENT);
|
|
typedef int (WINAPI *LPFN_WSASEND)(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
|
|
typedef int (WINAPI *LPFN_WSASENDDISCONNECT)(SOCKET, LPWSABUF);
|
|
typedef int (WINAPI *LPFN_WSASENDTO)(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
|
|
typedef BOOL (WINAPI *LPFN_WSASETEVENT)(WSAEVENT);
|
|
typedef INT (WINAPI *LPFN_WSASETSERVICEA)(LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD);
|
|
typedef INT (WINAPI *LPFN_WSASETSERVICEW)(LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD);
|
|
typedef SOCKET (WINAPI *LPFN_WSASOCKETA)(int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD);
|
|
typedef SOCKET (WINAPI *LPFN_WSASOCKETW)(int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD);
|
|
typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSA)(LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT);
|
|
typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSW)(LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT);
|
|
typedef DWORD (WINAPI *LPFN_WSAWAITFORMULTIPLEEVENTS)(DWORD, const WSAEVENT *, BOOL, DWORD, BOOL);
|
|
|
|
#ifdef UNICODE
|
|
#define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGW
|
|
#define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW
|
|
#define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
|
|
#define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSW
|
|
#define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOW
|
|
#define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW
|
|
#define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSW
|
|
#define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINW
|
|
#define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTW
|
|
#define LPFN_WSASETSERVICE LPFN_WSASETSERVICEW
|
|
#define LPFN_WSASOCKET LPFN_WSASOCKETW
|
|
#define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSW
|
|
#define WSAAddressToString WSAAddressToStringW
|
|
#define WSADuplicateSocket WSADuplicateSocketW
|
|
#define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
|
|
#define WSAEnumProtocols WSAEnumProtocolsW
|
|
#define WSAGetServiceClassInfo WSAGetServiceClassInfoW
|
|
#define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW
|
|
#define WSASetService WSASetServiceW
|
|
#define WSASocket WSASocketW
|
|
#define WSAStringToAddress WSAStringToAddressW
|
|
#define WSALookupServiceBegin WSALookupServiceBeginW
|
|
#define WSALookupServiceNext WSALookupServiceNextW
|
|
#define WSAInstallServiceClass WSAInstallServiceClassW
|
|
#else
|
|
#define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGA
|
|
#define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW
|
|
#define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSA
|
|
#define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSA
|
|
#define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOA
|
|
#define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA
|
|
#define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSA
|
|
#define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINA
|
|
#define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTA
|
|
#define LPFN_WSASETSERVICE LPFN_WSASETSERVICEA
|
|
#define LPFN_WSASOCKET LPFN_WSASOCKETA
|
|
#define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSA
|
|
#define WSAAddressToString WSAAddressToStringA
|
|
#define WSADuplicateSocket WSADuplicateSocketA
|
|
#define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA
|
|
#define WSAEnumProtocols WSAEnumProtocolsA
|
|
#define WSAGetServiceClassInfo WSAGetServiceClassInfoA
|
|
#define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA
|
|
#define WSAInstallServiceClass WSAInstallServiceClassA
|
|
#define WSALookupServiceBegin WSALookupServiceBeginA
|
|
#define WSALookupServiceNext WSALookupServiceNextA
|
|
#define WSASocket WSASocketA
|
|
#define WSAStringToAddress WSAStringToAddressA
|
|
#define WSASetService WSASetServiceA
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|