| 1 | #ifndef _WSAHELP_H | 
 
 
 
 
 | 2 | #define _WSAHELP_H | 
 
 
 
 
 | 3 | #if __GNUC__ >= 3 | 
 
 
 
 
 | 4 | #pragma GCC system_header | 
 
 
 
 
 | 5 | #endif | 
 
 
 
 
 | 6 |  | 
 
 
 
 
 | 7 | #include <winsock2.h> | 
 
 
 
 
 | 8 | #include <ntsecapi.h> | 
 
 
 
 
 | 9 | #ifdef __cplusplus | 
 
 
 
 
 | 10 | extern "C" { | 
 
 
 
 
 | 11 | #endif /* __cplusplus */ | 
 
 
 
 
 | 12 |  | 
 
 
 
 
 | 13 | #define WSH_NOTIFY_BIND 0x00000001 | 
 
 
 
 
 | 14 | #define WSH_NOTIFY_LISTEN 0x00000002 | 
 
 
 
 
 | 15 | #define WSH_NOTIFY_CONNECT 0x00000004 | 
 
 
 
 
 | 16 | #define WSH_NOTIFY_ACCEPT 0x00000008 | 
 
 
 
 
 | 17 | #define WSH_NOTIFY_SHUTDOWN_RECEIVE 0x00000010 | 
 
 
 
 
 | 18 | #define WSH_NOTIFY_SHUTDOWN_SEND 0x00000020 | 
 
 
 
 
 | 19 | #define WSH_NOTIFY_SHUTDOWN_ALL 0x00000040 | 
 
 
 
 
 | 20 | #define WSH_NOTIFY_CLOSE 0x00000080 | 
 
 
 
 
 | 21 | #define WSH_NOTIFY_CONNECT_ERROR 0x00000100 | 
 
 
 
 
 | 22 | #define SOL_INTERNAL 0xFFFE | 
 
 
 
 
 | 23 | #define SO_CONTEXT 1 | 
 
 
 
 
 | 24 |  | 
 
 
 
 
 | 25 | #ifndef RC_INVOKED | 
 
 
 
 
 | 26 | typedef enum _SOCKADDR_ADDRESS_INFO { | 
 
 
 
 
 | 27 | SockaddrAddressInfoNormal, | 
 
 
 
 
 | 28 | SockaddrAddressInfoWildcard, | 
 
 
 
 
 | 29 | SockaddrAddressInfoBroadcast, | 
 
 
 
 
 | 30 | SockaddrAddressInfoLoopback | 
 
 
 
 
 | 31 | } SOCKADDR_ADDRESS_INFO, *PSOCKADDR_ADDRESS_INFO; | 
 
 
 
 
 | 32 | typedef enum _SOCKADDR_ENDPOINT_INFO { | 
 
 
 
 
 | 33 | SockaddrEndpointInfoNormal, | 
 
 
 
 
 | 34 | SockaddrEndpointInfoWildcard, | 
 
 
 
 
 | 35 | SockaddrEndpointInfoReserved | 
 
 
 
 
 | 36 | } SOCKADDR_ENDPOINT_INFO, *PSOCKADDR_ENDPOINT_INFO; | 
 
 
 
 
 | 37 | typedef struct _SOCKADDR_INFO { | 
 
 
 
 
 | 38 | SOCKADDR_ADDRESS_INFO AddressInfo; | 
 
 
 
 
 | 39 | SOCKADDR_ENDPOINT_INFO EndpointInfo; | 
 
 
 
 
 | 40 | } SOCKADDR_INFO, *PSOCKADDR_INFO; | 
 
 
 
 
 | 41 |  | 
 
 
 
 
 | 42 | INT WINAPI WSHAddressToString(LPSOCKADDR,INT,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD); | 
 
 
 
 
 | 43 | INT WINAPI WSHEnumProtocols(LPINT,LPWSTR,LPVOID,LPDWORD); | 
 
 
 
 
 | 44 | INT WINAPI WSHGetBroadcastSockaddr(PVOID,PSOCKADDR,PINT); | 
 
 
 
 
 | 45 | INT WINAPI WSHGetProviderGuid(LPWSTR,LPGUID); | 
 
 
 
 
 | 46 | INT WINAPI WSHGetSockaddrType(PSOCKADDR,DWORD,PSOCKADDR_INFO); | 
 
 
 
 
 | 47 | INT WINAPI WSHGetSocketInformation(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT); | 
 
 
 
 
 | 48 | INT WINAPI WSHGetWildcardSockaddr(PVOID,PSOCKADDR,PINT); | 
 
 
 
 
 | 49 | INT WINAPI WSHGetWSAProtocolInfo(LPWSTR,LPWSAPROTOCOL_INFOW*,LPDWORD); | 
 
 
 
 
 | 50 | INT WINAPI WSHIoctl(PVOID,SOCKET,HANDLE,HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD, | 
 
 
 
 
 | 51 | LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPBOOL); | 
 
 
 
 
 | 52 | INT WINAPI WSHJoinLeaf(PVOID,SOCKET,HANDLE,HANDLE,PVOID,SOCKET,PSOCKADDR, | 
 
 
 
 
 | 53 | DWORD,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD); | 
 
 
 
 
 | 54 | INT WINAPI WSHNotify(PVOID,SOCKET,HANDLE,HANDLE,DWORD); | 
 
 
 
 
 | 55 | INT WINAPI WSHOpenSocket(PINT,PINT,PINT,PUNICODE_STRING,PVOID,PDWORD); | 
 
 
 
 
 | 56 | INT WINAPI WSHOpenSocket2(PINT,PINT,PINT,GROUP,DWORD,PUNICODE_STRING,PVOID*,PDWORD); | 
 
 
 
 
 | 57 | INT WINAPI WSHSetSocketInformation(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT); | 
 
 
 
 
 | 58 | INT WINAPI WSHStringToAddress(LPWSTR,DWORD,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPDWORD); | 
 
 
 
 
 | 59 |  | 
 
 
 
 
 | 60 | typedef INT (WINAPI *PWSH_ADDRESS_TO_STRING)(LPSOCKADDR,INT,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD); | 
 
 
 
 
 | 61 | typedef INT (WINAPI *PWSH_ENUM_PROTOCOLS)(LPINT,LPWSTR,LPVOID,LPDWORD); | 
 
 
 
 
 | 62 | typedef INT (WINAPI *PWSH_GET_BROADCAST_SOCKADDR)(PVOID,PSOCKADDR,PINT); | 
 
 
 
 
 | 63 | typedef INT (WINAPI *PWSH_GET_PROVIDER_GUID)(LPWSTR,LPGUID); | 
 
 
 
 
 | 64 | typedef INT (WINAPI *PWSH_GET_SOCKADDR_TYPE)(PSOCKADDR,DWORD,PSOCKADDR_INFO); | 
 
 
 
 
 | 65 | typedef INT (WINAPI *PWSH_GET_SOCKET_INFORMATION)(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT); | 
 
 
 
 
 | 66 | typedef INT (WINAPI *PWSH_GET_WILDCARD_SOCKEADDR)(PVOID,PSOCKADDR,PINT); | 
 
 
 
 
 | 67 | typedef INT (WINAPI *PWSH_GET_WSAPROTOCOL_INFO)(LPWSTR,LPWSAPROTOCOL_INFOW*,LPDWORD); | 
 
 
 
 
 | 68 | typedef INT (WINAPI *PWSH_IOCTL)(PVOID,SOCKET,HANDLE,HANDLE,DWORD,LPVOID,DWORD, | 
 
 
 
 
 | 69 | LPVOID,DWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPBOOL); | 
 
 
 
 
 | 70 | typedef INT (WINAPI *PWSH_JOIN_LEAF)(PVOID,SOCKET,HANDLE,HANDLE,PVOID,SOCKET, | 
 
 
 
 
 | 71 | PSOCKADDR,DWORD,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD); | 
 
 
 
 
 | 72 | typedef INT (WINAPI *PWSH_NOTIFY)(PVOID,SOCKET,HANDLE,HANDLE,DWORD); | 
 
 
 
 
 | 73 | typedef INT (WINAPI *PWSH_OPEN_SOCKET)(PINT,PINT,PINT,PUNICODE_STRING,PVOID,PDWORD); | 
 
 
 
 
 | 74 | typedef INT (WINAPI *PWSH_OPEN_SOCKET2)(PINT,PINT,PINT,GROUP,DWORD,PUNICODE_STRING,PVOID*,PDWORD); | 
 
 
 
 
 | 75 | typedef INT (WINAPI *PWSH_SET_SOCKET_INFORMATION)(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT); | 
 
 
 
 
 | 76 | typedef INT (WINAPI *PWSH_STRING_TO_ADDRESS)(LPWSTR,DWORD,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPDWORD); | 
 
 
 
 
 | 77 |  | 
 
 
 
 
 | 78 | #ifndef __OBJC__ | 
 
 
 
 
 | 79 | /* "Protocol" is a builtin class name in ObjC.  */ | 
 
 
 
 
 | 80 | typedef struct _WINSOCK_MAPPING { | 
 
 
 
 
 | 81 | DWORD Rows; | 
 
 
 
 
 | 82 | DWORD Columns; | 
 
 
 
 
 | 83 | struct { | 
 
 
 
 
 | 84 | DWORD AddressFamily; | 
 
 
 
 
 | 85 | DWORD SocketType; | 
 
 
 
 
 | 86 | DWORD Protocol; | 
 
 
 
 
 | 87 | } Mapping[1]; | 
 
 
 
 
 | 88 | } WINSOCK_MAPPING, *PWINSOCK_MAPPING; | 
 
 
 
 
 | 89 | DWORD WINAPI WSHGetWinsockMapping(PWINSOCK_MAPPING,DWORD); | 
 
 
 
 
 | 90 | typedef DWORD (WINAPI *PWSH_GET_WINSOCK_MAPPING)(PWINSOCK_MAPPING,DWORD); | 
 
 
 
 
 | 91 | #endif | 
 
 
 
 
 | 92 |  | 
 
 
 
 
 | 93 | #endif /* RC_INVOKED */ | 
 
 
 
 
 | 94 |  | 
 
 
 
 
 | 95 | #ifdef __cplusplus | 
 
 
 
 
 | 96 | } | 
 
 
 
 
 | 97 | #endif /* __cplusplus */ | 
 
 
 
 
 | 98 | #endif |