| #ifndef _WSAHELP_H |
| #define _WSAHELP_H |
| #if __GNUC__ >= 3 |
| #pragma GCC system_header |
| #endif |
| |
| #include <winsock2.h> |
| #include <ntsecapi.h> |
| #ifdef __cplusplus |
| extern "C" { |
| #endif /* __cplusplus */ |
| |
| #define WSH_NOTIFY_BIND 0x00000001 |
| #define WSH_NOTIFY_LISTEN 0x00000002 |
| #define WSH_NOTIFY_CONNECT 0x00000004 |
| #define WSH_NOTIFY_ACCEPT 0x00000008 |
| #define WSH_NOTIFY_SHUTDOWN_RECEIVE 0x00000010 |
| #define WSH_NOTIFY_SHUTDOWN_SEND 0x00000020 |
| #define WSH_NOTIFY_SHUTDOWN_ALL 0x00000040 |
| #define WSH_NOTIFY_CLOSE 0x00000080 |
| #define WSH_NOTIFY_CONNECT_ERROR 0x00000100 |
| #define SOL_INTERNAL 0xFFFE |
| #define SO_CONTEXT 1 |
| |
| #ifndef RC_INVOKED |
| typedef enum _SOCKADDR_ADDRESS_INFO { |
| SockaddrAddressInfoNormal, |
| SockaddrAddressInfoWildcard, |
| SockaddrAddressInfoBroadcast, |
| SockaddrAddressInfoLoopback |
| } SOCKADDR_ADDRESS_INFO, *PSOCKADDR_ADDRESS_INFO; |
| typedef enum _SOCKADDR_ENDPOINT_INFO { |
| SockaddrEndpointInfoNormal, |
| SockaddrEndpointInfoWildcard, |
| SockaddrEndpointInfoReserved |
| } SOCKADDR_ENDPOINT_INFO, *PSOCKADDR_ENDPOINT_INFO; |
| typedef struct _SOCKADDR_INFO { |
| SOCKADDR_ADDRESS_INFO AddressInfo; |
| SOCKADDR_ENDPOINT_INFO EndpointInfo; |
| } SOCKADDR_INFO, *PSOCKADDR_INFO; |
| |
| INT WINAPI WSHAddressToString(LPSOCKADDR,INT,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD); |
| INT WINAPI WSHEnumProtocols(LPINT,LPWSTR,LPVOID,LPDWORD); |
| INT WINAPI WSHGetBroadcastSockaddr(PVOID,PSOCKADDR,PINT); |
| INT WINAPI WSHGetProviderGuid(LPWSTR,LPGUID); |
| INT WINAPI WSHGetSockaddrType(PSOCKADDR,DWORD,PSOCKADDR_INFO); |
| INT WINAPI WSHGetSocketInformation(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT); |
| INT WINAPI WSHGetWildcardSockaddr(PVOID,PSOCKADDR,PINT); |
| INT WINAPI WSHGetWSAProtocolInfo(LPWSTR,LPWSAPROTOCOL_INFOW*,LPDWORD); |
| INT WINAPI WSHIoctl(PVOID,SOCKET,HANDLE,HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD, |
| LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPBOOL); |
| INT WINAPI WSHJoinLeaf(PVOID,SOCKET,HANDLE,HANDLE,PVOID,SOCKET,PSOCKADDR, |
| DWORD,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD); |
| INT WINAPI WSHNotify(PVOID,SOCKET,HANDLE,HANDLE,DWORD); |
| INT WINAPI WSHOpenSocket(PINT,PINT,PINT,PUNICODE_STRING,PVOID,PDWORD); |
| INT WINAPI WSHOpenSocket2(PINT,PINT,PINT,GROUP,DWORD,PUNICODE_STRING,PVOID*,PDWORD); |
| INT WINAPI WSHSetSocketInformation(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT); |
| INT WINAPI WSHStringToAddress(LPWSTR,DWORD,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPDWORD); |
| |
| typedef INT (WINAPI *PWSH_ADDRESS_TO_STRING)(LPSOCKADDR,INT,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD); |
| typedef INT (WINAPI *PWSH_ENUM_PROTOCOLS)(LPINT,LPWSTR,LPVOID,LPDWORD); |
| typedef INT (WINAPI *PWSH_GET_BROADCAST_SOCKADDR)(PVOID,PSOCKADDR,PINT); |
| typedef INT (WINAPI *PWSH_GET_PROVIDER_GUID)(LPWSTR,LPGUID); |
| typedef INT (WINAPI *PWSH_GET_SOCKADDR_TYPE)(PSOCKADDR,DWORD,PSOCKADDR_INFO); |
| typedef INT (WINAPI *PWSH_GET_SOCKET_INFORMATION)(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT); |
| typedef INT (WINAPI *PWSH_GET_WILDCARD_SOCKEADDR)(PVOID,PSOCKADDR,PINT); |
| typedef INT (WINAPI *PWSH_GET_WSAPROTOCOL_INFO)(LPWSTR,LPWSAPROTOCOL_INFOW*,LPDWORD); |
| typedef INT (WINAPI *PWSH_IOCTL)(PVOID,SOCKET,HANDLE,HANDLE,DWORD,LPVOID,DWORD, |
| LPVOID,DWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPBOOL); |
| typedef INT (WINAPI *PWSH_JOIN_LEAF)(PVOID,SOCKET,HANDLE,HANDLE,PVOID,SOCKET, |
| PSOCKADDR,DWORD,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD); |
| typedef INT (WINAPI *PWSH_NOTIFY)(PVOID,SOCKET,HANDLE,HANDLE,DWORD); |
| typedef INT (WINAPI *PWSH_OPEN_SOCKET)(PINT,PINT,PINT,PUNICODE_STRING,PVOID,PDWORD); |
| typedef INT (WINAPI *PWSH_OPEN_SOCKET2)(PINT,PINT,PINT,GROUP,DWORD,PUNICODE_STRING,PVOID*,PDWORD); |
| typedef INT (WINAPI *PWSH_SET_SOCKET_INFORMATION)(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT); |
| typedef INT (WINAPI *PWSH_STRING_TO_ADDRESS)(LPWSTR,DWORD,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPDWORD); |
| |
| #ifndef __OBJC__ |
| /* "Protocol" is a builtin class name in ObjC. */ |
| typedef struct _WINSOCK_MAPPING { |
| DWORD Rows; |
| DWORD Columns; |
| struct { |
| DWORD AddressFamily; |
| DWORD SocketType; |
| DWORD Protocol; |
| } Mapping[1]; |
| } WINSOCK_MAPPING, *PWINSOCK_MAPPING; |
| DWORD WINAPI WSHGetWinsockMapping(PWINSOCK_MAPPING,DWORD); |
| typedef DWORD (WINAPI *PWSH_GET_WINSOCK_MAPPING)(PWINSOCK_MAPPING,DWORD); |
| #endif |
| |
| #endif /* RC_INVOKED */ |
| |
| #ifdef __cplusplus |
| } |
| #endif /* __cplusplus */ |
| #endif |