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
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 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
);
616 IN IN_ADDR Interface
,
618 OUT MULTICAST_MODE_TYPE
*FilterMode
,
619 IN OUT ULONG
*SourceCount
,
620 OUT IN_ADDR
*SourceList
)
623 DWORD Size
, Returned
;
627 (((ULONG
) (ULONG_MAX
- sizeof(*Filter
))) / sizeof(*SourceList
))) {
628 WSASetLastError(WSAENOBUFS
);
632 Size
= IP_MSFILTER_SIZE(*SourceCount
);
633 Filter
= (PIP_MSFILTER
) HeapAlloc(GetProcessHeap(), 0, Size
);
634 if (Filter
== NULL
) {
635 WSASetLastError(WSAENOBUFS
);
639 Filter
->imsf_multiaddr
= Group
;
640 Filter
->imsf_interface
= Interface
;
641 Filter
->imsf_numsrc
= *SourceCount
;
643 Error
= WSAIoctl(Socket
, SIOCGIPMSFILTER
, Filter
, Size
, Filter
, Size
,
644 &Returned
, NULL
, NULL
);
647 if (*SourceCount
> 0) {
648 CopyMemory(SourceList
, Filter
->imsf_slist
,
649 *SourceCount
* sizeof(*SourceList
));
650 *SourceCount
= Filter
->imsf_numsrc
;
652 *FilterMode
= Filter
->imsf_fmode
;
655 HeapFree(GetProcessHeap(), 0, Filter
);
660 #if (NTDDI_VERSION >= NTDDI_WINXP)
667 IN CONST SOCKADDR
*Group
,
669 IN MULTICAST_MODE_TYPE FilterMode
,
670 IN ULONG SourceCount
,
671 IN CONST SOCKADDR_STORAGE
*SourceList
)
674 DWORD Size
, Returned
;
675 PGROUP_FILTER Filter
;
677 if (SourceCount
>= (((ULONG
) (ULONG_MAX
- sizeof(*Filter
))) / sizeof(*SourceList
))) {
678 WSASetLastError(WSAENOBUFS
);
682 Size
= GROUP_FILTER_SIZE(SourceCount
);
683 Filter
= (PGROUP_FILTER
) HeapAlloc(GetProcessHeap(), 0, Size
);
684 if (Filter
== NULL
) {
685 WSASetLastError(WSAENOBUFS
);
689 Filter
->gf_interface
= Interface
;
690 ZeroMemory(&Filter
->gf_group
, sizeof(Filter
->gf_group
));
691 CopyMemory(&Filter
->gf_group
, Group
, GroupLength
);
692 Filter
->gf_fmode
= FilterMode
;
693 Filter
->gf_numsrc
= SourceCount
;
694 if (SourceCount
> 0) {
695 CopyMemory(Filter
->gf_slist
, SourceList
, SourceCount
* sizeof(*SourceList
));
698 Error
= WSAIoctl(Socket
, SIOCSMSFILTER
, Filter
, Size
, NULL
, 0, &Returned
, NULL
, NULL
);
699 HeapFree(GetProcessHeap(), 0, Filter
);
709 IN CONST SOCKADDR
*Group
,
711 OUT MULTICAST_MODE_TYPE
*FilterMode
,
712 IN OUT ULONG
*SourceCount
,
713 OUT SOCKADDR_STORAGE
*SourceList
)
716 DWORD Size
, Returned
;
717 PGROUP_FILTER Filter
;
719 if (*SourceCount
> (((ULONG
) (ULONG_MAX
- sizeof(*Filter
))) / sizeof(*SourceList
))) {
720 WSASetLastError(WSAENOBUFS
);
724 Size
= GROUP_FILTER_SIZE(*SourceCount
);
725 Filter
= (PGROUP_FILTER
) HeapAlloc(GetProcessHeap(), 0, Size
);
726 if (Filter
== NULL
) {
727 WSASetLastError(WSAENOBUFS
);
731 Filter
->gf_interface
= Interface
;
732 ZeroMemory(&Filter
->gf_group
, sizeof(Filter
->gf_group
));
733 CopyMemory(&Filter
->gf_group
, Group
, GroupLength
);
734 Filter
->gf_numsrc
= *SourceCount
;
736 Error
= WSAIoctl(Socket
, SIOCGMSFILTER
, Filter
, Size
, Filter
, Size
, &Returned
, NULL
, NULL
);
738 if (*SourceCount
> 0) {
739 CopyMemory(SourceList
, Filter
->gf_slist
, *SourceCount
* sizeof(*SourceList
));
740 *SourceCount
= Filter
->gf_numsrc
;
742 *FilterMode
= Filter
->gf_fmode
;
745 HeapFree(GetProcessHeap(), 0, Filter
);
749 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
751 #ifdef IDEAL_SEND_BACKLOG_IOCTLS
755 idealsendbacklogquery(
761 return WSAIoctl(s
, SIO_IDEAL_SEND_BACKLOG_QUERY
,
762 NULL
, 0, pISB
, sizeof(*pISB
), &bytes
, NULL
, NULL
);
767 idealsendbacklognotify(
769 IN LPWSAOVERLAPPED lpOverlapped OPTIONAL
,
770 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL
)
774 return WSAIoctl(s
, SIO_IDEAL_SEND_BACKLOG_CHANGE
,
775 NULL
, 0, NULL
, 0, &bytes
,
776 lpOverlapped
, lpCompletionRoutine
);
779 #endif /* IDEAL_SEND_BACKLOG_IOCTLS */
781 #if (_WIN32_WINNT >= 0x0600)
783 #ifdef _SECURE_SOCKET_TYPES_DEFINED_
788 WSASetSocketSecurity(
790 IN
const SOCKET_SECURITY_SETTINGS
*SecuritySettings OPTIONAL
,
791 IN ULONG SecuritySettingsLen
,
792 IN LPWSAOVERLAPPED Overlapped OPTIONAL
,
793 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine OPTIONAL
);
798 WSAQuerySocketSecurity(
800 IN
const SOCKET_SECURITY_QUERY_TEMPLATE
*SecurityQueryTemplate OPTIONAL
,
801 IN ULONG SecurityQueryTemplateLen
,
802 OUT SOCKET_SECURITY_QUERY_INFO
* SecurityQueryInfo OPTIONAL
,
803 IN OUT ULONG
*SecurityQueryInfoLen
,
804 IN LPWSAOVERLAPPED Overlapped OPTIONAL
,
805 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine OPTIONAL
);
810 WSASetSocketPeerTargetName(
812 IN
const SOCKET_PEER_TARGET_NAME
*PeerTargetName
,
813 IN ULONG PeerTargetNameLen
,
814 IN LPWSAOVERLAPPED Overlapped OPTIONAL
,
815 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine OPTIONAL
);
820 WSADeleteSocketPeerTargetName(
822 IN
const struct sockaddr
*PeerAddr
,
823 IN ULONG PeerAddrLen
,
824 IN LPWSAOVERLAPPED Overlapped OPTIONAL
,
825 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine OPTIONAL
);
830 WSAImpersonateSocketPeer(
832 IN
const struct sockaddr
*PeerAddr OPTIONAL
,
833 IN ULONG PeerAddrLen
);
838 WSARevertImpersonation(VOID
);
840 #endif /* _SECURE_SOCKET_TYPES_DEFINED_ */
841 #endif /* (_WIN32_WINNT >= 0x0600) */
843 #if !defined(_WIN32_WINNT) || (_WIN32_WINNT <= 0x0500)