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 PCSTR pNodeName OPTIONAL
,
66 IN PCSTR pServiceName OPTIONAL
,
67 IN
const ADDRINFOA
*pHints OPTIONAL
,
68 OUT PADDRINFOA
*ppResult
);
70 #if (NTDDI_VERSION >= NTDDI_WINXPSP2) || (_WIN32_WINNT >= 0x0502)
76 IN PCWSTR pNodeName OPTIONAL
,
77 IN PCWSTR pServiceName OPTIONAL
,
78 IN
const ADDRINFOW
*pHints OPTIONAL
,
79 OUT 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 PCSTR pNodeName OPTIONAL
,
96 IN PCSTR pServiceName OPTIONAL
,
97 IN
const ADDRINFOA
*pHints OPTIONAL
,
98 OUT PADDRINFOA
*ppResult
);
101 (WSAAPI
*LPFN_GETADDRINFOW
)(
102 IN PCWSTR pNodeName OPTIONAL
,
103 IN PCWSTR pServiceName OPTIONAL
,
104 IN
const ADDRINFOW
*pHints OPTIONAL
,
105 OUT 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 PCSTR pName OPTIONAL
,
130 IN PCSTR pServiceName OPTIONAL
,
131 IN DWORD dwNameSpace
,
132 IN LPGUID lpNspId OPTIONAL
,
133 IN
const ADDRINFOEXA
*hints
,
134 OUT PADDRINFOEXA
*ppResult
,
135 IN
struct timeval
*timeout OPTIONAL
,
136 IN LPOVERLAPPED lpOverlapped OPTIONAL
,
137 IN LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
,
138 OUT LPHANDLE lpNameHandle OPTIONAL
);
144 IN PCWSTR pName OPTIONAL
,
145 IN PCWSTR pServiceName OPTIONAL
,
146 IN DWORD dwNameSpace
,
147 IN LPGUID lpNspId OPTIONAL
,
148 IN
const ADDRINFOEXW
*hints OPTIONAL
,
149 OUT PADDRINFOEXW
*ppResult
,
150 IN
struct timeval
*timeout OPTIONAL
,
151 IN LPOVERLAPPED lpOverlapped OPTIONAL
,
152 IN LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
,
153 OUT LPHANDLE lpHandle OPTIONAL
);
156 #define GetAddrInfoEx GetAddrInfoExW
158 #define GetAddrInfoEx GetAddrInfoExA
161 #if INCL_WINSOCK_API_TYPEDEFS
164 (WSAAPI
*LPFN_GETADDRINFOEXA
)(
166 IN PCSTR pServiceName OPTIONAL
,
167 IN DWORD dwNameSpace
,
168 IN LPGUID lpNspId OPTIONAL
,
169 IN
const ADDRINFOEXA
*hints OPTIONAL
,
170 OUT PADDRINFOEXA
*ppResult
,
171 IN
struct timeval
*timeout OPTIONAL
,
172 IN LPOVERLAPPED lpOverlapped OPTIONAL
,
173 IN LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
,
174 OUT LPHANDLE lpNameHandle OPTIONAL
);
177 (WSAAPI
*LPFN_GETADDRINFOEXW
)(
179 IN PCWSTR pServiceName OPTIONAL
,
180 IN DWORD dwNameSpace
,
181 IN LPGUID lpNspId OPTIONAL
,
182 IN
const ADDRINFOEXW
*hints OPTIONAL
,
183 OUT PADDRINFOEXW
*ppResult
,
184 IN
struct timeval
*timeout OPTIONAL
,
185 IN LPOVERLAPPED lpOverlapped OPTIONAL
,
186 IN LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
,
187 OUT LPHANDLE lpHandle OPTIONAL
);
190 #define LPFN_GETADDRINFOEX LPFN_GETADDRINFOEXW
192 #define LPFN_GETADDRINFOEX LPFN_GETADDRINFOEXA
198 #if (_WIN32_WINNT >= 0x0600)
205 IN PCSTR pServiceName OPTIONAL
,
206 IN SOCKET_ADDRESS
*pAddresses OPTIONAL
,
207 IN DWORD dwAddressCount
,
208 IN LPBLOB lpBlob OPTIONAL
,
210 IN DWORD dwNameSpace
,
211 IN LPGUID lpNspId OPTIONAL
,
212 IN
struct timeval
*timeout OPTIONAL
,
213 IN LPOVERLAPPED lpOverlapped OPTIONAL
,
214 IN LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
,
215 OUT LPHANDLE lpNameHandle OPTIONAL
);
222 IN PCWSTR pServiceName OPTIONAL
,
223 IN SOCKET_ADDRESS
*pAddresses OPTIONAL
,
224 IN DWORD dwAddressCount
,
225 IN LPBLOB lpBlob OPTIONAL
,
227 IN DWORD dwNameSpace
,
228 IN LPGUID lpNspId OPTIONAL
,
229 IN
struct timeval
*timeout OPTIONAL
,
230 IN LPOVERLAPPED lpOverlapped OPTIONAL
,
231 IN LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
,
232 OUT LPHANDLE lpNameHandle OPTIONAL
);
235 #define SetAddrInfoEx SetAddrInfoExW
237 #define SetAddrInfoEx SetAddrInfoExA
240 #if INCL_WINSOCK_API_TYPEDEFS
243 (WSAAPI
*LPFN_SETADDRINFOEXA
)(
245 IN PCSTR pServiceName OPTIONAL
,
246 IN SOCKET_ADDRESS
*pAddresses OPTIONAL
,
247 IN DWORD dwAddressCount
,
248 IN LPBLOB lpBlob OPTIONAL
,
250 IN DWORD dwNameSpace
,
251 IN LPGUID lpNspId OPTIONAL
,
252 IN
struct timeval
*timeout OPTIONAL
,
253 IN LPOVERLAPPED lpOverlapped OPTIONAL
,
254 IN LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
,
255 OUT LPHANDLE lpNameHandle OPTIONAL
);
258 (WSAAPI
*LPFN_SETADDRINFOEXW
)(
260 IN PCWSTR pServiceName OPTIONAL
,
261 IN SOCKET_ADDRESS
*pAddresses OPTIONAL
,
262 IN DWORD dwAddressCount
,
263 IN LPBLOB lpBlob OPTIONAL
,
265 IN DWORD dwNameSpace
,
266 IN LPGUID lpNspId OPTIONAL
,
267 IN
struct timeval
*timeout OPTIONAL
,
268 IN LPOVERLAPPED lpOverlapped OPTIONAL
,
269 IN LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
,
270 OUT LPHANDLE lpNameHandle OPTIONAL
);
273 #define LPFN_SETADDRINFOEX LPFN_SETADDRINFOEXW
275 #define LPFN_SETADDRINFOEX LPFN_SETADDRINFOEXA
285 IN PADDRINFOA pAddrInfo OPTIONAL
);
287 #if (NTDDI_VERSION >= NTDDI_WINXPSP2) || (_WIN32_WINNT >= 0x0502)
293 IN PADDRINFOW pAddrInfo OPTIONAL
);
295 #define FreeAddrInfoA freeaddrinfo
298 #define FreeAddrInfo FreeAddrInfoW
300 #define FreeAddrInfo FreeAddrInfoA
304 #if INCL_WINSOCK_API_TYPEDEFS
307 (WSAAPI
*LPFN_FREEADDRINFO
)(
308 IN PADDRINFOA pAddrInfo OPTIONAL
);
311 (WSAAPI
*LPFN_FREEADDRINFOW
)(
312 IN PADDRINFOW pAddrInfo OPTIONAL
);
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 PADDRINFOEXA pAddrInfoEx OPTIONAL
);
336 IN PADDRINFOEXW pAddrInfoEx OPTIONAL
);
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
const SOCKADDR
*pSockaddr
,
371 IN socklen_t SockaddrLength
,
372 OUT PCHAR pNodeBuffer OPTIONAL
,
373 IN DWORD NodeBufferSize
,
374 OUT PCHAR pServiceBuffer
,
375 IN DWORD ServiceBufferSize
,
378 #if (NTDDI_VERSION >= NTDDI_WINXPSP2) || (_WIN32_WINNT >= 0x0502)
384 IN
const SOCKADDR
*pSockaddr
,
385 IN socklen_t SockaddrLength
,
386 OUT PWCHAR pNodeBuffer
,
387 IN DWORD NodeBufferSize
,
388 OUT PWCHAR pServiceBuffer OPTIONAL
,
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
const SOCKADDR
*pSockaddr
,
407 IN socklen_t SockaddrLength
,
408 OUT PCHAR pNodeBuffer
,
409 IN DWORD NodeBufferSize
,
410 OUT PCHAR pServiceBuffer OPTIONAL
,
411 IN DWORD ServiceBufferSize
,
415 (WSAAPI
*LPFN_GETNAMEINFOW
)(
416 IN
const SOCKADDR
*pSockaddr
,
417 IN socklen_t SockaddrLength
,
418 OUT PWCHAR pNodeBuffer
,
419 IN DWORD NodeBufferSize
,
420 OUT PWCHAR pServiceBuffer OPTIONAL
,
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
,
447 IN PCWSTR pszAddrString
,
456 IN
size_t StringBufSize
);
463 OUT 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
,
486 (WSAAPI
*LPFN_INET_PTONW
)(
488 IN PCWSTR pszAddrString
,
492 (WSAAPI
*LPFN_INET_NTOPA
)(
496 IN
size_t StringBufSize
);
499 (WSAAPI
*LPFN_INET_NTOPW
)(
502 OUT 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
532 static char buff
[GAI_STRERROR_BUFFER_SIZE
+ 1];
534 dwMsgLen
= FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM
535 |FORMAT_MESSAGE_IGNORE_INSERTS
536 |FORMAT_MESSAGE_MAX_WIDTH_MASK
,
539 MAKELANGID(LANG_NEUTRAL
, SUBLANG_DEFAULT
),
541 GAI_STRERROR_BUFFER_SIZE
,
553 static WCHAR buff
[GAI_STRERROR_BUFFER_SIZE
+ 1];
555 dwMsgLen
= FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM
556 |FORMAT_MESSAGE_IGNORE_INSERTS
557 |FORMAT_MESSAGE_MAX_WIDTH_MASK
,
560 MAKELANGID(LANG_NEUTRAL
, SUBLANG_DEFAULT
),
562 GAI_STRERROR_BUFFER_SIZE
,
568 #endif /* INCL_WINSOCK_API_PROTOTYPES */
574 IN IN_ADDR Interface
,
576 IN MULTICAST_MODE_TYPE FilterMode
,
577 IN ULONG SourceCount
,
578 IN CONST IN_ADDR
*SourceList
)
581 DWORD Size
, Returned
;
585 (((ULONG
) (ULONG_MAX
- sizeof(*Filter
))) / sizeof(*SourceList
))) {
586 WSASetLastError(WSAENOBUFS
);
590 Size
= IP_MSFILTER_SIZE(SourceCount
);
591 Filter
= (PIP_MSFILTER
) HeapAlloc(GetProcessHeap(), 0, Size
);
592 if (Filter
== NULL
) {
593 WSASetLastError(WSAENOBUFS
);
597 Filter
->imsf_multiaddr
= Group
;
598 Filter
->imsf_interface
= Interface
;
599 Filter
->imsf_fmode
= FilterMode
;
600 Filter
->imsf_numsrc
= SourceCount
;
601 if (SourceCount
> 0) {
602 CopyMemory(Filter
->imsf_slist
, SourceList
,
603 SourceCount
* sizeof(*SourceList
));
606 Error
= WSAIoctl(Socket
, SIOCSIPMSFILTER
, Filter
, Size
, NULL
, 0,
607 &Returned
, NULL
, NULL
);
609 HeapFree(GetProcessHeap(), 0, Filter
);
618 IN IN_ADDR Interface
,
620 OUT MULTICAST_MODE_TYPE
*FilterMode
,
621 IN OUT ULONG
*SourceCount
,
622 OUT IN_ADDR
*SourceList
)
625 DWORD Size
, Returned
;
629 (((ULONG
) (ULONG_MAX
- sizeof(*Filter
))) / sizeof(*SourceList
))) {
630 WSASetLastError(WSAENOBUFS
);
634 Size
= IP_MSFILTER_SIZE(*SourceCount
);
635 Filter
= (PIP_MSFILTER
) HeapAlloc(GetProcessHeap(), 0, Size
);
636 if (Filter
== NULL
) {
637 WSASetLastError(WSAENOBUFS
);
641 Filter
->imsf_multiaddr
= Group
;
642 Filter
->imsf_interface
= Interface
;
643 Filter
->imsf_numsrc
= *SourceCount
;
645 Error
= WSAIoctl(Socket
, SIOCGIPMSFILTER
, Filter
, Size
, Filter
, Size
,
646 &Returned
, NULL
, NULL
);
649 if (*SourceCount
> 0) {
650 CopyMemory(SourceList
, Filter
->imsf_slist
,
651 *SourceCount
* sizeof(*SourceList
));
652 *SourceCount
= Filter
->imsf_numsrc
;
654 *FilterMode
= Filter
->imsf_fmode
;
657 HeapFree(GetProcessHeap(), 0, Filter
);
662 #if (NTDDI_VERSION >= NTDDI_WINXP)
669 IN CONST SOCKADDR
*Group
,
671 IN MULTICAST_MODE_TYPE FilterMode
,
672 IN ULONG SourceCount
,
673 IN CONST SOCKADDR_STORAGE
*SourceList
)
676 DWORD Size
, Returned
;
677 PGROUP_FILTER Filter
;
679 if (SourceCount
>= (((ULONG
) (ULONG_MAX
- sizeof(*Filter
))) / sizeof(*SourceList
))) {
680 WSASetLastError(WSAENOBUFS
);
684 Size
= GROUP_FILTER_SIZE(SourceCount
);
685 Filter
= (PGROUP_FILTER
) HeapAlloc(GetProcessHeap(), 0, Size
);
686 if (Filter
== NULL
) {
687 WSASetLastError(WSAENOBUFS
);
691 Filter
->gf_interface
= Interface
;
692 ZeroMemory(&Filter
->gf_group
, sizeof(Filter
->gf_group
));
693 CopyMemory(&Filter
->gf_group
, Group
, GroupLength
);
694 Filter
->gf_fmode
= FilterMode
;
695 Filter
->gf_numsrc
= SourceCount
;
696 if (SourceCount
> 0) {
697 CopyMemory(Filter
->gf_slist
, SourceList
, SourceCount
* sizeof(*SourceList
));
700 Error
= WSAIoctl(Socket
, SIOCSMSFILTER
, Filter
, Size
, NULL
, 0, &Returned
, NULL
, NULL
);
701 HeapFree(GetProcessHeap(), 0, Filter
);
711 IN CONST SOCKADDR
*Group
,
713 OUT MULTICAST_MODE_TYPE
*FilterMode
,
714 IN OUT ULONG
*SourceCount
,
715 OUT 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 LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
772 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
)
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
const SOCKET_SECURITY_SETTINGS
*SecuritySettings OPTIONAL
,
793 IN ULONG SecuritySettingsLen
,
794 IN LPWSAOVERLAPPED Overlapped OPTIONAL
,
795 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine OPTIONAL
);
800 WSAQuerySocketSecurity(
802 IN
const SOCKET_SECURITY_QUERY_TEMPLATE
*SecurityQueryTemplate OPTIONAL
,
803 IN ULONG SecurityQueryTemplateLen
,
804 OUT SOCKET_SECURITY_QUERY_INFO
* SecurityQueryInfo OPTIONAL
,
805 IN OUT ULONG
*SecurityQueryInfoLen
,
806 IN LPWSAOVERLAPPED Overlapped OPTIONAL
,
807 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine OPTIONAL
);
812 WSASetSocketPeerTargetName(
814 IN
const SOCKET_PEER_TARGET_NAME
*PeerTargetName
,
815 IN ULONG PeerTargetNameLen
,
816 IN LPWSAOVERLAPPED Overlapped OPTIONAL
,
817 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine OPTIONAL
);
822 WSADeleteSocketPeerTargetName(
824 IN
const struct sockaddr
*PeerAddr
,
825 IN ULONG PeerAddrLen
,
826 IN LPWSAOVERLAPPED Overlapped OPTIONAL
,
827 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine OPTIONAL
);
832 WSAImpersonateSocketPeer(
834 IN
const struct sockaddr
*PeerAddr OPTIONAL
,
835 IN ULONG PeerAddrLen
);
840 WSARevertImpersonation();
842 #endif /* _SECURE_SOCKET_TYPES_DEFINED_ */
843 #endif /* (_WIN32_WINNT >= 0x0600) */
845 #if !defined(_WIN32_WINNT) || (_WIN32_WINNT <= 0x0500)