OSDN Git Service

* NEWS: Add and adjust release notes for 4.0.
[mingw/mingw-org-wsl.git] / include / wsahelp.h
1 /**
2  * @file wsahelp.h
3  * Copyright 2012, 2013 MinGW.org project
4  *
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:
11  * 
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
14  * Software.
15  * 
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.
23  */
24 #ifndef _WSAHELP_H
25 #define _WSAHELP_H
26 #pragma GCC system_header
27 #include <_mingw.h>
28
29 #include <winsock2.h>
30 #include <ntsecapi.h>
31
32 #ifdef __cplusplus
33 extern "C" {
34 #endif /* __cplusplus */
35
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
46 #define SO_CONTEXT 1
47
48 #ifndef RC_INVOKED
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;
64
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);
82
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);
100
101 #ifndef __OBJC__
102 /* "Protocol" is a builtin class name in ObjC.  */
103 typedef struct _WINSOCK_MAPPING {
104         DWORD Rows;
105         DWORD Columns;
106         struct {
107                 DWORD AddressFamily;
108                 DWORD SocketType;
109                 DWORD Protocol;
110         } Mapping[1];
111 } WINSOCK_MAPPING, *PWINSOCK_MAPPING;
112 DWORD WINAPI WSHGetWinsockMapping(PWINSOCK_MAPPING,DWORD);
113 typedef DWORD (WINAPI *PWSH_GET_WINSOCK_MAPPING)(PWINSOCK_MAPPING,DWORD);
114 #endif
115
116 #endif /* RC_INVOKED */
117
118 #ifdef __cplusplus
119 }
120 #endif /* __cplusplus */
121 #endif