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.
9 #include <_mingw_unicode.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
;
21 struct in_addr imsf_multiaddr
;
22 struct in_addr imsf_interface
;
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)
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
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
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 }
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
));
134 WS2TCPIP_INLINE
void IN6ADDR_SETANY(struct sockaddr_in6
*a
) {
135 a
->sin6_family
= AF_INET6
;
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
;
144 a
->sin6_flowinfo
= 0;
145 IN6_SET_ADDR_LOOPBACK(&a
->sin6_addr
);
146 a
->sin6_scope_id
= 0;
148 #endif /* !__CRT__NO_INLINE */
154 typedef struct _INTERFACE_INFO_EX
{
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
{
172 C_ASSERT(sizeof(IN_PKTINFO
)==8);
174 typedef struct 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
{
200 struct sockaddr
*ai_addr
;
201 struct addrinfo
*ai_next
;
202 } ADDRINFOA
,*PADDRINFOA
;
204 typedef struct addrinfoW
{
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
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)
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)
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)
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
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
{
318 struct sockaddr
*ai_addr
;
322 struct addrinfoexA
*ai_next
;
323 } ADDRINFOEXA
, *PADDRINFOEXA
;
325 typedef struct addrinfoExW
{
331 LPCWSTR ai_canonname
;
332 struct sockaddr
*ai_addr
;
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(
399 const struct sockaddr
*PeerAddress
,
403 WINSOCK_API_LINKAGE
int WSAAPI
WSAQuerySocketSecurity(
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(
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(
425 const SOCKET_SECURITY_SETTINGS
*SecuritySettings
,
426 ULONG SecuritySettingsLen
,
427 LPWSAOVERLAPPED Overlapped
,
428 LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
431 #endif /*(_WIN32_WINNT >= 0x0600)*/
437 #endif /* _WS2TCPIP_H_ */