win32/include/winapi changes from https://github.com/run4flat/tinycc.git
[tinycc.git] / win32 / include / winapi / ws2tcpip.h
blob4e4d7a4aeb9f15203109a17e0e10db51e05298c5
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-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_
9 #include <_mingw_unicode.h>
11 #include <winsock2.h>
12 #include <psdk_inc/_ip_mreq1.h>
14 struct ip_mreq_source {
15 struct in_addr imr_multiaddr;
16 struct in_addr imr_sourceaddr;
17 struct in_addr imr_interface;
20 struct ip_msfilter {
21 struct in_addr imsf_multiaddr;
22 struct in_addr imsf_interface;
23 u_long imsf_fmode;
24 u_long imsf_numsrc;
25 struct in_addr imsf_slist[1];
28 #define IP_MSFILTER_SIZE(numsrc) (sizeof(struct ip_msfilter)-sizeof(struct in_addr) + (numsrc)*sizeof(struct in_addr))
30 #define SIO_GET_INTERFACE_LIST _IOR('t',127,u_long)
32 #define SIO_GET_INTERFACE_LIST_EX _IOR('t',126,u_long)
33 #define SIO_SET_MULTICAST_FILTER _IOW('t',125,u_long)
34 #define SIO_GET_MULTICAST_FILTER _IOW('t',124 | IOC_IN,u_long)
36 #define IP_OPTIONS 1
37 #define IP_HDRINCL 2
38 #define IP_TOS 3
39 #define IP_TTL 4
40 #define IP_MULTICAST_IF 9
41 #define IP_MULTICAST_TTL 10
42 #define IP_MULTICAST_LOOP 11
43 #define IP_ADD_MEMBERSHIP 12
44 #define IP_DROP_MEMBERSHIP 13
45 #define IP_DONTFRAGMENT 14
46 #define IP_ADD_SOURCE_MEMBERSHIP 15
47 #define IP_DROP_SOURCE_MEMBERSHIP 16
48 #define IP_BLOCK_SOURCE 17
49 #define IP_UNBLOCK_SOURCE 18
50 #define IP_PKTINFO 19
51 #define IP_RECEIVE_BROADCAST 22
53 #define IPV6_HDRINCL 2
54 #define IPV6_UNICAST_HOPS 4
55 #define IPV6_MULTICAST_IF 9
56 #define IPV6_MULTICAST_HOPS 10
57 #define IPV6_MULTICAST_LOOP 11
58 #define IPV6_ADD_MEMBERSHIP 12
59 #define IPV6_DROP_MEMBERSHIP 13
60 #define IPV6_JOIN_GROUP IPV6_ADD_MEMBERSHIP
61 #define IPV6_LEAVE_GROUP IPV6_DROP_MEMBERSHIP
62 #define IPV6_PKTINFO 19
63 #define IPV6_HOPLIMIT 21
64 #define IPV6_PROTECTION_LEVEL 23
66 #define PROTECTION_LEVEL_UNRESTRICTED 10
67 #define PROTECTION_LEVEL_DEFAULT 20
68 #define PROTECTION_LEVEL_RESTRICTED 30
70 #define UDP_NOCHECKSUM 1
71 #define UDP_CHECKSUM_COVERAGE 20
73 #define TCP_EXPEDITED_1122 0x0002
76 #include <ws2ipdef.h>
79 #define SS_PORT(ssp) (((struct sockaddr_in*)(ssp))->sin_port)
81 #define IN6ADDR_ANY_INIT { 0 }
82 #define IN6ADDR_LOOPBACK_INIT { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 }
84 #ifdef __cplusplus
85 extern "C" {
86 #endif
88 extern const struct in6_addr in6addr_any;
89 extern const struct in6_addr in6addr_loopback;
91 #define WS2TCPIP_INLINE __CRT_INLINE
93 int IN6_ADDR_EQUAL(const struct in6_addr *,const struct in6_addr *);
94 int IN6_IS_ADDR_UNSPECIFIED(const struct in6_addr *);
95 int IN6_IS_ADDR_LOOPBACK(const struct in6_addr *);
96 int IN6_IS_ADDR_MULTICAST(const struct in6_addr *);
97 int IN6_IS_ADDR_LINKLOCAL(const struct in6_addr *);
98 int IN6_IS_ADDR_SITELOCAL(const struct in6_addr *);
99 int IN6_IS_ADDR_V4MAPPED(const struct in6_addr *);
100 int IN6_IS_ADDR_V4COMPAT(const struct in6_addr *);
101 int IN6_IS_ADDR_MC_NODELOCAL(const struct in6_addr *);
102 int IN6_IS_ADDR_MC_LINKLOCAL(const struct in6_addr *);
103 int IN6_IS_ADDR_MC_SITELOCAL(const struct in6_addr *);
104 int IN6_IS_ADDR_MC_ORGLOCAL(const struct in6_addr *);
105 int IN6_IS_ADDR_MC_GLOBAL(const struct in6_addr *);
106 int IN6ADDR_ISANY(const struct sockaddr_in6 *);
107 int IN6ADDR_ISLOOPBACK(const struct sockaddr_in6 *);
108 void IN6_SET_ADDR_UNSPECIFIED(struct in6_addr *);
109 void IN6_SET_ADDR_LOOPBACK(struct in6_addr *);
110 void IN6ADDR_SETANY(struct sockaddr_in6 *);
111 void IN6ADDR_SETLOOPBACK(struct sockaddr_in6 *);
113 #ifndef __CRT__NO_INLINE
114 WS2TCPIP_INLINE int IN6_ADDR_EQUAL(const struct in6_addr *a,const struct in6_addr *b) { return (memcmp(a,b,sizeof(struct in6_addr))==0); }
115 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)); }
116 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)); }
117 WS2TCPIP_INLINE int IN6_IS_ADDR_MULTICAST(const struct in6_addr *a) { return (a->s6_bytes[0]==0xff); }
118 WS2TCPIP_INLINE int IN6_IS_ADDR_LINKLOCAL(const struct in6_addr *a) { return ((a->s6_bytes[0]==0xfe) && ((a->s6_bytes[1] & 0xc0)==0x80)); }
119 WS2TCPIP_INLINE int IN6_IS_ADDR_SITELOCAL(const struct in6_addr *a) { return ((a->s6_bytes[0]==0xfe) && ((a->s6_bytes[1] & 0xc0)==0xc0)); }
120 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)); }
121 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)))); }
122 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); }
123 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); }
124 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); }
125 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); }
126 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); }
127 WS2TCPIP_INLINE int IN6ADDR_ISANY(const struct sockaddr_in6 *a) { return ((a->sin6_family==AF_INET6) && IN6_IS_ADDR_UNSPECIFIED(&a->sin6_addr)); }
128 WS2TCPIP_INLINE int IN6ADDR_ISLOOPBACK(const struct sockaddr_in6 *a) { return ((a->sin6_family==AF_INET6) && IN6_IS_ADDR_LOOPBACK(&a->sin6_addr)); }
129 WS2TCPIP_INLINE void IN6_SET_ADDR_UNSPECIFIED(struct in6_addr *a) { memset(a->s6_bytes,0,sizeof(struct in6_addr)); }
130 WS2TCPIP_INLINE void IN6_SET_ADDR_LOOPBACK(struct in6_addr *a) {
131 memset(a->s6_bytes,0,sizeof(struct in6_addr));
132 a->s6_bytes[15] = 1;
134 WS2TCPIP_INLINE void IN6ADDR_SETANY(struct sockaddr_in6 *a) {
135 a->sin6_family = AF_INET6;
136 a->sin6_port = 0;
137 a->sin6_flowinfo = 0;
138 IN6_SET_ADDR_UNSPECIFIED(&a->sin6_addr);
139 a->sin6_scope_id = 0;
141 WS2TCPIP_INLINE void IN6ADDR_SETLOOPBACK(struct sockaddr_in6 *a) {
142 a->sin6_family = AF_INET6;
143 a->sin6_port = 0;
144 a->sin6_flowinfo = 0;
145 IN6_SET_ADDR_LOOPBACK(&a->sin6_addr);
146 a->sin6_scope_id = 0;
148 #endif /* !__CRT__NO_INLINE */
150 #ifdef __cplusplus
152 #endif
154 typedef struct _INTERFACE_INFO_EX {
155 u_long iiFlags;
156 SOCKET_ADDRESS iiAddress;
157 SOCKET_ADDRESS iiBroadcastAddress;
158 SOCKET_ADDRESS iiNetmask;
159 } INTERFACE_INFO_EX,*LPINTERFACE_INFO_EX;
161 #define IFF_UP 0x00000001
162 #define IFF_BROADCAST 0x00000002
163 #define IFF_LOOPBACK 0x00000004
164 #define IFF_POINTTOPOINT 0x00000008
165 #define IFF_MULTICAST 0x00000010
167 typedef struct in_pktinfo {
168 IN_ADDR ipi_addr;
169 UINT ipi_ifindex;
170 } IN_PKTINFO;
172 C_ASSERT(sizeof(IN_PKTINFO)==8);
174 typedef struct in6_pktinfo {
175 IN6_ADDR ipi6_addr;
176 UINT ipi6_ifindex;
177 } IN6_PKTINFO;
179 C_ASSERT(sizeof(IN6_PKTINFO)==20);
181 #define EAI_AGAIN WSATRY_AGAIN
182 #define EAI_BADFLAGS WSAEINVAL
183 #define EAI_FAIL WSANO_RECOVERY
184 #define EAI_FAMILY WSAEAFNOSUPPORT
185 #define EAI_MEMORY WSA_NOT_ENOUGH_MEMORY
187 #define EAI_NONAME WSAHOST_NOT_FOUND
188 #define EAI_SERVICE WSATYPE_NOT_FOUND
189 #define EAI_SOCKTYPE WSAESOCKTNOSUPPORT
191 #define EAI_NODATA EAI_NONAME
193 typedef struct addrinfo {
194 int ai_flags;
195 int ai_family;
196 int ai_socktype;
197 int ai_protocol;
198 size_t ai_addrlen;
199 char *ai_canonname;
200 struct sockaddr *ai_addr;
201 struct addrinfo *ai_next;
202 } ADDRINFOA,*PADDRINFOA;
204 typedef struct addrinfoW {
205 int ai_flags;
206 int ai_family;
207 int ai_socktype;
208 int ai_protocol;
209 size_t ai_addrlen;
210 PWSTR ai_canonname;
211 struct sockaddr *ai_addr;
212 struct addrinfoW *ai_next;
213 } ADDRINFOW,*PADDRINFOW;
215 typedef __MINGW_NAME_AW(ADDRINFO) ADDRINFOT,*PADDRINFOT;
217 typedef ADDRINFOA ADDRINFO,*LPADDRINFO;
219 #define AI_PASSIVE 0x1
220 #define AI_CANONNAME 0x2
221 #define AI_NUMERICHOST 0x4
222 #if (_WIN32_WINNT >= 0x0600)
223 #define AI_ADDRCONFIG 0x0400
224 #define AI_NON_AUTHORITATIVE 0x04000
225 #define AI_SECURE 0x08000
226 #define AI_RETURN_PREFERRED_NAMES 0x010000
227 #endif
229 #ifdef __cplusplus
230 extern "C" {
231 #endif
233 #define GetAddrInfo __MINGW_NAME_AW(GetAddrInfo)
235 WINSOCK_API_LINKAGE int WSAAPI getaddrinfo(const char *nodename,const char *servname,const struct addrinfo *hints,struct addrinfo **res);
236 WINSOCK_API_LINKAGE int WSAAPI GetAddrInfoW(PCWSTR pNodeName,PCWSTR pServiceName,const ADDRINFOW *pHints,PADDRINFOW *ppResult);
238 #define GetAddrInfoA getaddrinfo
240 #if INCL_WINSOCK_API_TYPEDEFS
241 typedef int (WSAAPI *LPFN_GETADDRINFO)(const char *nodename,const char *servname,const struct addrinfo *hints,struct addrinfo **res);
242 typedef int (WSAAPI *LPFN_GETADDRINFOW)(PCWSTR pNodeName,PCWSTR pServiceName,const ADDRINFOW *pHints,PADDRINFOW *ppResult);
244 #define LPFN_GETADDRINFOA LPFN_GETADDRINFO
246 #define LPFN_GETADDRINFOT __MINGW_NAME_AW(LPFN_GETADDRINFO)
247 #endif
249 #define FreeAddrInfo __MINGW_NAME_AW(FreeAddrInfo)
251 WINSOCK_API_LINKAGE void WSAAPI freeaddrinfo(LPADDRINFO pAddrInfo);
252 WINSOCK_API_LINKAGE void WSAAPI FreeAddrInfoW(PADDRINFOW pAddrInfo);
254 #define FreeAddrInfoA freeaddrinfo
256 #if INCL_WINSOCK_API_TYPEDEFS
257 typedef void (WSAAPI *LPFN_FREEADDRINFO)(struct addrinfo *ai);
258 typedef void (WSAAPI *LPFN_FREEADDRINFOW)(PADDRINFOW pAddrInfo);
260 #define LPFN_FREEADDRINFOA LPFN_FREEADDRINFO
262 #define LPFN_FREEADDRINFOT __MINGW_NAME_AW(LPFN_FREEADDRINFO)
263 #endif
265 typedef int socklen_t;
267 #define GetNameInfo __MINGW_NAME_AW(GetNameInfo)
269 WINSOCK_API_LINKAGE int WSAAPI getnameinfo(const struct sockaddr *sa,socklen_t salen,char *host,DWORD hostlen,char *serv,DWORD servlen,int flags);
270 WINSOCK_API_LINKAGE INT WSAAPI GetNameInfoW(const SOCKADDR *pSockaddr,socklen_t SockaddrLength,PWCHAR pNodeBuffer,DWORD NodeBufferSize,PWCHAR pServiceBuffer,DWORD ServiceBufferSize,INT Flags);
272 #define GetNameInfoA getnameinfo
274 #if INCL_WINSOCK_API_TYPEDEFS
275 typedef int (WSAAPI *LPFN_GETNAMEINFO)(const struct sockaddr *sa,socklen_t salen,char *host,DWORD hostlen,char *serv,DWORD servlen,int flags);
276 typedef INT (WSAAPI *LPFN_GETNAMEINFOW)(const SOCKADDR *pSockaddr,socklen_t SockaddrLength,PWCHAR pNodeBuffer,DWORD NodeBufferSize,PWCHAR pServiceBuffer,DWORD ServiceBufferSize,INT Flags);
278 #define LPFN_GETNAMEINFOA LPFN_GETNAMEINFO
280 #define LPFN_GETNAMEINFOT __MINGW_NAME_AW(LPFN_GETNAMEINFO)
281 #endif
283 #define gai_strerror __MINGW_NAME_AW(gai_strerror)
285 #define GAI_STRERROR_BUFFER_SIZE 1024
287 char *gai_strerrorA (int);
288 WCHAR *gai_strerrorW(int);
290 #define NI_MAXHOST 1025
291 #define NI_MAXSERV 32
293 #define INET_ADDRSTRLEN 22
294 #define INET6_ADDRSTRLEN 65
296 #define NI_NOFQDN 0x01
297 #define NI_NUMERICHOST 0x02
298 #define NI_NAMEREQD 0x04
299 #define NI_NUMERICSERV 0x08
300 #define NI_DGRAM 0x10
302 #include <mstcpip.h>
304 #if (_WIN32_WINNT >= 0x0600)
305 #define addrinfoEx __MINGW_NAME_AW(addrinfoEx)
306 #define PADDRINFOEX __MINGW_NAME_AW(PADDRINFOEX)
307 #define GetAddrInfoEx __MINGW_NAME_AW(GetAddrInfoEx)
308 #define SetAddrInfoEx __MINGW_NAME_AW(SetAddrInfoEx)
309 #define FreeAddrInfoEx __MINGW_NAME_AW(FreeAddrInfoEx)
311 typedef struct addrinfoExA {
312 int ai_flags;
313 int ai_family;
314 int ai_socktype;
315 int ai_protocol;
316 size_t ai_addrlen;
317 LPCSTR ai_canonname;
318 struct sockaddr *ai_addr;
319 void *ai_blob;
320 size_t ai_bloblen;
321 LPGUID ai_provider;
322 struct addrinfoexA *ai_next;
323 } ADDRINFOEXA, *PADDRINFOEXA;
325 typedef struct addrinfoExW {
326 int ai_flags;
327 int ai_family;
328 int ai_socktype;
329 int ai_protocol;
330 size_t ai_addrlen;
331 LPCWSTR ai_canonname;
332 struct sockaddr *ai_addr;
333 void *ai_blob;
334 size_t ai_bloblen;
335 LPGUID ai_provider;
336 struct addrinfoexW *ai_next;
337 } ADDRINFOEXW, *PADDRINFOEXW;
339 typedef PVOID LPLOOKUPSERVICE_COMPLETION_ROUTINE; /*reserved*/
341 WINSOCK_API_LINKAGE int WSAAPI GetAddrInfoExA(PCSTR pName, PCSTR pServiceName, DWORD dwNameSpace,
342 LPGUID lpNspId,const ADDRINFOEXA *pHints,PADDRINFOEXA *ppResult,
343 struct timeval *timeout,LPOVERLAPPED lpOverlapped,
344 LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
345 LPHANDLE lpNameHandle);
346 WINSOCK_API_LINKAGE int WSAAPI GetAddrInfoExW(PCWSTR pName,PCWSTR pServiceName,DWORD dwNameSpace,
347 LPGUID lpNspId,const ADDRINFOEXW *pHints,PADDRINFOEXW *ppResult,
348 struct timeval *timeout,LPOVERLAPPED lpOverlapped,
349 LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
350 LPHANDLE lpNameHandle);
352 WINSOCK_API_LINKAGE int WSAAPI SetAddrInfoExA(PCSTR pName, PCSTR pServiceName, SOCKET_ADDRESS *pAddresses,
353 DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
354 LPGUID lpNspId,struct timeval *timeout,LPOVERLAPPED lpOverlapped,
355 LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
356 LPHANDLE lpNameHandle);
357 WINSOCK_API_LINKAGE int WSAAPI SetAddrInfoExW(PCWSTR pName,PCWSTR pServiceName,SOCKET_ADDRESS *pAddresses,
358 DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
359 LPGUID lpNspId,struct timeval *timeout,LPOVERLAPPED lpOverlapped,
360 LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
361 LPHANDLE lpNameHandle);
363 WINSOCK_API_LINKAGE void WSAAPI FreeAddrInfoExA(PADDRINFOEXA pAddrInfo);
364 WINSOCK_API_LINKAGE void WSAAPI FreeAddrInfoExW(PADDRINFOEXW pAddrInfo);
366 #if INCL_WINSOCK_API_TYPEDEFS
367 #define LPFN_GETADDRINFOEX __MINGW_NAME_AW(LPFN_GETADDRINFOEX)
368 typedef int (WSAAPI *LPFN_GETADDRINFOEXA)(PCSTR pName, PCSTR pServiceName, DWORD dwNameSpace,
369 LPGUID lpNspId,const ADDRINFOEXA *pHints,PADDRINFOEXA *ppResult,
370 struct timeval *timeout,LPOVERLAPPED lpOverlapped,
371 LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
372 LPHANDLE lpNameHandle);
373 typedef int (WSAAPI *LPFN_GETADDRINFOEXW)(PCWSTR pName,PCWSTR pServiceName,DWORD dwNameSpace,
374 LPGUID lpNspId,const ADDRINFOEXW *pHints,PADDRINFOEXW *ppResult,
375 struct timeval *timeout,LPOVERLAPPED lpOverlapped,
376 LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
377 LPHANDLE lpNameHandle);
379 #define LPFN_SETADDRINFOEX __MINGW_NAME_AW(LPFN_SETADDRINFOEX)
380 typedef int (WSAAPI *LPFN_SETADDRINFOEXA)(PCSTR pName, PCSTR pServiceName, SOCKET_ADDRESS *pAddresses,
381 DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
382 LPGUID lpNspId,struct timeval *timeout,LPOVERLAPPED lpOverlapped,
383 LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
384 LPHANDLE lpNameHandle);
385 typedef int (WSAAPI *LPFN_SETADDRINFOEXW)(PCWSTR pName,PCWSTR pServiceName,SOCKET_ADDRESS *pAddresses,
386 DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
387 LPGUID lpNspId,struct timeval *timeout,LPOVERLAPPED lpOverlapped,
388 LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
389 LPHANDLE lpNameHandle);
391 #define LPFN_FREEADDRINFOEX __MINGW_NAME_AW(LPFN_FREEADDRINFOEX)
392 typedef void (WSAAPI *LPFN_FREEADDRINFOEXA)(PADDRINFOEXA pAddrInfo);
393 typedef void (WSAAPI *LPFN_FREEADDRINFOEXW)(PADDRINFOEXW pAddrInfo);
394 #endif /* INCL_WINSOCK_API_TYPEDEFS */
397 WINSOCK_API_LINKAGE int WSAAPI WSAImpersonateSocketPeer(
398 SOCKET Socket,
399 const struct sockaddr *PeerAddress,
400 ULONG peerAddressLen
403 WINSOCK_API_LINKAGE int WSAAPI WSAQuerySocketSecurity(
404 SOCKET Socket,
405 const SOCKET_SECURITY_QUERY_TEMPLATE *SecurityQueryTemplate,
406 ULONG SecurityQueryTemplateLen,
407 SOCKET_SECURITY_QUERY_INFO *SecurityQueryInfo,
408 ULONG *SecurityQueryInfoLen,
409 LPWSAOVERLAPPED Overlapped,
410 LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
413 WINSOCK_API_LINKAGE int WSAAPI WSARevertImpersonation(void);
415 WINSOCK_API_LINKAGE int WSAAPI WSASetSocketPeerTargetName(
416 SOCKET Socket,
417 const SOCKET_PEER_TARGET_NAME *PeerTargetName,
418 ULONG PeerTargetNameLen,
419 LPWSAOVERLAPPED Overlapped,
420 LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
423 WINSOCK_API_LINKAGE int WSAAPI WSASetSocketSecurity(
424 SOCKET Socket,
425 const SOCKET_SECURITY_SETTINGS *SecuritySettings,
426 ULONG SecuritySettingsLen,
427 LPWSAOVERLAPPED Overlapped,
428 LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
431 #endif /*(_WIN32_WINNT >= 0x0600)*/
433 #ifdef __cplusplus
435 #endif
437 #endif /* _WS2TCPIP_H_ */