|
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 |