2 * ws2tcpip.h : TCP/IP specific extensions in Windows Sockets 2
4 * Portions Copyright (c) 1980, 1983, 1988, 1993
5 * The Regents of the University of California. All rights reserved.
21 #define UDP_NOCHECKSUM 1
22 #define UDP_CHECKSUM_COVERAGE 20
25 #define WS2TCPIP_INLINE __inline
27 #define WS2TCPIP_INLINE static inline
30 /* getaddrinfo error codes */
31 #define EAI_AGAIN WSATRY_AGAIN
32 #define EAI_BADFLAGS WSAEINVAL
33 #define EAI_FAIL WSANO_RECOVERY
34 #define EAI_FAMILY WSAEAFNOSUPPORT
35 #define EAI_MEMORY WSA_NOT_ENOUGH_MEMORY
36 #define EAI_NODATA EAI_NONAME
37 #define EAI_NOSECURENAME WSA_SECURE_HOST_NOT_FOUND
38 #define EAI_NONAME WSAHOST_NOT_FOUND
39 #define EAI_SERVICE WSATYPE_NOT_FOUND
40 #define EAI_SOCKTYPE WSAESOCKTNOSUPPORT
41 #define EAI_IPSECPOLICY WSA_IPSEC_NAME_POLICY_ERROR
44 typedef ADDRINFOW ADDRINFOT
,*PADDRINFOT
;
46 typedef ADDRINFOA ADDRINFOT
,*PADDRINFOT
;
49 typedef ADDRINFOA ADDRINFO
, FAR
*LPADDRINFO
;
51 #if (_WIN32_WINNT >= 0x0600)
54 typedef ADDRINFOEXW ADDRINFOEX
, *PADDRINFOEX
;
56 typedef ADDRINFOEXA ADDRINFOEX
, *PADDRINFOEX
;
59 #endif /* (_WIN32_WINNT >= 0x0600) */
65 _In_opt_ PCSTR pNodeName
,
66 _In_opt_ PCSTR pServiceName
,
67 _In_opt_
const ADDRINFOA
*pHints
,
68 _Outptr_ PADDRINFOA
*ppResult
);
70 #if (NTDDI_VERSION >= NTDDI_WINXPSP2) || (_WIN32_WINNT >= 0x0502)
76 _In_opt_ PCWSTR pNodeName
,
77 _In_opt_ PCWSTR pServiceName
,
78 _In_opt_
const ADDRINFOW
*pHints
,
79 _Outptr_ PADDRINFOW
*ppResult
);
81 #define GetAddrInfoA getaddrinfo
84 #define GetAddrInfo GetAddrInfoW
86 #define GetAddrInfo GetAddrInfoA
89 #endif /* (NTDDI_VERSION >= NTDDI_WINXPSP2) || (_WIN32_WINNT >= 0x0502) */
91 #if INCL_WINSOCK_API_TYPEDEFS
94 (WSAAPI
*LPFN_GETADDRINFO
)(
95 _In_opt_ PCSTR pNodeName
,
96 _In_opt_ PCSTR pServiceName
,
97 _In_opt_
const ADDRINFOA
*pHints
,
98 _Outptr_ PADDRINFOA
*ppResult
);
101 (WSAAPI
*LPFN_GETADDRINFOW
)(
102 _In_opt_ PCWSTR pNodeName
,
103 _In_opt_ PCWSTR pServiceName
,
104 _In_opt_
const ADDRINFOW
*pHints
,
105 _Outptr_ PADDRINFOW
*ppResult
);
107 #define LPFN_GETADDRINFOA LPFN_GETADDRINFO
110 #define LPFN_GETADDRINFOT LPFN_GETADDRINFOW
112 #define LPFN_GETADDRINFOT LPFN_GETADDRINFOA
115 #endif /* INCL_WINSOCK_API_TYPEDEFS */
117 #if (_WIN32_WINNT >= 0x0600)
120 (CALLBACK
*LPLOOKUPSERVICE_COMPLETION_ROUTINE
)(
123 _In_ LPWSAOVERLAPPED lpOverlapped
);
129 _In_opt_ PCSTR pName
,
130 _In_opt_ PCSTR pServiceName
,
131 _In_ DWORD dwNameSpace
,
132 _In_opt_ LPGUID lpNspId
,
133 _In_opt_
const ADDRINFOEXA
*hints
,
134 _Outptr_ PADDRINFOEXA
*ppResult
,
135 _In_opt_
struct timeval
*timeout
,
136 _In_opt_ LPOVERLAPPED lpOverlapped
,
137 _In_opt_ LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine
,
138 _Out_opt_ LPHANDLE lpNameHandle
);
144 _In_opt_ PCWSTR pName
,
145 _In_opt_ PCWSTR pServiceName
,
146 _In_ DWORD dwNameSpace
,
147 _In_opt_ LPGUID lpNspId
,
148 _In_opt_
const ADDRINFOEXW
*hints
,
149 _Outptr_ PADDRINFOEXW
*ppResult
,
150 _In_opt_
struct timeval
*timeout
,
151 _In_opt_ LPOVERLAPPED lpOverlapped
,
152 _In_opt_ LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine
,
153 _Out_opt_ LPHANDLE lpHandle
);
156 #define GetAddrInfoEx GetAddrInfoExW
158 #define GetAddrInfoEx GetAddrInfoExA
161 #if INCL_WINSOCK_API_TYPEDEFS
164 (WSAAPI
*LPFN_GETADDRINFOEXA
)(
166 _In_opt_ PCSTR pServiceName
,
167 _In_ DWORD dwNameSpace
,
168 _In_opt_ LPGUID lpNspId
,
169 _In_opt_
const ADDRINFOEXA
*hints
,
170 _Outptr_ PADDRINFOEXA
*ppResult
,
171 _In_opt_
struct timeval
*timeout
,
172 _In_opt_ LPOVERLAPPED lpOverlapped
,
173 _In_opt_ LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine
,
174 _Out_opt_ LPHANDLE lpNameHandle
);
177 (WSAAPI
*LPFN_GETADDRINFOEXW
)(
179 _In_opt_ PCWSTR pServiceName
,
180 _In_ DWORD dwNameSpace
,
181 _In_opt_ LPGUID lpNspId
,
182 _In_opt_
const ADDRINFOEXW
*hints
,
183 _Outptr_ PADDRINFOEXW
*ppResult
,
184 _In_opt_
struct timeval
*timeout
,
185 _In_opt_ LPOVERLAPPED lpOverlapped
,
186 _In_opt_ LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine
,
187 _Out_opt_ LPHANDLE lpHandle
);
190 #define LPFN_GETADDRINFOEX LPFN_GETADDRINFOEXW
192 #define LPFN_GETADDRINFOEX LPFN_GETADDRINFOEXA
198 #if (_WIN32_WINNT >= 0x0600)
205 _In_opt_ PCSTR pServiceName
,
206 _In_opt_ SOCKET_ADDRESS
*pAddresses
,
207 _In_ DWORD dwAddressCount
,
208 _In_opt_ LPBLOB lpBlob
,
210 _In_ DWORD dwNameSpace
,
211 _In_opt_ LPGUID lpNspId
,
212 _In_opt_
struct timeval
*timeout
,
213 _In_opt_ LPOVERLAPPED lpOverlapped
,
214 _In_opt_ LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine
,
215 _Out_opt_ LPHANDLE lpNameHandle
);
222 _In_opt_ PCWSTR pServiceName
,
223 _In_opt_ SOCKET_ADDRESS
*pAddresses
,
224 _In_ DWORD dwAddressCount
,
225 _In_opt_ LPBLOB lpBlob
,
227 _In_ DWORD dwNameSpace
,
228 _In_opt_ LPGUID lpNspId
,
229 _In_opt_
struct timeval
*timeout
,
230 _In_opt_ LPOVERLAPPED lpOverlapped
,
231 _In_opt_ LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine
,
232 _Out_opt_ LPHANDLE lpNameHandle
);
235 #define SetAddrInfoEx SetAddrInfoExW
237 #define SetAddrInfoEx SetAddrInfoExA
240 #if INCL_WINSOCK_API_TYPEDEFS
243 (WSAAPI
*LPFN_SETADDRINFOEXA
)(
245 _In_opt_ PCSTR pServiceName
,
246 _In_opt_ SOCKET_ADDRESS
*pAddresses
,
247 _In_ DWORD dwAddressCount
,
248 _In_opt_ LPBLOB lpBlob
,
250 _In_ DWORD dwNameSpace
,
251 _In_opt_ LPGUID lpNspId
,
252 _In_opt_
struct timeval
*timeout
,
253 _In_opt_ LPOVERLAPPED lpOverlapped
,
254 _In_opt_ LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine
,
255 _Out_opt_ LPHANDLE lpNameHandle
);
258 (WSAAPI
*LPFN_SETADDRINFOEXW
)(
260 _In_opt_ PCWSTR pServiceName
,
261 _In_opt_ SOCKET_ADDRESS
*pAddresses
,
262 _In_ DWORD dwAddressCount
,
263 _In_opt_ LPBLOB lpBlob
,
265 _In_ DWORD dwNameSpace
,
266 _In_opt_ LPGUID lpNspId
,
267 _In_opt_
struct timeval
*timeout
,
268 _In_opt_ LPOVERLAPPED lpOverlapped
,
269 _In_opt_ LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine
,
270 _Out_opt_ LPHANDLE lpNameHandle
);
273 #define LPFN_SETADDRINFOEX LPFN_SETADDRINFOEXW
275 #define LPFN_SETADDRINFOEX LPFN_SETADDRINFOEXA
285 _In_opt_ PADDRINFOA pAddrInfo
);
287 #if (NTDDI_VERSION >= NTDDI_WINXPSP2) || (_WIN32_WINNT >= 0x0502)
293 _In_opt_ PADDRINFOW pAddrInfo
);
295 #define FreeAddrInfoA freeaddrinfo
298 #define FreeAddrInfo FreeAddrInfoW
300 #define FreeAddrInfo FreeAddrInfoA
304 #if INCL_WINSOCK_API_TYPEDEFS
307 (WSAAPI
*LPFN_FREEADDRINFO
)(
308 _In_opt_ PADDRINFOA pAddrInfo
);
311 (WSAAPI
*LPFN_FREEADDRINFOW
)(
312 _In_opt_ PADDRINFOW pAddrInfo
);
314 #define LPFN_FREEADDRINFOA LPFN_FREEADDRINFO
317 #define LPFN_FREEADDRINFOT LPFN_FREEADDRINFOW
319 #define LPFN_FREEADDRINFOT LPFN_FREEADDRINFOA
324 #if (_WIN32_WINNT >= 0x0600)
330 _In_opt_ PADDRINFOEXA pAddrInfoEx
);
336 _In_opt_ PADDRINFOEXW pAddrInfoEx
);
338 #define FreeAddrInfoExA FreeAddrInfoEx
341 #define FreeAddrInfoEx FreeAddrInfoExW
344 #ifdef INCL_WINSOCK_API_TYPEDEFS
347 (WSAAPI
*LPFN_FREEADDRINFOEXA
)(
348 _In_ PADDRINFOEXA pAddrInfoEx
);
351 (WSAAPI
*LPFN_FREEADDRINFOEXW
)(
352 _In_ PADDRINFOEXW pAddrInfoEx
);
356 #define LPFN_FREEADDRINFOEX LPFN_FREEADDRINFOEXW
358 #define LPFN_FREEADDRINFOEX LPFN_FREEADDRINFOEXA
364 typedef int socklen_t
;
370 _In_reads_bytes_(SockaddrLength
) const SOCKADDR
*pSockaddr
,
371 _In_ socklen_t SockaddrLength
,
372 _Out_writes_opt_(NodeBufferSize
) PCHAR pNodeBuffer
,
373 _In_ DWORD NodeBufferSize
,
374 _Out_writes_opt_(ServiceBufferSize
) PCHAR pServiceBuffer
,
375 _In_ DWORD ServiceBufferSize
,
378 #if (NTDDI_VERSION >= NTDDI_WINXPSP2) || (_WIN32_WINNT >= 0x0502)
384 _In_reads_bytes_(SockaddrLength
) const SOCKADDR
*pSockaddr
,
385 _In_ socklen_t SockaddrLength
,
386 _Out_writes_opt_(NodeBufferSize
) PWCHAR pNodeBuffer
,
387 _In_ DWORD NodeBufferSize
,
388 _Out_writes_opt_(ServiceBufferSize
) PWCHAR pServiceBuffer
,
389 _In_ DWORD ServiceBufferSize
,
392 #define GetNameInfoA getnameinfo
395 #define GetNameInfo GetNameInfoW
397 #define GetNameInfo GetNameInfoA
402 #if INCL_WINSOCK_API_TYPEDEFS
405 (WSAAPI
*LPFN_GETNAMEINFO
)(
406 _In_reads_bytes_(SockaddrLength
) const SOCKADDR
*pSockaddr
,
407 _In_ socklen_t SockaddrLength
,
408 _Out_writes_opt_(NodeBufferSize
) PCHAR pNodeBuffer
,
409 _In_ DWORD NodeBufferSize
,
410 _Out_writes_opt_(ServiceBufferSize
) PCHAR pServiceBuffer
,
411 _In_ DWORD ServiceBufferSize
,
415 (WSAAPI
*LPFN_GETNAMEINFOW
)(
416 _In_reads_bytes_(SockaddrLength
) const SOCKADDR
*pSockaddr
,
417 _In_ socklen_t SockaddrLength
,
418 _Out_writes_opt_(NodeBufferSize
) PWCHAR pNodeBuffer
,
419 _In_ DWORD NodeBufferSize
,
420 _Out_writes_opt_(ServiceBufferSize
) PWCHAR pServiceBuffer
,
421 _In_ DWORD ServiceBufferSize
,
424 #define LPFN_GETNAMEINFOA LPFN_GETNAMEINFO
427 #define LPFN_GETNAMEINFOT LPFN_GETNAMEINFOW
429 #define LPFN_GETNAMEINFOT LPFN_GETNAMEINFOA
433 #if (NTDDI_VERSION >= NTDDI_VISTA)
440 _In_ PCSTR pszAddrString
,
441 _Out_writes_bytes_(sizeof(IN6_ADDR
)) PVOID pAddrBuf
);
447 _In_ PCWSTR pszAddrString
,
448 _Out_writes_bytes_(sizeof(IN6_ADDR
)) PVOID pAddrBuf
);
455 _Out_writes_(StringBufSize
) PSTR pStringBuf
,
456 _In_
size_t StringBufSize
);
463 _Out_writes_(StringBufSize
) PWSTR pStringBuf
,
464 _In_
size_t StringBufSize
);
466 #define InetPtonA inet_pton
467 #define InetNtopA inet_ntop
470 #define InetPton InetPtonW
471 #define InetNtop InetNtopW
473 #define InetPton InetPtonA
474 #define InetNtop InetNtopA
477 #if INCL_WINSOCK_API_TYPEDEFS
480 (WSAAPI
*LPFN_INET_PTONA
)(
482 _In_ PCSTR pszAddrString
,
483 _Out_writes_bytes_(sizeof(IN6_ADDR
)) PVOID pAddrBuf
);
486 (WSAAPI
*LPFN_INET_PTONW
)(
488 _In_ PCWSTR pszAddrString
,
489 _Out_writes_bytes_(sizeof(IN6_ADDR
)) PVOID pAddrBuf
);
492 (WSAAPI
*LPFN_INET_NTOPA
)(
495 _Out_writes_(StringBufSize
) PSTR pStringBuf
,
496 _In_
size_t StringBufSize
);
499 (WSAAPI
*LPFN_INET_NTOPW
)(
502 _Out_writes_(StringBufSize
) PWSTR pStringBuf
,
503 _In_
size_t StringBufSize
);
506 #define LPFN_INET_PTON LPFN_INET_PTONW
507 #define LPFN_INET_NTOP LPFN_INET_NTOPW
509 #define LPFN_INET_PTON LPFN_INET_PTONA
510 #define LPFN_INET_NTOP LPFN_INET_NTOPA
513 #endif /* TYPEDEFS */
514 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
516 #if INCL_WINSOCK_API_PROTOTYPES
519 #define gai_strerror gai_strerrorW
521 #define gai_strerror gai_strerrorA
524 #define GAI_STRERROR_BUFFER_SIZE 1024
531 static char buff
[GAI_STRERROR_BUFFER_SIZE
+ 1];
533 FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM
534 |FORMAT_MESSAGE_IGNORE_INSERTS
535 |FORMAT_MESSAGE_MAX_WIDTH_MASK
,
538 MAKELANGID(LANG_NEUTRAL
, SUBLANG_DEFAULT
),
540 GAI_STRERROR_BUFFER_SIZE
,
551 static WCHAR buff
[GAI_STRERROR_BUFFER_SIZE
+ 1];
553 FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM
554 |FORMAT_MESSAGE_IGNORE_INSERTS
555 |FORMAT_MESSAGE_MAX_WIDTH_MASK
,
558 MAKELANGID(LANG_NEUTRAL
, SUBLANG_DEFAULT
),
560 GAI_STRERROR_BUFFER_SIZE
,
566 #endif /* INCL_WINSOCK_API_PROTOTYPES */
572 _In_ IN_ADDR Interface
,
574 _In_ MULTICAST_MODE_TYPE FilterMode
,
575 _In_ ULONG SourceCount
,
576 _In_reads_(SourceCount
) CONST IN_ADDR
*SourceList
)
579 DWORD Size
, Returned
;
583 (((ULONG
) (ULONG_MAX
- sizeof(*Filter
))) / sizeof(*SourceList
))) {
584 WSASetLastError(WSAENOBUFS
);
588 Size
= IP_MSFILTER_SIZE(SourceCount
);
589 Filter
= (PIP_MSFILTER
) HeapAlloc(GetProcessHeap(), 0, Size
);
590 if (Filter
== NULL
) {
591 WSASetLastError(WSAENOBUFS
);
595 Filter
->imsf_multiaddr
= Group
;
596 Filter
->imsf_interface
= Interface
;
597 Filter
->imsf_fmode
= FilterMode
;
598 Filter
->imsf_numsrc
= SourceCount
;
599 if (SourceCount
> 0) {
600 CopyMemory(Filter
->imsf_slist
, SourceList
,
601 SourceCount
* sizeof(*SourceList
));
604 Error
= WSAIoctl(Socket
, SIOCSIPMSFILTER
, Filter
, Size
, NULL
, 0,
605 &Returned
, NULL
, NULL
);
607 HeapFree(GetProcessHeap(), 0, Filter
);
612 _Success_(return == 0)
617 _In_ IN_ADDR Interface
,
619 _Out_ MULTICAST_MODE_TYPE
*FilterMode
,
620 _Inout_ ULONG
*SourceCount
,
621 _Out_writes_(*SourceCount
) IN_ADDR
*SourceList
)
624 DWORD Size
, Returned
;
628 (((ULONG
) (ULONG_MAX
- sizeof(*Filter
))) / sizeof(*SourceList
))) {
629 WSASetLastError(WSAENOBUFS
);
633 Size
= IP_MSFILTER_SIZE(*SourceCount
);
634 Filter
= (PIP_MSFILTER
) HeapAlloc(GetProcessHeap(), 0, Size
);
635 if (Filter
== NULL
) {
636 WSASetLastError(WSAENOBUFS
);
640 Filter
->imsf_multiaddr
= Group
;
641 Filter
->imsf_interface
= Interface
;
642 Filter
->imsf_numsrc
= *SourceCount
;
644 Error
= WSAIoctl(Socket
, SIOCGIPMSFILTER
, Filter
, Size
, Filter
, Size
,
645 &Returned
, NULL
, NULL
);
648 if (*SourceCount
> 0) {
649 CopyMemory(SourceList
, Filter
->imsf_slist
,
650 *SourceCount
* sizeof(*SourceList
));
651 *SourceCount
= Filter
->imsf_numsrc
;
653 *FilterMode
= Filter
->imsf_fmode
;
656 HeapFree(GetProcessHeap(), 0, Filter
);
661 #if (NTDDI_VERSION >= NTDDI_WINXP)
667 _In_ ULONG Interface
,
668 _In_ CONST SOCKADDR
*Group
,
669 _In_
int GroupLength
,
670 _In_ MULTICAST_MODE_TYPE FilterMode
,
671 _In_ ULONG SourceCount
,
672 _In_reads_(SourceCount
) CONST SOCKADDR_STORAGE
*SourceList
)
675 DWORD Size
, Returned
;
676 PGROUP_FILTER Filter
;
678 if (SourceCount
>= (((ULONG
) (ULONG_MAX
- sizeof(*Filter
))) / sizeof(*SourceList
))) {
679 WSASetLastError(WSAENOBUFS
);
683 Size
= GROUP_FILTER_SIZE(SourceCount
);
684 Filter
= (PGROUP_FILTER
) HeapAlloc(GetProcessHeap(), 0, Size
);
685 if (Filter
== NULL
) {
686 WSASetLastError(WSAENOBUFS
);
690 Filter
->gf_interface
= Interface
;
691 ZeroMemory(&Filter
->gf_group
, sizeof(Filter
->gf_group
));
692 CopyMemory(&Filter
->gf_group
, Group
, GroupLength
);
693 Filter
->gf_fmode
= FilterMode
;
694 Filter
->gf_numsrc
= SourceCount
;
695 if (SourceCount
> 0) {
696 CopyMemory(Filter
->gf_slist
, SourceList
, SourceCount
* sizeof(*SourceList
));
699 Error
= WSAIoctl(Socket
, SIOCSMSFILTER
, Filter
, Size
, NULL
, 0, &Returned
, NULL
, NULL
);
700 HeapFree(GetProcessHeap(), 0, Filter
);
705 _Success_(return == 0)
710 _In_ ULONG Interface
,
711 _In_ CONST SOCKADDR
*Group
,
712 _In_
int GroupLength
,
713 _Out_ MULTICAST_MODE_TYPE
*FilterMode
,
714 _Inout_ ULONG
*SourceCount
,
715 _Out_writes_(*SourceCount
) SOCKADDR_STORAGE
*SourceList
)
718 DWORD Size
, Returned
;
719 PGROUP_FILTER Filter
;
721 if (*SourceCount
> (((ULONG
) (ULONG_MAX
- sizeof(*Filter
))) / sizeof(*SourceList
))) {
722 WSASetLastError(WSAENOBUFS
);
726 Size
= GROUP_FILTER_SIZE(*SourceCount
);
727 Filter
= (PGROUP_FILTER
) HeapAlloc(GetProcessHeap(), 0, Size
);
728 if (Filter
== NULL
) {
729 WSASetLastError(WSAENOBUFS
);
733 Filter
->gf_interface
= Interface
;
734 ZeroMemory(&Filter
->gf_group
, sizeof(Filter
->gf_group
));
735 CopyMemory(&Filter
->gf_group
, Group
, GroupLength
);
736 Filter
->gf_numsrc
= *SourceCount
;
738 Error
= WSAIoctl(Socket
, SIOCGMSFILTER
, Filter
, Size
, Filter
, Size
, &Returned
, NULL
, NULL
);
740 if (*SourceCount
> 0) {
741 CopyMemory(SourceList
, Filter
->gf_slist
, *SourceCount
* sizeof(*SourceList
));
742 *SourceCount
= Filter
->gf_numsrc
;
744 *FilterMode
= Filter
->gf_fmode
;
747 HeapFree(GetProcessHeap(), 0, Filter
);
751 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
753 #ifdef IDEAL_SEND_BACKLOG_IOCTLS
757 idealsendbacklogquery(
763 return WSAIoctl(s
, SIO_IDEAL_SEND_BACKLOG_QUERY
,
764 NULL
, 0, pISB
, sizeof(*pISB
), &bytes
, NULL
, NULL
);
769 idealsendbacklognotify(
771 _In_opt_ LPWSAOVERLAPPED lpOverlapped
,
772 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
)
776 return WSAIoctl(s
, SIO_IDEAL_SEND_BACKLOG_CHANGE
,
777 NULL
, 0, NULL
, 0, &bytes
,
778 lpOverlapped
, lpCompletionRoutine
);
781 #endif /* IDEAL_SEND_BACKLOG_IOCTLS */
783 #if (_WIN32_WINNT >= 0x0600)
785 #ifdef _SECURE_SOCKET_TYPES_DEFINED_
790 WSASetSocketSecurity(
792 _In_reads_bytes_opt_(SecuritySettingsLen
) const SOCKET_SECURITY_SETTINGS
*SecuritySettings
,
793 _In_ ULONG SecuritySettingsLen
,
794 _In_opt_ LPWSAOVERLAPPED Overlapped
,
795 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
);
800 WSAQuerySocketSecurity(
802 _In_reads_bytes_opt_(SecurityQueryTemplateLen
) const SOCKET_SECURITY_QUERY_TEMPLATE
*SecurityQueryTemplate
,
803 _In_ ULONG SecurityQueryTemplateLen
,
804 _Out_writes_bytes_to_opt_(*SecurityQueryInfoLen
, *SecurityQueryInfoLen
) SOCKET_SECURITY_QUERY_INFO
* SecurityQueryInfo
,
805 _Inout_ ULONG
*SecurityQueryInfoLen
,
806 _In_opt_ LPWSAOVERLAPPED Overlapped
,
807 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
);
812 WSASetSocketPeerTargetName(
814 _In_reads_bytes_(PeerTargetNameLen
) const SOCKET_PEER_TARGET_NAME
*PeerTargetName
,
815 _In_ ULONG PeerTargetNameLen
,
816 _In_opt_ LPWSAOVERLAPPED Overlapped
,
817 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
);
822 WSADeleteSocketPeerTargetName(
824 _In_reads_bytes_(PeerAddrLen
) const struct sockaddr
*PeerAddr
,
825 _In_ ULONG PeerAddrLen
,
826 _In_opt_ LPWSAOVERLAPPED Overlapped
,
827 _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
);
832 WSAImpersonateSocketPeer(
834 _In_reads_bytes_opt_(PeerAddrLen
) const struct sockaddr
*PeerAddr
,
835 _In_ ULONG PeerAddrLen
);
840 WSARevertImpersonation(VOID
);
842 #endif /* _SECURE_SOCKET_TYPES_DEFINED_ */
843 #endif /* (_WIN32_WINNT >= 0x0600) */
845 #if !defined(_WIN32_WINNT) || (_WIN32_WINNT <= 0x0500)