ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MSYS2/mingw32/i686-w64-mingw32/include/ws2tcpip.h
Revision: 1166
Committed: Tue Oct 26 14:22:36 2021 UTC (4 years ago) by rossy
Content type: text/x-chdr
File size: 16702 byte(s)
Log Message:
Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File Contents

# Content
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6 #ifndef _WS2TCPIP_H_
7 #define _WS2TCPIP_H_
8
9 #include <_mingw_unicode.h>
10
11 #ifdef __LP64__
12 #pragma push_macro("u_long")
13 #undef u_long
14 #define u_long __ms_u_long
15 #endif
16
17 #include <winsock2.h>
18 #include <ws2ipdef.h>
19 #include <psdk_inc/_ip_mreq1.h>
20 #include <winapifamily.h>
21
22 #define SIO_GET_INTERFACE_LIST _IOR('t',127,u_long)
23
24 #define SIO_GET_INTERFACE_LIST_EX _IOR('t',126,u_long)
25 #define SIO_SET_MULTICAST_FILTER _IOW('t',125,u_long)
26 #define SIO_GET_MULTICAST_FILTER _IOW('t',124 | IOC_IN,u_long)
27
28 #define UDP_NOCHECKSUM 1
29 #define UDP_CHECKSUM_COVERAGE 20
30
31 #define TCP_EXPEDITED_1122 0x0002
32
33
34 #include <ws2ipdef.h>
35
36
37 #define SS_PORT(ssp) (((struct sockaddr_in*)(ssp))->sin_port)
38
39 #define IN6ADDR_ANY_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } }
40 #define IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } }
41
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45
46 extern const struct in6_addr in6addr_any;
47 extern const struct in6_addr in6addr_loopback;
48
49 int IN6_IS_ADDR_UNSPECIFIED(const struct in6_addr *);
50 int IN6_IS_ADDR_LOOPBACK(const struct in6_addr *);
51 int IN6_IS_ADDR_MULTICAST(const struct in6_addr *);
52 int IN6_IS_ADDR_LINKLOCAL(const struct in6_addr *);
53 int IN6_IS_ADDR_SITELOCAL(const struct in6_addr *);
54 int IN6_IS_ADDR_V4MAPPED(const struct in6_addr *);
55 int IN6_IS_ADDR_V4COMPAT(const struct in6_addr *);
56 int IN6_IS_ADDR_MC_NODELOCAL(const struct in6_addr *);
57 int IN6_IS_ADDR_MC_LINKLOCAL(const struct in6_addr *);
58 int IN6_IS_ADDR_MC_SITELOCAL(const struct in6_addr *);
59 int IN6_IS_ADDR_MC_ORGLOCAL(const struct in6_addr *);
60 int IN6_IS_ADDR_MC_GLOBAL(const struct in6_addr *);
61 int IN6ADDR_ISANY(const struct sockaddr_in6 *);
62 int IN6ADDR_ISLOOPBACK(const struct sockaddr_in6 *);
63 void IN6_SET_ADDR_UNSPECIFIED(struct in6_addr *);
64 void IN6_SET_ADDR_LOOPBACK(struct in6_addr *);
65 void IN6ADDR_SETANY(struct sockaddr_in6 *);
66 void IN6ADDR_SETLOOPBACK(struct sockaddr_in6 *);
67
68 WS2TCPIP_INLINE int IN6_IS_ADDR_UNSPECIFIED(const struct in6_addr *a) { return ((a->s6_words[0]==0) && (a->s6_words[1]==0) && (a->s6_words[2]==0) && (a->s6_words[3]==0) && (a->s6_words[4]==0) && (a->s6_words[5]==0) && (a->s6_words[6]==0) && (a->s6_words[7]==0)); }
69 WS2TCPIP_INLINE int IN6_IS_ADDR_LOOPBACK(const struct in6_addr *a) { return ((a->s6_words[0]==0) && (a->s6_words[1]==0) && (a->s6_words[2]==0) && (a->s6_words[3]==0) && (a->s6_words[4]==0) && (a->s6_words[5]==0) && (a->s6_words[6]==0) && (a->s6_words[7]==0x0100)); }
70 WS2TCPIP_INLINE int IN6_IS_ADDR_MULTICAST(const struct in6_addr *a) { return (a->s6_bytes[0]==0xff); }
71 WS2TCPIP_INLINE int IN6_IS_ADDR_LINKLOCAL(const struct in6_addr *a) { return ((a->s6_bytes[0]==0xfe) && ((a->s6_bytes[1] & 0xc0)==0x80)); }
72 WS2TCPIP_INLINE int IN6_IS_ADDR_SITELOCAL(const struct in6_addr *a) { return ((a->s6_bytes[0]==0xfe) && ((a->s6_bytes[1] & 0xc0)==0xc0)); }
73 WS2TCPIP_INLINE int IN6_IS_ADDR_V4MAPPED(const struct in6_addr *a) { return ((a->s6_words[0]==0) && (a->s6_words[1]==0) && (a->s6_words[2]==0) && (a->s6_words[3]==0) && (a->s6_words[4]==0) && (a->s6_words[5]==0xffff)); }
74 WS2TCPIP_INLINE int IN6_IS_ADDR_V4COMPAT(const struct in6_addr *a) { return ((a->s6_words[0]==0) && (a->s6_words[1]==0) && (a->s6_words[2]==0) && (a->s6_words[3]==0) && (a->s6_words[4]==0) && (a->s6_words[5]==0) && !((a->s6_words[6]==0) && (a->s6_addr[14]==0) && ((a->s6_addr[15]==0) || (a->s6_addr[15]==1)))); }
75 WS2TCPIP_INLINE int IN6_IS_ADDR_MC_NODELOCAL(const struct in6_addr *a) { return IN6_IS_ADDR_MULTICAST(a) && ((a->s6_bytes[1] & 0xf)==1); }
76 WS2TCPIP_INLINE int IN6_IS_ADDR_MC_LINKLOCAL(const struct in6_addr *a) { return IN6_IS_ADDR_MULTICAST(a) && ((a->s6_bytes[1] & 0xf)==2); }
77 WS2TCPIP_INLINE int IN6_IS_ADDR_MC_SITELOCAL(const struct in6_addr *a) { return IN6_IS_ADDR_MULTICAST(a) && ((a->s6_bytes[1] & 0xf)==5); }
78 WS2TCPIP_INLINE int IN6_IS_ADDR_MC_ORGLOCAL(const struct in6_addr *a) { return IN6_IS_ADDR_MULTICAST(a) && ((a->s6_bytes[1] & 0xf)==8); }
79 WS2TCPIP_INLINE int IN6_IS_ADDR_MC_GLOBAL(const struct in6_addr *a) { return IN6_IS_ADDR_MULTICAST(a) && ((a->s6_bytes[1] & 0xf)==0xe); }
80 WS2TCPIP_INLINE int IN6ADDR_ISANY(const struct sockaddr_in6 *a) { return ((a->sin6_family==AF_INET6) && IN6_IS_ADDR_UNSPECIFIED(&a->sin6_addr)); }
81 WS2TCPIP_INLINE int IN6ADDR_ISLOOPBACK(const struct sockaddr_in6 *a) { return ((a->sin6_family==AF_INET6) && IN6_IS_ADDR_LOOPBACK(&a->sin6_addr)); }
82 WS2TCPIP_INLINE void IN6_SET_ADDR_UNSPECIFIED(struct in6_addr *a) { memset(a->s6_bytes,0,sizeof(struct in6_addr)); }
83 WS2TCPIP_INLINE void IN6_SET_ADDR_LOOPBACK(struct in6_addr *a) {
84 memset(a->s6_bytes,0,sizeof(struct in6_addr));
85 a->s6_bytes[15] = 1;
86 }
87 WS2TCPIP_INLINE void IN6ADDR_SETANY(struct sockaddr_in6 *a) {
88 a->sin6_family = AF_INET6;
89 a->sin6_port = 0;
90 a->sin6_flowinfo = 0;
91 IN6_SET_ADDR_UNSPECIFIED(&a->sin6_addr);
92 a->sin6_scope_id = 0;
93 }
94 WS2TCPIP_INLINE void IN6ADDR_SETLOOPBACK(struct sockaddr_in6 *a) {
95 a->sin6_family = AF_INET6;
96 a->sin6_port = 0;
97 a->sin6_flowinfo = 0;
98 IN6_SET_ADDR_LOOPBACK(&a->sin6_addr);
99 a->sin6_scope_id = 0;
100 }
101
102 /* Those declarations are mandatory for Open Group Base spec */
103 #define IN6_IS_ADDR_UNSPECIFIED IN6_IS_ADDR_UNSPECIFIED
104 #define IN6_IS_ADDR_LOOPBACK IN6_IS_ADDR_LOOPBACK
105 #define IN6_IS_ADDR_MULTICAST IN6_IS_ADDR_MULTICAST
106 #define IN6_IS_ADDR_LINKLOCAL IN6_IS_ADDR_LINKLOCAL
107 #define IN6_IS_ADDR_SITELOCAL IN6_IS_ADDR_SITELOCAL
108 #define IN6_IS_ADDR_V4MAPPED IN6_IS_ADDR_V4MAPPED
109 #define IN6_IS_ADDR_V4COMPAT IN6_IS_ADDR_V4COMPAT
110 #define IN6_IS_ADDR_MC_NODELOCAL IN6_IS_ADDR_MC_NODELOCAL
111 #define IN6_IS_ADDR_MC_LINKLOCAL IN6_IS_ADDR_MC_LINKLOCAL
112 #define IN6_IS_ADDR_MC_SITELOCAL IN6_IS_ADDR_MC_SITELOCAL
113 #define IN6_IS_ADDR_MC_ORGLOCAL IN6_IS_ADDR_MC_ORGLOCAL
114 #define IN6_IS_ADDR_MC_GLOBAL IN6_IS_ADDR_MC_GLOBAL
115
116 #ifdef __cplusplus
117 }
118 #endif
119
120 typedef struct in_pktinfo {
121 IN_ADDR ipi_addr;
122 UINT ipi_ifindex;
123 } IN_PKTINFO;
124
125 C_ASSERT(sizeof(IN_PKTINFO)==8);
126
127 typedef struct in6_pktinfo {
128 IN6_ADDR ipi6_addr;
129 UINT ipi6_ifindex;
130 } IN6_PKTINFO;
131
132 C_ASSERT(sizeof(IN6_PKTINFO)==20);
133
134 #define EAI_AGAIN WSATRY_AGAIN
135 #define EAI_BADFLAGS WSAEINVAL
136 #define EAI_FAIL WSANO_RECOVERY
137 #define EAI_FAMILY WSAEAFNOSUPPORT
138 #define EAI_MEMORY WSA_NOT_ENOUGH_MEMORY
139
140 #define EAI_NONAME WSAHOST_NOT_FOUND
141 #define EAI_SERVICE WSATYPE_NOT_FOUND
142 #define EAI_SOCKTYPE WSAESOCKTNOSUPPORT
143
144 #define EAI_NODATA 11004 /* WSANO_DATA */
145
146 typedef struct addrinfo {
147 int ai_flags;
148 int ai_family;
149 int ai_socktype;
150 int ai_protocol;
151 size_t ai_addrlen;
152 char *ai_canonname;
153 struct sockaddr *ai_addr;
154 struct addrinfo *ai_next;
155 } ADDRINFOA,*PADDRINFOA;
156
157 typedef struct addrinfoW {
158 int ai_flags;
159 int ai_family;
160 int ai_socktype;
161 int ai_protocol;
162 size_t ai_addrlen;
163 PWSTR ai_canonname;
164 struct sockaddr *ai_addr;
165 struct addrinfoW *ai_next;
166 } ADDRINFOW,*PADDRINFOW;
167
168 typedef __MINGW_NAME_AW(ADDRINFO) ADDRINFOT,*PADDRINFOT;
169
170 typedef ADDRINFOA ADDRINFO,*LPADDRINFO;
171
172 #define AI_PASSIVE 0x00000001
173 #define AI_CANONNAME 0x00000002
174 #define AI_NUMERICHOST 0x00000004
175 #if (_WIN32_WINNT >= 0x0600)
176 #define AI_NUMERICSERV 0x00000008
177 #define AI_ALL 0x00000100
178 #define AI_ADDRCONFIG 0x00000400
179 #define AI_V4MAPPED 0x00000800
180 #define AI_NON_AUTHORITATIVE 0x00004000
181 #define AI_SECURE 0x00008000
182 #define AI_RETURN_PREFERRED_NAMES 0x00010000
183 #endif
184 #if (_WIN32_WINNT >= 0x0601)
185 #define AI_FQDN 0x00020000
186 #define AI_FILESERVER 0x00040000
187 #endif
188 #if (_WIN32_WINNT >= 0x0602)
189 #define AI_DISABLE_IDN_ENCODING 0x00080000
190 #endif
191
192 #ifdef __cplusplus
193 extern "C" {
194 #endif
195
196 #define GetAddrInfo __MINGW_NAME_AW(GetAddrInfo)
197
198 WINSOCK_API_LINKAGE int WSAAPI getaddrinfo(const char *nodename,const char *servname,const struct addrinfo *hints,struct addrinfo **res);
199 WINSOCK_API_LINKAGE int WSAAPI GetAddrInfoW(PCWSTR pNodeName,PCWSTR pServiceName,const ADDRINFOW *pHints,PADDRINFOW *ppResult);
200
201 #define GetAddrInfoA getaddrinfo
202
203 #if INCL_WINSOCK_API_TYPEDEFS
204 typedef int (WSAAPI *LPFN_GETADDRINFO)(const char *nodename,const char *servname,const struct addrinfo *hints,struct addrinfo **res);
205 typedef int (WSAAPI *LPFN_GETADDRINFOW)(PCWSTR pNodeName,PCWSTR pServiceName,const ADDRINFOW *pHints,PADDRINFOW *ppResult);
206
207 #define LPFN_GETADDRINFOA LPFN_GETADDRINFO
208
209 #define LPFN_GETADDRINFOT __MINGW_NAME_AW(LPFN_GETADDRINFO)
210 #endif
211
212 #define FreeAddrInfo __MINGW_NAME_AW(FreeAddrInfo)
213
214 WINSOCK_API_LINKAGE void WSAAPI freeaddrinfo(LPADDRINFO pAddrInfo);
215 WINSOCK_API_LINKAGE void WSAAPI FreeAddrInfoW(PADDRINFOW pAddrInfo);
216
217 #define FreeAddrInfoA freeaddrinfo
218
219 #if INCL_WINSOCK_API_TYPEDEFS
220 typedef void (WSAAPI *LPFN_FREEADDRINFO)(struct addrinfo *ai);
221 typedef void (WSAAPI *LPFN_FREEADDRINFOW)(PADDRINFOW pAddrInfo);
222
223 #define LPFN_FREEADDRINFOA LPFN_FREEADDRINFO
224
225 #define LPFN_FREEADDRINFOT __MINGW_NAME_AW(LPFN_FREEADDRINFO)
226 #endif
227
228 typedef int socklen_t;
229
230 #define GetNameInfo __MINGW_NAME_AW(GetNameInfo)
231
232 WINSOCK_API_LINKAGE int WSAAPI getnameinfo(const struct sockaddr *sa,socklen_t salen,char *host,DWORD hostlen,char *serv,DWORD servlen,int flags);
233 WINSOCK_API_LINKAGE INT WSAAPI GetNameInfoW(const SOCKADDR *pSockaddr,socklen_t SockaddrLength,PWCHAR pNodeBuffer,DWORD NodeBufferSize,PWCHAR pServiceBuffer,DWORD ServiceBufferSize,INT Flags);
234
235 #define GetNameInfoA getnameinfo
236
237 #if INCL_WINSOCK_API_TYPEDEFS
238 typedef int (WSAAPI *LPFN_GETNAMEINFO)(const struct sockaddr *sa,socklen_t salen,char *host,DWORD hostlen,char *serv,DWORD servlen,int flags);
239 typedef INT (WSAAPI *LPFN_GETNAMEINFOW)(const SOCKADDR *pSockaddr,socklen_t SockaddrLength,PWCHAR pNodeBuffer,DWORD NodeBufferSize,PWCHAR pServiceBuffer,DWORD ServiceBufferSize,INT Flags);
240
241 #define LPFN_GETNAMEINFOA LPFN_GETNAMEINFO
242
243 #define LPFN_GETNAMEINFOT __MINGW_NAME_AW(LPFN_GETNAMEINFO)
244 #endif
245
246 #define gai_strerror __MINGW_NAME_AW(gai_strerror)
247
248 #define GAI_STRERROR_BUFFER_SIZE 1024
249
250 char *gai_strerrorA (int);
251 WCHAR *gai_strerrorW(int);
252
253 #define NI_MAXHOST 1025
254 #define NI_MAXSERV 32
255
256 #define INET_ADDRSTRLEN 22
257 #define INET6_ADDRSTRLEN 65
258
259 #define NI_NOFQDN 0x01
260 #define NI_NUMERICHOST 0x02
261 #define NI_NAMEREQD 0x04
262 #define NI_NUMERICSERV 0x08
263 #define NI_DGRAM 0x10
264
265 #include <mstcpip.h>
266
267 #if (_WIN32_WINNT >= 0x0600)
268 #define addrinfoEx __MINGW_NAME_AW(addrinfoEx)
269 #define PADDRINFOEX __MINGW_NAME_AW(PADDRINFOEX)
270 #define GetAddrInfoEx __MINGW_NAME_AW(GetAddrInfoEx)
271 #define SetAddrInfoEx __MINGW_NAME_AW(SetAddrInfoEx)
272
273 typedef struct addrinfoExA {
274 int ai_flags;
275 int ai_family;
276 int ai_socktype;
277 int ai_protocol;
278 size_t ai_addrlen;
279 LPCSTR ai_canonname;
280 struct sockaddr *ai_addr;
281 void *ai_blob;
282 size_t ai_bloblen;
283 LPGUID ai_provider;
284 struct addrinfoexA *ai_next;
285 } ADDRINFOEXA, *PADDRINFOEXA;
286
287 typedef struct addrinfoExW {
288 int ai_flags;
289 int ai_family;
290 int ai_socktype;
291 int ai_protocol;
292 size_t ai_addrlen;
293 LPCWSTR ai_canonname;
294 struct sockaddr *ai_addr;
295 void *ai_blob;
296 size_t ai_bloblen;
297 LPGUID ai_provider;
298 struct addrinfoexW *ai_next;
299 } ADDRINFOEXW, *PADDRINFOEXW;
300
301 typedef PVOID LPLOOKUPSERVICE_COMPLETION_ROUTINE; /*reserved*/
302
303 WINSOCK_API_LINKAGE int WSAAPI GetAddrInfoExA(PCSTR pName, PCSTR pServiceName, DWORD dwNameSpace,
304 LPGUID lpNspId,const ADDRINFOEXA *pHints,PADDRINFOEXA *ppResult,
305 PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
306 LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
307 LPHANDLE lpNameHandle);
308 WINSOCK_API_LINKAGE int WSAAPI GetAddrInfoExW(PCWSTR pName,PCWSTR pServiceName,DWORD dwNameSpace,
309 LPGUID lpNspId,const ADDRINFOEXW *pHints,PADDRINFOEXW *ppResult,
310 PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
311 LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
312 LPHANDLE lpNameHandle);
313
314 WINSOCK_API_LINKAGE int WSAAPI SetAddrInfoExA(PCSTR pName, PCSTR pServiceName, SOCKET_ADDRESS *pAddresses,
315 DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
316 LPGUID lpNspId,PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
317 LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
318 LPHANDLE lpNameHandle);
319 WINSOCK_API_LINKAGE int WSAAPI SetAddrInfoExW(PCWSTR pName,PCWSTR pServiceName,SOCKET_ADDRESS *pAddresses,
320 DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
321 LPGUID lpNspId,PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
322 LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
323 LPHANDLE lpNameHandle);
324
325 WINSOCK_API_LINKAGE void WSAAPI FreeAddrInfoEx(PADDRINFOEXA pAddrInfo);
326 WINSOCK_API_LINKAGE void WSAAPI FreeAddrInfoExW(PADDRINFOEXW pAddrInfo);
327
328 #define FreeAddrInfoExA FreeAddrInfoEx
329 #ifdef UNICODE
330 # define FreeAddrInfoEx FreeAddrInfoExW
331 #endif /* UNICODE */
332
333 #if INCL_WINSOCK_API_TYPEDEFS
334 #define LPFN_GETADDRINFOEX __MINGW_NAME_AW(LPFN_GETADDRINFOEX)
335 typedef int (WSAAPI *LPFN_GETADDRINFOEXA)(PCSTR pName, PCSTR pServiceName, DWORD dwNameSpace,
336 LPGUID lpNspId,const ADDRINFOEXA *pHints,PADDRINFOEXA *ppResult,
337 PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
338 LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
339 LPHANDLE lpNameHandle);
340 typedef int (WSAAPI *LPFN_GETADDRINFOEXW)(PCWSTR pName,PCWSTR pServiceName,DWORD dwNameSpace,
341 LPGUID lpNspId,const ADDRINFOEXW *pHints,PADDRINFOEXW *ppResult,
342 PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
343 LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
344 LPHANDLE lpNameHandle);
345
346 #define LPFN_SETADDRINFOEX __MINGW_NAME_AW(LPFN_SETADDRINFOEX)
347 typedef int (WSAAPI *LPFN_SETADDRINFOEXA)(PCSTR pName, PCSTR pServiceName, SOCKET_ADDRESS *pAddresses,
348 DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
349 LPGUID lpNspId,PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
350 LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
351 LPHANDLE lpNameHandle);
352 typedef int (WSAAPI *LPFN_SETADDRINFOEXW)(PCWSTR pName,PCWSTR pServiceName,SOCKET_ADDRESS *pAddresses,
353 DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
354 LPGUID lpNspId,PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
355 LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
356 LPHANDLE lpNameHandle);
357
358 #define LPFN_FREEADDRINFOEX __MINGW_NAME_AW(LPFN_FREEADDRINFOEX)
359 typedef void (WSAAPI *LPFN_FREEADDRINFOEXA)(PADDRINFOEXA pAddrInfo);
360 typedef void (WSAAPI *LPFN_FREEADDRINFOEXW)(PADDRINFOEXW pAddrInfo);
361 #endif /* INCL_WINSOCK_API_TYPEDEFS */
362
363
364 WINSOCK_API_LINKAGE int WSAAPI WSAImpersonateSocketPeer(
365 SOCKET Socket,
366 const struct sockaddr *PeerAddress,
367 ULONG peerAddressLen
368 );
369
370 WINSOCK_API_LINKAGE int WSAAPI WSAQuerySocketSecurity(
371 SOCKET Socket,
372 const SOCKET_SECURITY_QUERY_TEMPLATE *SecurityQueryTemplate,
373 ULONG SecurityQueryTemplateLen,
374 SOCKET_SECURITY_QUERY_INFO *SecurityQueryInfo,
375 ULONG *SecurityQueryInfoLen,
376 LPWSAOVERLAPPED Overlapped,
377 LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
378 );
379
380 WINSOCK_API_LINKAGE int WSAAPI WSARevertImpersonation(void);
381
382 WINSOCK_API_LINKAGE int WSAAPI WSASetSocketPeerTargetName(
383 SOCKET Socket,
384 const SOCKET_PEER_TARGET_NAME *PeerTargetName,
385 ULONG PeerTargetNameLen,
386 LPWSAOVERLAPPED Overlapped,
387 LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
388 );
389
390 WINSOCK_API_LINKAGE int WSAAPI WSASetSocketSecurity(
391 SOCKET Socket,
392 const SOCKET_SECURITY_SETTINGS *SecuritySettings,
393 ULONG SecuritySettingsLen,
394 LPWSAOVERLAPPED Overlapped,
395 LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
396 );
397
398 #define InetNtopA inet_ntop
399
400 WINSOCK_API_LINKAGE LPCWSTR WSAAPI InetNtopW(INT Family, LPCVOID pAddr, LPWSTR pStringBuf, size_t StringBufSIze);
401 WINSOCK_API_LINKAGE LPCSTR WSAAPI InetNtopA(INT Family, LPCVOID pAddr, LPSTR pStringBuf, size_t StringBufSize);
402
403 #define InetNtop __MINGW_NAME_AW(InetNtop)
404
405 #define InetPtonA inet_pton
406
407 WINSOCK_API_LINKAGE INT WSAAPI InetPtonW(INT Family, LPCWSTR pStringBuf, PVOID pAddr);
408 WINSOCK_API_LINKAGE INT WSAAPI InetPtonA(INT Family, LPCSTR pStringBuf, PVOID pAddr);
409
410 #define InetPton __MINGW_NAME_AW(InetPton)
411
412 #endif /*(_WIN32_WINNT >= 0x0600)*/
413
414 #ifdef __cplusplus
415 }
416 #endif
417
418 #ifdef __LP64__
419 #pragma pop_macro("u_long")
420 #endif
421
422 #endif /* _WS2TCPIP_H_ */