#ifndef __WINSOCK2_H
#define __WINSOCK2_H
+#ifdef __USE_W32API
+
+#include_next <winsock2.h>
+
+#else /* __USE_W32API */
+
#include <windows.h>
+#include <stddef.h>
#ifdef __cplusplus
extern "C"
#define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT)
#define WSA_INFINITE (INFINITE)
-
+typedef enum _WSACOMPLETIONTYPE {
+ NSP_NOTIFY_IMMEDIATELY = 0,
+ NSP_NOTIFY_HWND,
+ NSP_NOTIFY_EVENT,
+ NSP_NOTIFY_PORT,
+ NSP_NOTIFY_APC,
+} WSACOMPLETIONTYPE, *PWSACOMPLETIONTYPE, FAR * LPWSACOMPLETIONTYPE;
#define IOCPARM_MASK 0x7f
#define IOC_VOID 0x20000000
#define SIOCATMARK _IOR('s', 7, ULONG)
+typedef unsigned short u_short;
+typedef unsigned long u_long;
+
+typedef struct in6_addr {
+ union {
+ UCHAR Byte[16];
+ USHORT Word[8];
+ } u;
+} IN6_ADDR;
+struct sockaddr_in6 {
+ short sin6_family;
+ u_short sin6_port;
+ u_long sin6_flowinfo;
+ struct in6_addr sin6_addr;
+ u_long sin6_scope_id;
+};
+
struct in_addr {
union {
struct { UCHAR s_b1, s_b2,s_b3,s_b4; } S_un_b;
typedef struct _WSAOVERLAPPED {
- DWORD Internal; // reserved
- DWORD InternalHigh; // reserved
- DWORD Offset; // reserved
- DWORD OffsetHigh; // reserved
+ 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
+ ULONG len; /* buffer length */
+ CHAR FAR* buf; /* pointer to buffer */
} WSABUF, FAR* LPWSABUF;
WCHAR szProtocol[WSAPROTOCOL_LEN + 1];
} WSAPROTOCOL_INFOW, FAR * LPWSAPROTOCOL_INFOW;
+#ifndef _DISABLE_TIDENTS
#ifdef UNICODE
typedef WSAPROTOCOL_INFOW WSAPROTOCOL_INFO;
typedef LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO;
typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO;
typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO;
#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
+
+typedef
+VOID
+CALLBACK (*LPSERVICE_CALLBACK_PROC) (
+ IN LPARAM lParam,
+ IN HANDLE hAsyncTaskHandle
+ );
+typedef struct _SERVICE_ASYNC_INFO {
+ LPSERVICE_CALLBACK_PROC lpServiceCallbackProc;
+ LPARAM lParam;
+ HANDLE hAsyncTaskHandle;
+} SERVICE_ASYNC_INFO, *PSERVICE_ASYNC_INFO, FAR * LPSERVICE_ASYNC_INFO;
/* WinSock 2 extended commands for WSAIoctl() */
CHAR FAR* s_proto;
};
-// It is assumed here that a network number fits in 32 bits.
+/* 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
+ 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 */
};
LPWSAOVERLAPPED lpOverlapped,
DWORD dwFlags);
+typedef struct _WSACOMPLETION {
+ WSACOMPLETIONTYPE Type;
+ union {
+ struct {
+ HWND hWnd;
+ UINT uMsg;
+ WPARAM context;
+ } WindowMessage;
+ struct {
+ LPWSAOVERLAPPED lpOverlapped;
+ } Event;
+ struct {
+ LPWSAOVERLAPPED lpOverlapped;
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc;
+ } Apc;
+ struct {
+ LPWSAOVERLAPPED lpOverlapped;
+ HANDLE hPort;
+ ULONG_PTR Key;
+ } Port;
+ } Parameters;
+} WSACOMPLETION, *PWSACOMPLETION, FAR *LPWSACOMPLETION;
/* Microsoft Windows extended data types */
CHAR FAR* lpVendorInfo;
} WSADATA, FAR* LPWSADATA;
-#ifndef _BLOB_DEFINED
-#define _BLOB_DEFINED
+#ifndef __BLOB_T_DEFINED
+#define __BLOB_T_DEFINED
typedef struct _BLOB {
ULONG cbSize;
BYTE *pBlobData;
LPWSTR lpszIdentifier;
} WSANAMESPACE_INFOW, *PWSANAMESPACE_INFOW, *LPWSANAMESPACE_INFOW;
+#ifndef _DISABLE_TIDENTS
#ifdef UNICODE
typedef WSANAMESPACE_INFOW WSANAMESPACE_INFO;
typedef PWSANAMESPACE_INFOW PWSANAMESPACE_INFO;
typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO;
typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO;
#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
+typedef struct _TRANSMIT_FILE_BUFFERS {
+ LPVOID Head;
+ DWORD HeadLength;
+ LPVOID Tail;
+ DWORD TailLength;
+} TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, FAR *LPTRANSMIT_FILE_BUFFERS;
+
+typedef struct addrinfo
+{
+ int ai_flags;
+ int ai_family;
+ int ai_socktype;
+ int ai_protocol;
+ size_t ai_addrlen;
+ char * ai_canonname;
+ struct sockaddr * ai_addr;
+ struct addrinfo * ai_next;
+}
+ADDRINFO, *LPADDRINFO;
typedef enum _WSAEcomparator
{
LPBLOB lpBlob;
} WSAQUERYSETW, *PWSAQUERYSETW, *LPWSAQUERYSETW;
+#ifndef _DISABLE_TIDENTS
#ifdef UNICODE
typedef WSAQUERYSETW WSAQUERYSET;
typedef PWSAQUERYSETW PWSAQUERYSET;
typedef PWSAQUERYSETA PWSAQUERYSET;
typedef LPWSAQUERYSETA LPWSAQUERYSET;
#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
typedef enum _WSAESETSERVICEOP {
LPVOID lpValue;
} WSANSCLASSINFOW, *PWSANSCLASSINFOW, *LPWSANSCLASSINFOW;
+#ifndef _DISABLE_TIDENTS
#ifdef UNICODE
typedef WSANSCLASSINFOW WSANSCLASSINFO;
typedef PWSANSCLASSINFOW PWSANSCLASSINFO;
typedef PWSANSCLASSINFOA PWSANSCLASSINFO;
typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO;
#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
typedef struct _WSAServiceClassInfoA {
LPGUID lpServiceClassId;
LPWSANSCLASSINFOW lpClassInfos;
} WSASERVICECLASSINFOW, *PWSASERVICECLASSINFOW, *LPWSASERVICECLASSINFOW;
+#ifndef _DISABLE_TIDENTS
#ifdef UNICODE
typedef WSASERVICECLASSINFOW WSASERVICECLASSINFO;
typedef PWSASERVICECLASSINFOW PWSASERVICECLASSINFO;
typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO;
typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO;
#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
/* WinSock 2 DLL prototypes */
IN DWORD dwProcessId,
OUT LPWSAPROTOCOL_INFOW lpProtocolInfo);
+#ifndef _DISABLE_TIDENTS
#ifdef UNICODE
#define WSADuplicateSocket WSADuplicateSocketA
#else /* UNICODE */
#define WSADuplicateSocket WSADuplicateSocketW
#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
INT
WSAAPI
OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer,
IN OUT LPDWORD lpdwBufferLength);
+#ifndef _DISABLE_TIDENTS
#ifdef UNICODE
#define WSAEnumProtocols WSAEnumProtocolsA
#else /* UNICODE */
#define WSAEnumProtocols WSAEnumProtocolsW
#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
INT
WSAAPI
IN GROUP g,
IN DWORD dwFlags);
+#ifndef _DISABLE_TIDENTS
#ifdef UNICODE
#define WSASocket WSASocketW
#else /* UNICODE */
#define WSASocket WSASocketA
#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
INT
WSAAPI
OUT LPWSTR lpszAddressString,
IN OUT LPDWORD lpdwAddressStringLength);
+#ifndef _DISABLE_TIDENTS
#ifdef UNICODE
#define WSAAddressToString WSAAddressToStringW
#else /* UNICODE */
#define WSAAddressToString WSAAddressToStringA
#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
INT
WSAAPI
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSANAMESPACE_INFOW lpnspBuffer);
+#ifndef _DISABLE_TIDENTS
#ifdef UNICODE
#define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
#else /* UNICODE */
#define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA
#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
+
+typedef int socklen_t;
INT
WSAAPI
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSASERVICECLASSINFOW lpServiceClassInfo);
+#ifndef _DISABLE_TIDENTS
#ifdef UNICODE
#define WSAGetServiceClassInfo WSAGetServiceClassInfoW
#else /* UNICODE */
#define WSAGetServiceClassInfo WSAGetServiceClassInfoA
#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
INT
WSAAPI
OUT LPWSTR lpszServiceClassName,
IN OUT LPDWORD lpdwBufferLength);
+#ifndef _DISABLE_TIDENTS
#ifdef UNICODE
#define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW
#else /* UNICODE */
#define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA
#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
INT
WSAAPI
WSAInstallServiceClassW(
IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
+#ifndef _DISABLE_TIDENTS
#ifdef UNICODE
#define WSAInstallServiceClass WSAInstallServiceClassW
#else /* UNICODE */
#define WSAInstallServiceClass WSAInstallServiceClassA
#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
+
+INT
+WSAAPI
+WSALookupServiceBeginA(
+ IN LPWSAQUERYSETA lpqsRestrictions,
+ IN DWORD dwControlFlags,
+ OUT LPHANDLE lphLookup);
INT
WSAAPI
-WSALookupServiceBegin(
- IN LPWSAQUERYSET lpqsRestrictions,
+WSALookupServiceBeginW(
+ IN LPWSAQUERYSETW lpqsRestrictions,
IN DWORD dwControlFlags,
OUT LPHANDLE lphLookup);
+#ifndef _DISABLE_TIDENTS
+#ifdef UNICODE
+#define WSALookupServiceBegin WSALookupServiceBeginW
+#else /* UNICODE */
+#define WSALookupServiceBegin WSALookupServiceBeginA
+#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
+
INT
WSAAPI
WSALookupServiceEnd(
INT
WSAAPI
-WSALookupServiceNext(
- IN HANDLE hLookup,
- IN DWORD dwControlFlags,
- IN OUT LPDWORD lpdwBufferLength,
- OUT LPWSAQUERYSET lpqsResults);
+WSALookupServiceNextA(
+ IN HANDLE hLookup,
+ IN DWORD dwControlFlags,
+ IN OUT LPDWORD lpdwBufferLength,
+ OUT LPWSAQUERYSETA lpqsResults);
+
+INT
+WSAAPI
+WSALookupServiceNextW(
+ IN HANDLE hLookup,
+ IN DWORD dwControlFlags,
+ IN OUT LPDWORD lpdwBufferLength,
+ OUT LPWSAQUERYSETW lpqsResults);
+
+#ifndef _DISABLE_TIDENTS
+#ifdef UNICODE
+#define WSALookupServiceNext WSALookupServiceNextW
+#else /* UNICODE */
+#define WSALookupServiceNext WSALookupServiceNextA
+#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
INT
WSAAPI
INT
WSAAPI
-WSASetService(
- IN LPWSAQUERYSET lpqsRegInfo,
+WSASetServiceA(
+ IN LPWSAQUERYSETA lpqsRegInfo,
IN WSAESETSERVICEOP essOperation,
- IN DWORD dwControlFlags);
+ IN DWORD dwControlFlags);
+
+INT
+WSAAPI
+WSASetServiceW(
+ IN LPWSAQUERYSETW lpqsRegInfo,
+ IN WSAESETSERVICEOP essOperation,
+ IN DWORD dwControlFlags);
+
+#ifndef _DISABLE_TIDENTS
+#ifdef UNICODE
+#define WSASetService WSASetServiceW
+#else /* UNICODE */
+#define WSASetService WSASetServiceA
+#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
INT
WSAAPI
OUT LPSOCKADDR lpAddress,
IN OUT LPINT lpAddressLength);
+#ifndef _DISABLE_TIDENTS
#ifdef UNICODE
#define WSAStringToAddress WSAStringToAddressW
#else /* UNICODE */
#define WSAStringToAddress WSAStringToAddressA
#endif /* UNICODE */
+#endif /* _DISABLE_TIDENTS */
/* WinSock 1.1 compatible name resolution APIs */
WSACancelAsyncRequest(
IN HANDLE hAsyncTaskHandle);
+INT
+WSAAPI
+WSANSPIoctl(
+ HANDLE hLookup,
+ DWORD dwControlCode,
+ LPVOID lpvInBuffer,
+ DWORD cbInBuffer,
+ LPVOID lpvOutBuffer,
+ DWORD cbOutBuffer,
+ LPDWORD lpcbBytesReturned,
+ LPWSACOMPLETION lpCompletion
+ );
+
+INT
+WSAAPI
+WSCUpdateProvider(
+ LPGUID lpProviderId,
+ const WCHAR FAR * lpszProviderDllPath,
+ const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ DWORD dwNumberOfEntries,
+ LPINT lpErrno
+ );
+
+INT
+WSAAPI
+WSCWriteNameSpaceOrder (
+ LPGUID lpProviderId,
+ DWORD dwNumberOfEntries
+ );
+
+VOID
+WSAAPI
+freeaddrinfo(
+ LPADDRINFO pAddrInfo
+ );
+
+INT
+WSAAPI
+getaddrinfo(
+ const char FAR * nodename,
+ const char FAR * servname,
+ const struct addrinfo FAR * hints,
+ struct addrinfo FAR * FAR * res
+ );
+
+INT
+WSAAPI
+getnameinfo(
+ const struct sockaddr FAR * sa,
+ socklen_t salen,
+ char FAR * host,
+ DWORD hostlen,
+ char FAR * serv,
+ DWORD servlen,
+ INT flags
+ );
+
+WINBOOL
+STDCALL
+AcceptEx(SOCKET sListenSocket,SOCKET sAcceptSocket,PVOID lpOutputBuffer,DWORD dwReceiveDataLength,DWORD dwLocalAddressLength,DWORD dwRemoteAddressLength,LPDWORD lpdwBytesReceived,LPOVERLAPPED lpOverlapped);
+INT
+STDCALL
+EnumProtocolsA(LPINT lpiProtocols,LPVOID lpProtocolBuffer,LPDWORD lpdwBufferLength);
+INT
+STDCALL
+EnumProtocolsW(LPINT lpiProtocols,LPVOID lpProtocolBuffer,LPDWORD lpdwBufferLength);
+VOID
+STDCALL
+GetAcceptExSockaddrs(PVOID lpOutputBuffer,DWORD dwReceiveDataLength,DWORD dwLocalAddressLength,DWORD dwRemoteAddressLength,struct sockaddr **LocalSockaddr,LPINT LocalSockaddrLength,struct sockaddr **RemoteSockaddr,LPINT RemoteSockaddrLength);
+INT
+STDCALL
+GetAddressByNameA(DWORD dwNameSpace,LPGUID lpServiceType,LPSTR lpServiceName,LPINT lpiProtocols,DWORD dwResolution,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,LPVOID lpCsaddrBuffer,LPDWORD lpdwBufferLength,LPSTR lpAliasBuffer,LPDWORD lpdwAliasBufferLength);
+INT
+STDCALL
+GetAddressByNameW(DWORD dwNameSpace,LPGUID lpServiceType,LPWSTR lpServiceName,LPINT lpiProtocols,DWORD dwResolution,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,LPVOID lpCsaddrBuffer,LPDWORD lpdwBufferLength,LPWSTR lpAliasBuffer,LPDWORD lpdwAliasBufferLength);
+INT
+STDCALL
+GetNameByTypeA(LPGUID lpServiceType,LPSTR lpServiceName,DWORD dwNameLength);
+INT
+STDCALL
+GetNameByTypeW(LPGUID lpServiceType,LPWSTR lpServiceName,DWORD dwNameLength);
+INT
+STDCALL
+GetServiceA(DWORD dwNameSpace,LPGUID lpGuid,LPSTR lpServiceName,DWORD dwProperties,LPVOID lpBuffer,LPDWORD lpdwBufferSize,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo);
+INT
+STDCALL
+GetServiceW(DWORD dwNameSpace,LPGUID lpGuid,LPWSTR lpServiceName,DWORD dwProperties,LPVOID lpBuffer,LPDWORD lpdwBufferSize,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo);
+INT
+STDCALL
+GetTypeByNameA(LPSTR lpServiceName,LPGUID lpServiceType);
+INT
+STDCALL
+GetTypeByNameW(LPWSTR lpServiceName,LPGUID lpServiceType);
+INT
+STDCALL
+SetServiceA(DWORD dwNameSpace,DWORD dwOperation,DWORD dwFlags,LPSERVICE_INFOA lpServiceInfo,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,LPDWORD lpdwStatusFlags);
+INT
+STDCALL
+SetServiceW(DWORD dwNameSpace,DWORD dwOperation,DWORD dwFlags,LPSERVICE_INFOW lpServiceInfo,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,LPDWORD lpdwStatusFlags);
+WINBOOL
+STDCALL
+TransmitFile(SOCKET hSocket,HANDLE hFile,DWORD nNumberOfBytesToWrite,DWORD nNumberOfBytesPerSend,LPOVERLAPPED lpOverlapped,LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers,DWORD dwReserved);
+INT
+STDCALL
+WSARecvEx(SOCKET s,LPSTR buf,INT len,LPINT flags);
+
+struct netent * STDCALL getnetbyname(const char *name);
+void STDCALL s_perror(LPCSTR message);
+UINT STDCALL inet_network(const char *cp);
+BOOL STDCALL WSApSetPostRoutine(PVOID Routine);
+
+typedef DWORD (* LPFN_NSPAPI) (VOID ) ;
+
+typedef struct _NS_ROUTINE {
+ DWORD dwFunctionCount;
+ LPFN_NSPAPI *alpfnFunctions;
+ DWORD dwNameSpace;
+ DWORD dwPriority;
+} NS_ROUTINE, *PNS_ROUTINE, * FAR LPNS_ROUTINE;
+
+INT
+APIENTRY
+NPLoadNameSpaces (
+ IN OUT LPDWORD lpdwVersion,
+ IN OUT LPNS_ROUTINE nsrBuffer,
+ IN OUT LPDWORD lpdwBufferLength
+ );
+
#ifdef __cplusplus
};
#endif /* __cplusplus */
+#endif /* !__USE_W32API */
+
#endif /* __WINSOCK2_H */
/* EOF */