3 * Copyright 2012, 2013 MinGW.org project
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
26 #pragma GCC system_header
34 #endif /* __cplusplus */
36 #define WSH_NOTIFY_BIND 0x00000001
37 #define WSH_NOTIFY_LISTEN 0x00000002
38 #define WSH_NOTIFY_CONNECT 0x00000004
39 #define WSH_NOTIFY_ACCEPT 0x00000008
40 #define WSH_NOTIFY_SHUTDOWN_RECEIVE 0x00000010
41 #define WSH_NOTIFY_SHUTDOWN_SEND 0x00000020
42 #define WSH_NOTIFY_SHUTDOWN_ALL 0x00000040
43 #define WSH_NOTIFY_CLOSE 0x00000080
44 #define WSH_NOTIFY_CONNECT_ERROR 0x00000100
45 #define SOL_INTERNAL 0xFFFE
49 typedef enum _SOCKADDR_ADDRESS_INFO {
50 SockaddrAddressInfoNormal,
51 SockaddrAddressInfoWildcard,
52 SockaddrAddressInfoBroadcast,
53 SockaddrAddressInfoLoopback
54 } SOCKADDR_ADDRESS_INFO, *PSOCKADDR_ADDRESS_INFO;
55 typedef enum _SOCKADDR_ENDPOINT_INFO {
56 SockaddrEndpointInfoNormal,
57 SockaddrEndpointInfoWildcard,
58 SockaddrEndpointInfoReserved
59 } SOCKADDR_ENDPOINT_INFO, *PSOCKADDR_ENDPOINT_INFO;
60 typedef struct _SOCKADDR_INFO {
61 SOCKADDR_ADDRESS_INFO AddressInfo;
62 SOCKADDR_ENDPOINT_INFO EndpointInfo;
63 } SOCKADDR_INFO, *PSOCKADDR_INFO;
65 INT WINAPI WSHAddressToString(LPSOCKADDR,INT,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD);
66 INT WINAPI WSHEnumProtocols(LPINT,LPWSTR,LPVOID,LPDWORD);
67 INT WINAPI WSHGetBroadcastSockaddr(PVOID,PSOCKADDR,PINT);
68 INT WINAPI WSHGetProviderGuid(LPWSTR,LPGUID);
69 INT WINAPI WSHGetSockaddrType(PSOCKADDR,DWORD,PSOCKADDR_INFO);
70 INT WINAPI WSHGetSocketInformation(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT);
71 INT WINAPI WSHGetWildcardSockaddr(PVOID,PSOCKADDR,PINT);
72 INT WINAPI WSHGetWSAProtocolInfo(LPWSTR,LPWSAPROTOCOL_INFOW*,LPDWORD);
73 INT WINAPI WSHIoctl(PVOID,SOCKET,HANDLE,HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,
74 LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPBOOL);
75 INT WINAPI WSHJoinLeaf(PVOID,SOCKET,HANDLE,HANDLE,PVOID,SOCKET,PSOCKADDR,
76 DWORD,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD);
77 INT WINAPI WSHNotify(PVOID,SOCKET,HANDLE,HANDLE,DWORD);
78 INT WINAPI WSHOpenSocket(PINT,PINT,PINT,PUNICODE_STRING,PVOID,PDWORD);
79 INT WINAPI WSHOpenSocket2(PINT,PINT,PINT,GROUP,DWORD,PUNICODE_STRING,PVOID*,PDWORD);
80 INT WINAPI WSHSetSocketInformation(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT);
81 INT WINAPI WSHStringToAddress(LPWSTR,DWORD,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPDWORD);
83 typedef INT (WINAPI *PWSH_ADDRESS_TO_STRING)(LPSOCKADDR,INT,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD);
84 typedef INT (WINAPI *PWSH_ENUM_PROTOCOLS)(LPINT,LPWSTR,LPVOID,LPDWORD);
85 typedef INT (WINAPI *PWSH_GET_BROADCAST_SOCKADDR)(PVOID,PSOCKADDR,PINT);
86 typedef INT (WINAPI *PWSH_GET_PROVIDER_GUID)(LPWSTR,LPGUID);
87 typedef INT (WINAPI *PWSH_GET_SOCKADDR_TYPE)(PSOCKADDR,DWORD,PSOCKADDR_INFO);
88 typedef INT (WINAPI *PWSH_GET_SOCKET_INFORMATION)(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT);
89 typedef INT (WINAPI *PWSH_GET_WILDCARD_SOCKEADDR)(PVOID,PSOCKADDR,PINT);
90 typedef INT (WINAPI *PWSH_GET_WSAPROTOCOL_INFO)(LPWSTR,LPWSAPROTOCOL_INFOW*,LPDWORD);
91 typedef INT (WINAPI *PWSH_IOCTL)(PVOID,SOCKET,HANDLE,HANDLE,DWORD,LPVOID,DWORD,
92 LPVOID,DWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPBOOL);
93 typedef INT (WINAPI *PWSH_JOIN_LEAF)(PVOID,SOCKET,HANDLE,HANDLE,PVOID,SOCKET,
94 PSOCKADDR,DWORD,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD);
95 typedef INT (WINAPI *PWSH_NOTIFY)(PVOID,SOCKET,HANDLE,HANDLE,DWORD);
96 typedef INT (WINAPI *PWSH_OPEN_SOCKET)(PINT,PINT,PINT,PUNICODE_STRING,PVOID,PDWORD);
97 typedef INT (WINAPI *PWSH_OPEN_SOCKET2)(PINT,PINT,PINT,GROUP,DWORD,PUNICODE_STRING,PVOID*,PDWORD);
98 typedef INT (WINAPI *PWSH_SET_SOCKET_INFORMATION)(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT);
99 typedef INT (WINAPI *PWSH_STRING_TO_ADDRESS)(LPWSTR,DWORD,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPDWORD);
102 /* "Protocol" is a builtin class name in ObjC. */
103 typedef struct _WINSOCK_MAPPING {
111 } WINSOCK_MAPPING, *PWINSOCK_MAPPING;
112 DWORD WINAPI WSHGetWinsockMapping(PWINSOCK_MAPPING,DWORD);
113 typedef DWORD (WINAPI *PWSH_GET_WINSOCK_MAPPING)(PWINSOCK_MAPPING,DWORD);
116 #endif /* RC_INVOKED */
120 #endif /* __cplusplus */