1 // Copyright © 2015, Peter Atashian
2 // Licensed under the MIT License <LICENSE.md>
3 //! FFI bindings to ws2_32.
4 #![cfg(windows)]
5 extern crate winapi;
6 use winapi::*;
7 extern "system" {
FreeAddrInfoEx(pAddrInfoEx: PADDRINFOEXA)8     pub fn FreeAddrInfoEx(pAddrInfoEx: PADDRINFOEXA);
FreeAddrInfoExW(pAddrInfoEx: PADDRINFOEXW)9     pub fn FreeAddrInfoExW(pAddrInfoEx: PADDRINFOEXW);
FreeAddrInfoW(pAddrInfo: PADDRINFOW)10     pub fn FreeAddrInfoW(pAddrInfo: PADDRINFOW);
GetAddrInfoExA( pName: PCSTR, pServiceName: PCSTR, dwNameSpace: DWORD, lpNspId: LPGUID, hints: *const ADDRINFOEXA, ppResult: *mut PADDRINFOEXA, timeout: *mut timeval, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpNameHandle: LPHANDLE, ) -> INT11     pub fn GetAddrInfoExA(
12         pName: PCSTR, pServiceName: PCSTR, dwNameSpace: DWORD, lpNspId: LPGUID,
13         hints: *const ADDRINFOEXA, ppResult: *mut PADDRINFOEXA, timeout: *mut timeval,
14         lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE,
15         lpNameHandle: LPHANDLE,
16     ) -> INT;
GetAddrInfoExCancel(lpHandle: LPHANDLE) -> INT17     pub fn GetAddrInfoExCancel(lpHandle: LPHANDLE) -> INT;
GetAddrInfoExOverlappedResult(lpOverlapped: LPOVERLAPPED) -> INT18     pub fn GetAddrInfoExOverlappedResult(lpOverlapped: LPOVERLAPPED) -> INT;
GetAddrInfoExW( pName: PCWSTR, pServiceName: PCWSTR, dwNameSpace: DWORD, lpNspId: LPGUID, hints: *const ADDRINFOEXW, ppResult: *mut PADDRINFOEXW, timeout: *mut timeval, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpNameHandle: LPHANDLE, ) -> INT19     pub fn GetAddrInfoExW(
20         pName: PCWSTR, pServiceName: PCWSTR, dwNameSpace: DWORD, lpNspId: LPGUID,
21         hints: *const ADDRINFOEXW, ppResult: *mut PADDRINFOEXW, timeout: *mut timeval,
22         lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE,
23         lpNameHandle: LPHANDLE,
24     ) -> INT;
GetAddrInfoW( pNodeName: PCWSTR, pServiceName: PCWSTR, pHints: *const ADDRINFOW, ppResult: *mut PADDRINFOW, ) -> INT25     pub fn GetAddrInfoW(
26         pNodeName: PCWSTR, pServiceName: PCWSTR, pHints: *const ADDRINFOW,
27         ppResult: *mut PADDRINFOW,
28     ) -> INT;
GetHostNameW(name: PWSTR, namelen: c_int) -> c_int29     pub fn GetHostNameW(name: PWSTR, namelen: c_int) -> c_int;
GetNameInfoW( pSockaddr: *const SOCKADDR, SockaddrLength: socklen_t, pNodeBuffer: PWCHAR, NodeBufferSize: DWORD, pServiceBuffer: PWCHAR, ServiceBufferSize: DWORD, Flags: INT, ) -> INT30     pub fn GetNameInfoW(
31         pSockaddr: *const SOCKADDR, SockaddrLength: socklen_t, pNodeBuffer: PWCHAR,
32         NodeBufferSize: DWORD, pServiceBuffer: PWCHAR, ServiceBufferSize: DWORD, Flags: INT,
33     ) -> INT;
InetNtopW(Family: INT, pAddr: PVOID, pStringBuf: PWSTR, StringBufSize: size_t) -> PCWSTR34     pub fn InetNtopW(Family: INT, pAddr: PVOID, pStringBuf: PWSTR, StringBufSize: size_t) -> PCWSTR;
InetPtonW(Family: INT, pszAddrString: PCWSTR, pAddrBuf: PVOID) -> INT35     pub fn InetPtonW(Family: INT, pszAddrString: PCWSTR, pAddrBuf: PVOID) -> INT;
SetAddrInfoExA( pName: PCSTR, pServiceName: PCSTR, pAddresses: *mut SOCKET_ADDRESS, dwAddressCount: DWORD, lpBlob: LPBLOB, dwFlags: DWORD, dwNameSpace: DWORD, lpNspId: LPGUID, timeout: *mut timeval, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpNameHandle: LPHANDLE, ) -> INT36     pub fn SetAddrInfoExA(
37         pName: PCSTR, pServiceName: PCSTR, pAddresses: *mut SOCKET_ADDRESS, dwAddressCount: DWORD,
38         lpBlob: LPBLOB, dwFlags: DWORD, dwNameSpace: DWORD, lpNspId: LPGUID, timeout: *mut timeval,
39         lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE,
40         lpNameHandle: LPHANDLE,
41     ) -> INT;
SetAddrInfoExW( pName: PCWSTR, pServiceName: PCWSTR, pAddresses: *mut SOCKET_ADDRESS, dwAddressCount: DWORD, lpBlob: LPBLOB, dwFlags: DWORD, dwNameSpace: DWORD, lpNspId: LPGUID, timeout: *mut timeval, lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE, lpNameHandle: LPHANDLE, ) -> INT42     pub fn SetAddrInfoExW(
43         pName: PCWSTR, pServiceName: PCWSTR, pAddresses: *mut SOCKET_ADDRESS, dwAddressCount: DWORD,
44         lpBlob: LPBLOB, dwFlags: DWORD, dwNameSpace: DWORD, lpNspId: LPGUID, timeout: *mut timeval,
45         lpOverlapped: LPOVERLAPPED, lpCompletionRoutine: LPLOOKUPSERVICE_COMPLETION_ROUTINE,
46         lpNameHandle: LPHANDLE,
47     ) -> INT;
48     // pub fn WEP();
WPUCompleteOverlappedRequest( s: SOCKET, lpOverlapped: LPWSAOVERLAPPED, dwError: DWORD, cbTransferred: DWORD, lpErrno: LPINT, ) -> c_int49     pub fn WPUCompleteOverlappedRequest(
50         s: SOCKET, lpOverlapped: LPWSAOVERLAPPED, dwError: DWORD, cbTransferred: DWORD,
51         lpErrno: LPINT,
52     ) -> c_int;
53     // pub fn WPUGetProviderPathEx();
WSAAccept( s: SOCKET, addr: *mut SOCKADDR, addrlen: LPINT, lpfnCondition: LPCONDITIONPROC, dwCallbackData: DWORD_PTR, ) -> SOCKET54     pub fn WSAAccept(
55         s: SOCKET, addr: *mut SOCKADDR, addrlen: LPINT, lpfnCondition: LPCONDITIONPROC,
56         dwCallbackData: DWORD_PTR,
57     ) -> SOCKET;
WSAAddressToStringA( lpsaAddress: LPSOCKADDR, dwAddressLength: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOA, lpszAddressString: LPSTR, lpdwAddressStringLength: LPDWORD, ) -> INT58     pub fn WSAAddressToStringA(
59         lpsaAddress: LPSOCKADDR, dwAddressLength: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOA,
60         lpszAddressString: LPSTR, lpdwAddressStringLength: LPDWORD,
61     ) -> INT;
WSAAddressToStringW( lpsaAddress: LPSOCKADDR, dwAddressLength: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOW, lpszAddressString: LPWSTR, lpdwAddressStringLength: LPDWORD, ) -> INT62     pub fn WSAAddressToStringW(
63         lpsaAddress: LPSOCKADDR, dwAddressLength: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOW,
64         lpszAddressString: LPWSTR, lpdwAddressStringLength: LPDWORD,
65     ) -> INT;
WSAAdvertiseProvider( puuidProviderId: *const GUID, pNSPv2Routine: *const LPCNSPV2_ROUTINE, ) -> INT66     pub fn WSAAdvertiseProvider(
67         puuidProviderId: *const GUID, pNSPv2Routine: *const LPCNSPV2_ROUTINE,
68     ) -> INT;
WSAAsyncGetHostByAddr( hWnd: HWND, wMsg: u_int, addr: *const c_char, len: c_int, _type: c_int, buf: *mut c_char, buflen: c_int, ) -> HANDLE69     pub fn WSAAsyncGetHostByAddr(
70         hWnd: HWND, wMsg: u_int, addr: *const c_char, len: c_int, _type: c_int, buf: *mut c_char,
71         buflen: c_int,
72     ) -> HANDLE;
WSAAsyncGetHostByName( hWnd: HWND, wMsg: u_int, name: *const c_char, buf: *mut c_char, buflen: c_int, ) -> HANDLE73     pub fn WSAAsyncGetHostByName(
74         hWnd: HWND, wMsg: u_int, name: *const c_char, buf: *mut c_char, buflen: c_int,
75     ) -> HANDLE;
WSAAsyncGetProtoByName( hWnd: HWND, wMsg: u_int, name: *const c_char, buf: *mut c_char, buflen: c_int, ) -> HANDLE76     pub fn WSAAsyncGetProtoByName(
77         hWnd: HWND, wMsg: u_int, name: *const c_char, buf: *mut c_char, buflen: c_int,
78     ) -> HANDLE;
WSAAsyncGetProtoByNumber( hWnd: HWND, wMsg: u_int, number: c_int, buf: *mut c_char, buflen: c_int, ) -> HANDLE79     pub fn WSAAsyncGetProtoByNumber(
80         hWnd: HWND, wMsg: u_int, number: c_int, buf: *mut c_char, buflen: c_int,
81     ) -> HANDLE;
WSAAsyncGetServByName( hWnd: HWND, wMsg: u_int, name: *const c_char, proto: *const c_char, buf: *mut c_char, buflen: c_int, ) -> HANDLE82     pub fn WSAAsyncGetServByName(
83         hWnd: HWND, wMsg: u_int, name: *const c_char, proto: *const c_char, buf: *mut c_char,
84         buflen: c_int,
85     ) -> HANDLE;
WSAAsyncGetServByPort( hWnd: HWND, wMsg: u_int, port: c_int, proto: *const c_char, buf: *mut c_char, buflen: c_int, ) -> HANDLE86     pub fn WSAAsyncGetServByPort(
87         hWnd: HWND, wMsg: u_int, port: c_int, proto: *const c_char, buf: *mut c_char, buflen: c_int,
88     ) -> HANDLE;
WSAAsyncSelect(s: SOCKET, hWnd: HWND, wMsg: u_int, lEvent: c_long) -> c_int89     pub fn WSAAsyncSelect(s: SOCKET, hWnd: HWND, wMsg: u_int, lEvent: c_long) -> c_int;
WSACancelAsyncRequest(hAsyncTaskHandle: HANDLE) -> c_int90     pub fn WSACancelAsyncRequest(hAsyncTaskHandle: HANDLE) -> c_int;
WSACancelBlockingCall() -> c_int91     pub fn WSACancelBlockingCall() -> c_int;
WSACleanup() -> c_int92     pub fn WSACleanup() -> c_int;
WSACloseEvent(hEvent: WSAEVENT) -> BOOL93     pub fn WSACloseEvent(hEvent: WSAEVENT) -> BOOL;
WSAConnect( s: SOCKET, name: *const SOCKADDR, namelen: c_int, lpCallerData: LPWSABUF, lpCalleeData: LPWSABUF, lpSQOS: LPQOS, lpGQOS: LPQOS, ) -> c_int94     pub fn WSAConnect(
95         s: SOCKET, name: *const SOCKADDR, namelen: c_int, lpCallerData: LPWSABUF,
96         lpCalleeData: LPWSABUF, lpSQOS: LPQOS, lpGQOS: LPQOS,
97     ) -> c_int;
WSAConnectByList( s: SOCKET, SocketAddress: PSOCKET_ADDRESS_LIST, LocalAddressLength: LPDWORD, LocalAddress: LPSOCKADDR, RemoteAddressLength: LPDWORD, RemoteAddress: LPSOCKADDR, timeout: *const timeval, Reserved: LPWSAOVERLAPPED, ) -> BOOL98     pub fn WSAConnectByList(
99         s: SOCKET, SocketAddress: PSOCKET_ADDRESS_LIST, LocalAddressLength: LPDWORD,
100         LocalAddress: LPSOCKADDR, RemoteAddressLength: LPDWORD, RemoteAddress: LPSOCKADDR,
101         timeout: *const timeval, Reserved: LPWSAOVERLAPPED,
102     ) -> BOOL;
WSAConnectByNameA( s: SOCKET, nodename: LPCSTR, servicename: LPCSTR, LocalAddressLength: LPDWORD, LocalAddress: LPSOCKADDR, RemoteAddressLength: LPDWORD, RemoteAddress: LPSOCKADDR, timeout: *const timeval, Reserved: LPWSAOVERLAPPED, ) -> BOOL103     pub fn WSAConnectByNameA(
104         s: SOCKET, nodename: LPCSTR, servicename: LPCSTR, LocalAddressLength: LPDWORD,
105         LocalAddress: LPSOCKADDR, RemoteAddressLength: LPDWORD, RemoteAddress: LPSOCKADDR,
106         timeout: *const timeval, Reserved: LPWSAOVERLAPPED,
107     ) -> BOOL;
WSAConnectByNameW( s: SOCKET, nodename: LPWSTR, servicename: LPWSTR, LocalAddressLength: LPDWORD, LocalAddress: LPSOCKADDR, RemoteAddressLength: LPDWORD, RemoteAddress: LPSOCKADDR, timeout: *const timeval, Reserved: LPWSAOVERLAPPED, ) -> BOOL108     pub fn WSAConnectByNameW(
109         s: SOCKET, nodename: LPWSTR, servicename: LPWSTR, LocalAddressLength: LPDWORD,
110         LocalAddress: LPSOCKADDR, RemoteAddressLength: LPDWORD, RemoteAddress: LPSOCKADDR,
111         timeout: *const timeval, Reserved: LPWSAOVERLAPPED,
112     ) -> BOOL;
WSACreateEvent() -> WSAEVENT113     pub fn WSACreateEvent() -> WSAEVENT;
WSADuplicateSocketA( s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOA, ) -> c_int114     pub fn WSADuplicateSocketA(
115         s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOA,
116     ) -> c_int;
WSADuplicateSocketW( s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOW, ) -> c_int117     pub fn WSADuplicateSocketW(
118         s: SOCKET, dwProcessId: DWORD, lpProtocolInfo: LPWSAPROTOCOL_INFOW,
119     ) -> c_int;
WSAEnumNameSpaceProvidersA( lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOA, ) -> INT120     pub fn WSAEnumNameSpaceProvidersA(
121         lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOA,
122     ) -> INT;
WSAEnumNameSpaceProvidersExA( lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOEXA, ) -> INT123     pub fn WSAEnumNameSpaceProvidersExA(
124         lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOEXA,
125     ) -> INT;
WSAEnumNameSpaceProvidersExW( lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOEXW, ) -> INT126     pub fn WSAEnumNameSpaceProvidersExW(
127         lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOEXW,
128     ) -> INT;
WSAEnumNameSpaceProvidersW( lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOW, ) -> INT129     pub fn WSAEnumNameSpaceProvidersW(
130         lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOW,
131     ) -> INT;
WSAEnumNetworkEvents( s: SOCKET, hEventObject: WSAEVENT, lpNetworkEvents: LPWSANETWORKEVENTS, ) -> c_int132     pub fn WSAEnumNetworkEvents(
133         s: SOCKET, hEventObject: WSAEVENT, lpNetworkEvents: LPWSANETWORKEVENTS,
134     ) -> c_int;
WSAEnumProtocolsA( lpiProtocols: LPINT, lpProtocolBuffer: LPWSAPROTOCOL_INFOA, lpdwBufferLength: LPDWORD, ) -> c_int135     pub fn WSAEnumProtocolsA(
136         lpiProtocols: LPINT, lpProtocolBuffer: LPWSAPROTOCOL_INFOA, lpdwBufferLength: LPDWORD,
137     ) -> c_int;
WSAEnumProtocolsW( lpiProtocols: LPINT, lpProtocolBuffer: LPWSAPROTOCOL_INFOW, lpdwBufferLength: LPDWORD, ) -> c_int138     pub fn WSAEnumProtocolsW(
139         lpiProtocols: LPINT, lpProtocolBuffer: LPWSAPROTOCOL_INFOW, lpdwBufferLength: LPDWORD,
140     ) -> c_int;
WSAEventSelect(s: SOCKET, hEventObject: WSAEVENT, lNetworkEvents: c_long) -> c_int141     pub fn WSAEventSelect(s: SOCKET, hEventObject: WSAEVENT, lNetworkEvents: c_long) -> c_int;
WSAGetLastError() -> c_int142     pub fn WSAGetLastError() -> c_int;
WSAGetOverlappedResult( s: SOCKET, lpOverlapped: LPWSAOVERLAPPED, lpcbTransfer: LPDWORD, fWait: BOOL, lpdwFlags: LPDWORD, ) -> BOOL143     pub fn WSAGetOverlappedResult(
144         s: SOCKET, lpOverlapped: LPWSAOVERLAPPED, lpcbTransfer: LPDWORD, fWait: BOOL,
145         lpdwFlags: LPDWORD,
146     ) -> BOOL;
WSAGetQOSByName(s: SOCKET, lpQOSName: LPWSABUF, lpQOS: LPQOS) -> BOOL147     pub fn WSAGetQOSByName(s: SOCKET, lpQOSName: LPWSABUF, lpQOS: LPQOS) -> BOOL;
WSAGetServiceClassInfoA( lpProviderId: LPGUID, lpServiceClassId: LPGUID, lpdwBufSize: LPDWORD, lpServiceClassInfo: LPWSASERVICECLASSINFOA, ) -> INT148     pub fn WSAGetServiceClassInfoA(
149         lpProviderId: LPGUID, lpServiceClassId: LPGUID, lpdwBufSize: LPDWORD,
150         lpServiceClassInfo: LPWSASERVICECLASSINFOA,
151     ) -> INT;
WSAGetServiceClassInfoW( lpProviderId: LPGUID, lpServiceClassId: LPGUID, lpdwBufSize: LPDWORD, lpServiceClassInfo: LPWSASERVICECLASSINFOW, ) -> INT152     pub fn WSAGetServiceClassInfoW(
153         lpProviderId: LPGUID, lpServiceClassId: LPGUID, lpdwBufSize: LPDWORD,
154         lpServiceClassInfo: LPWSASERVICECLASSINFOW,
155     ) -> INT;
WSAGetServiceClassNameByClassIdA( lpServiceClassId: LPGUID, lpszServiceClassName: LPSTR, lpdwBufferLength: LPDWORD, ) -> INT156     pub fn WSAGetServiceClassNameByClassIdA(
157         lpServiceClassId: LPGUID, lpszServiceClassName: LPSTR, lpdwBufferLength: LPDWORD,
158     ) -> INT;
WSAGetServiceClassNameByClassIdW( lpServiceClassId: LPGUID, lpszServiceClassName: LPWSTR, lpdwBufferLength: LPDWORD, ) -> INT159     pub fn WSAGetServiceClassNameByClassIdW(
160         lpServiceClassId: LPGUID, lpszServiceClassName: LPWSTR, lpdwBufferLength: LPDWORD,
161     ) -> INT;
WSAHtonl(s: SOCKET, hostlong: u_long, lpnetlong: *mut u_long) -> c_int162     pub fn WSAHtonl(s: SOCKET, hostlong: u_long, lpnetlong: *mut u_long) -> c_int;
WSAHtons(s: SOCKET, hostshort: u_short, lpnetshort: *mut u_short) -> c_int163     pub fn WSAHtons(s: SOCKET, hostshort: u_short, lpnetshort: *mut u_short) -> c_int;
WSAInstallServiceClassA(lpServiceClassInfo: LPWSASERVICECLASSINFOA) -> INT164     pub fn WSAInstallServiceClassA(lpServiceClassInfo: LPWSASERVICECLASSINFOA) -> INT;
WSAInstallServiceClassW(lpServiceClassInfo: LPWSASERVICECLASSINFOW) -> INT165     pub fn WSAInstallServiceClassW(lpServiceClassInfo: LPWSASERVICECLASSINFOW) -> INT;
WSAIoctl( s: SOCKET, dwIoControlCode: DWORD, lpvInBuffer: LPVOID, cbInBuffer: DWORD, lpvOutBuffer: LPVOID, cbOutBuffer: DWORD, lpcbBytesReturned: LPDWORD, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE, ) -> c_int166     pub fn WSAIoctl(
167         s: SOCKET, dwIoControlCode: DWORD, lpvInBuffer: LPVOID, cbInBuffer: DWORD,
168         lpvOutBuffer: LPVOID, cbOutBuffer: DWORD, lpcbBytesReturned: LPDWORD,
169         lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
170     ) -> c_int;
WSAIsBlocking() -> BOOL171     pub fn WSAIsBlocking() -> BOOL;
WSAJoinLeaf( s: SOCKET, name: *const SOCKADDR, namelen: c_int, lpCallerData: LPWSABUF, lpCalleeData: LPWSABUF, lpSQOS: LPQOS, lpGQOS: LPQOS, dwFlags: DWORD, ) -> SOCKET172     pub fn WSAJoinLeaf(
173         s: SOCKET, name: *const SOCKADDR, namelen: c_int, lpCallerData: LPWSABUF,
174         lpCalleeData: LPWSABUF, lpSQOS: LPQOS, lpGQOS: LPQOS, dwFlags: DWORD,
175     ) -> SOCKET;
WSALookupServiceBeginA( lpqsRestrictions: LPWSAQUERYSETA, dwControlFlags: DWORD, lphLookup: LPHANDLE, ) -> INT176     pub fn WSALookupServiceBeginA(
177         lpqsRestrictions: LPWSAQUERYSETA, dwControlFlags: DWORD, lphLookup: LPHANDLE,
178     ) -> INT;
WSALookupServiceBeginW( lpqsRestrictions: LPWSAQUERYSETW, dwControlFlags: DWORD, lphLookup: LPHANDLE, ) -> INT179     pub fn WSALookupServiceBeginW(
180         lpqsRestrictions: LPWSAQUERYSETW, dwControlFlags: DWORD, lphLookup: LPHANDLE,
181     ) -> INT;
WSALookupServiceEnd(hLookup: HANDLE) -> INT182     pub fn WSALookupServiceEnd(hLookup: HANDLE) -> INT;
WSALookupServiceNextA( hLookup: HANDLE, dwControlFlags: DWORD, lpdwBufferLength: LPDWORD, lpqsResults: LPWSAQUERYSETA, ) -> INT183     pub fn WSALookupServiceNextA(
184         hLookup: HANDLE, dwControlFlags: DWORD, lpdwBufferLength: LPDWORD,
185         lpqsResults: LPWSAQUERYSETA,
186     ) -> INT;
WSALookupServiceNextW( hLookup: HANDLE, dwControlFlags: DWORD, lpdwBufferLength: LPDWORD, lpqsResults: LPWSAQUERYSETW, ) -> INT187     pub fn WSALookupServiceNextW(
188         hLookup: HANDLE, dwControlFlags: DWORD, lpdwBufferLength: LPDWORD,
189         lpqsResults: LPWSAQUERYSETW,
190     ) -> INT;
WSANSPIoctl( hLookup: HANDLE, dwControlFlags: DWORD, lpvInBuffer: LPVOID, cbInBuffer: DWORD, lpvOutBuffer: LPVOID, cbOutBuffer: DWORD, lpcbBytesReturned: LPDWORD, lpCompletion: LPWSACOMPLETION, ) -> INT191     pub fn WSANSPIoctl(
192         hLookup: HANDLE, dwControlFlags: DWORD, lpvInBuffer: LPVOID, cbInBuffer: DWORD,
193         lpvOutBuffer: LPVOID, cbOutBuffer: DWORD, lpcbBytesReturned: LPDWORD,
194         lpCompletion: LPWSACOMPLETION,
195     ) -> INT;
WSANtohl(s: SOCKET, netlong: u_long, lphostlong: *mut c_long) -> c_int196     pub fn WSANtohl(s: SOCKET, netlong: u_long, lphostlong: *mut c_long) -> c_int;
WSANtohs(s: SOCKET, netshort: u_short, lphostshort: *mut c_short) -> c_int197     pub fn WSANtohs(s: SOCKET, netshort: u_short, lphostshort: *mut c_short) -> c_int;
WSAPoll(fdArray: LPWSAPOLLFD, fds: ULONG, timeout: INT) -> c_int198     pub fn WSAPoll(fdArray: LPWSAPOLLFD, fds: ULONG, timeout: INT) -> c_int;
WSAProviderCompleteAsyncCall(hAsyncCall: HANDLE, iRetCode: INT) -> INT199     pub fn WSAProviderCompleteAsyncCall(hAsyncCall: HANDLE, iRetCode: INT) -> INT;
WSAProviderConfigChange( lpNotificationHandle: LPHANDLE, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE, ) -> INT200     pub fn WSAProviderConfigChange(
201         lpNotificationHandle: LPHANDLE, lpOverlapped: LPWSAOVERLAPPED,
202         lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
203     ) -> INT;
WSARecv( s: SOCKET, lpBuffers: LPWSABUF, dwBufferCount: DWORD, lpNumberOfBytesRecvd: LPDWORD, lpFlags: LPDWORD, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE, ) -> c_int204     pub fn WSARecv(
205         s: SOCKET, lpBuffers: LPWSABUF, dwBufferCount: DWORD, lpNumberOfBytesRecvd: LPDWORD,
206         lpFlags: LPDWORD, lpOverlapped: LPWSAOVERLAPPED,
207         lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
208     ) -> c_int;
WSARecvDisconnect(s: SOCKET, lpInboundDisconnectData: LPWSABUF) -> c_int209     pub fn WSARecvDisconnect(s: SOCKET, lpInboundDisconnectData: LPWSABUF) -> c_int;
WSARecvFrom( s: SOCKET, lpBuffers: LPWSABUF, dwBufferCount: DWORD, lpNumberOfBytesRecvd: LPDWORD, lpFlags: LPDWORD, lpFrom: *mut SOCKADDR, lpFromlen: LPINT, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE, ) -> c_int210     pub fn WSARecvFrom(
211         s: SOCKET, lpBuffers: LPWSABUF, dwBufferCount: DWORD, lpNumberOfBytesRecvd: LPDWORD,
212         lpFlags: LPDWORD, lpFrom: *mut SOCKADDR, lpFromlen: LPINT, lpOverlapped: LPWSAOVERLAPPED,
213         lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
214     ) -> c_int;
WSARemoveServiceClass(lpServiceClassId: LPGUID) -> INT215     pub fn WSARemoveServiceClass(lpServiceClassId: LPGUID) -> INT;
WSAResetEvent(hEvent: WSAEVENT) -> BOOL216     pub fn WSAResetEvent(hEvent: WSAEVENT) -> BOOL;
WSASend( s: SOCKET, lpBuffers: LPWSABUF, dwBufferCount: DWORD, lpNumberOfBytesSent: LPDWORD, dwFlags: DWORD, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE, ) -> c_int217     pub fn WSASend(
218         s: SOCKET, lpBuffers: LPWSABUF, dwBufferCount: DWORD, lpNumberOfBytesSent: LPDWORD,
219         dwFlags: DWORD, lpOverlapped: LPWSAOVERLAPPED,
220         lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
221     ) -> c_int;
WSASendDisconnect(s: SOCKET, lpOutboundDisconnectData: LPWSABUF) -> c_int222     pub fn WSASendDisconnect(s: SOCKET, lpOutboundDisconnectData: LPWSABUF) -> c_int;
WSASendMsg( Handle: SOCKET, lpMsg: LPWSAMSG, dwFlags: DWORD, lpNumberOfBytesSent: LPDWORD, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE, ) -> c_int223     pub fn WSASendMsg(
224         Handle: SOCKET, lpMsg: LPWSAMSG, dwFlags: DWORD, lpNumberOfBytesSent: LPDWORD,
225         lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
226     ) -> c_int;
WSASendTo( s: SOCKET, lpBuffers: LPWSABUF, dwBufferCount: DWORD, lpNumberOfBytesSent: LPDWORD, dwFlags: DWORD, lpTo: *const SOCKADDR, iToLen: c_int, lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE, ) -> c_int227     pub fn WSASendTo(
228         s: SOCKET, lpBuffers: LPWSABUF, dwBufferCount: DWORD, lpNumberOfBytesSent: LPDWORD,
229         dwFlags: DWORD, lpTo: *const SOCKADDR, iToLen: c_int, lpOverlapped: LPWSAOVERLAPPED,
230         lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
231     ) -> c_int;
WSASetBlockingHook(lpBlockFunc: FARPROC) -> FARPROC232     pub fn WSASetBlockingHook(lpBlockFunc: FARPROC) -> FARPROC;
WSASetEvent(hEvent: WSAEVENT) -> BOOL233     pub fn WSASetEvent(hEvent: WSAEVENT) -> BOOL;
WSASetLastError(iError: c_int)234     pub fn WSASetLastError(iError: c_int);
WSASetServiceA( lpqsRegInfo: LPWSAQUERYSETA, essoperation: WSAESETSERVICEOP, dwControlFlags: DWORD, ) -> INT235     pub fn WSASetServiceA(
236         lpqsRegInfo: LPWSAQUERYSETA, essoperation: WSAESETSERVICEOP, dwControlFlags: DWORD,
237     ) -> INT;
WSASetServiceW( lpqsRegInfo: LPWSAQUERYSETW, essoperation: WSAESETSERVICEOP, dwControlFlags: DWORD, ) -> INT238     pub fn WSASetServiceW(
239         lpqsRegInfo: LPWSAQUERYSETW, essoperation: WSAESETSERVICEOP, dwControlFlags: DWORD,
240     ) -> INT;
WSASocketA( af: c_int, _type: c_int, protocol: c_int, lpProtocolInfo: LPWSAPROTOCOL_INFOA, g: GROUP, dwFlags: DWORD, ) -> SOCKET241     pub fn WSASocketA(
242         af: c_int, _type: c_int, protocol: c_int, lpProtocolInfo: LPWSAPROTOCOL_INFOA, g: GROUP,
243         dwFlags: DWORD,
244     ) -> SOCKET;
WSASocketW( af: c_int, _type: c_int, protocol: c_int, lpProtocolInfo: LPWSAPROTOCOL_INFOW, g: GROUP, dwFlags: DWORD, ) -> SOCKET245     pub fn WSASocketW(
246         af: c_int, _type: c_int, protocol: c_int, lpProtocolInfo: LPWSAPROTOCOL_INFOW, g: GROUP,
247         dwFlags: DWORD,
248     ) -> SOCKET;
WSAStartup(wVersionRequested: WORD, lpWSAData: LPWSADATA) -> c_int249     pub fn WSAStartup(wVersionRequested: WORD, lpWSAData: LPWSADATA) -> c_int;
WSAStringToAddressA( AddressString: LPSTR, AddressFamily: INT, lpProtocolInfo: LPWSAPROTOCOL_INFOA, lpAddress: LPSOCKADDR, lpAddressLength: LPINT, ) -> INT250     pub fn WSAStringToAddressA(
251         AddressString: LPSTR, AddressFamily: INT, lpProtocolInfo: LPWSAPROTOCOL_INFOA,
252         lpAddress: LPSOCKADDR, lpAddressLength: LPINT,
253     ) -> INT;
WSAStringToAddressW( AddressString: LPWSTR, AddressFamily: INT, lpProtocolInfo: LPWSAPROTOCOL_INFOW, lpAddress: LPSOCKADDR, lpAddressLength: LPINT, ) -> INT254     pub fn WSAStringToAddressW(
255         AddressString: LPWSTR, AddressFamily: INT, lpProtocolInfo: LPWSAPROTOCOL_INFOW,
256         lpAddress: LPSOCKADDR, lpAddressLength: LPINT,
257     ) -> INT;
WSAUnadvertiseProvider(puuidProviderId: *const GUID) -> INT258     pub fn WSAUnadvertiseProvider(puuidProviderId: *const GUID) -> INT;
WSAUnhookBlockingHook() -> c_int259     pub fn WSAUnhookBlockingHook() -> c_int;
WSAWaitForMultipleEvents( cEvents: DWORD, lphEvents: *const WSAEVENT, fWaitAll: BOOL, dwTimeout: DWORD, fAlertable: BOOL, ) -> DWORD260     pub fn WSAWaitForMultipleEvents(
261         cEvents: DWORD, lphEvents: *const WSAEVENT, fWaitAll: BOOL, dwTimeout: DWORD,
262         fAlertable: BOOL,
263     ) -> DWORD;
WSCDeinstallProvider(lpProviderId: LPGUID, lpErrno: LPINT) -> c_int264     pub fn WSCDeinstallProvider(lpProviderId: LPGUID, lpErrno: LPINT) -> c_int;
265     // pub fn WSCDeinstallProviderEx();
WSCEnableNSProvider(lpProviderId: LPGUID, fEnable: BOOL) -> INT266     pub fn WSCEnableNSProvider(lpProviderId: LPGUID, fEnable: BOOL) -> INT;
WSCEnumProtocols( lpiProtocols: LPINT, lpProtocolBuffer: LPWSAPROTOCOL_INFOW, lpdwBufferLength: LPDWORD, lpErrno: LPINT, ) -> c_int267     pub fn WSCEnumProtocols(
268         lpiProtocols: LPINT, lpProtocolBuffer: LPWSAPROTOCOL_INFOW, lpdwBufferLength: LPDWORD,
269         lpErrno: LPINT,
270     ) -> c_int;
271     // pub fn WSCEnumProtocolsEx();
WSCGetApplicationCategory( Path: LPCWSTR, PathLength: DWORD, Extra: LPCWSTR, ExtraLength: DWORD, pPermittedLspCategories: *mut DWORD, lpErrno: LPINT, ) -> c_int272     pub fn WSCGetApplicationCategory(
273         Path: LPCWSTR, PathLength: DWORD, Extra: LPCWSTR, ExtraLength: DWORD,
274         pPermittedLspCategories: *mut DWORD, lpErrno: LPINT,
275     ) -> c_int;
276     // pub fn WSCGetApplicationCategoryEx();
WSCGetProviderInfo( lpProviderId: LPGUID, InfoType: WSC_PROVIDER_INFO_TYPE, Info: PBYTE, InfoSize: *mut size_t, Flags: DWORD, lpErrno: LPINT, ) -> c_int277     pub fn WSCGetProviderInfo(
278         lpProviderId: LPGUID, InfoType: WSC_PROVIDER_INFO_TYPE, Info: PBYTE, InfoSize: *mut size_t,
279         Flags: DWORD, lpErrno: LPINT,
280     ) -> c_int;
WSCGetProviderPath( lpProviderId: LPGUID, lpszProviderDllPath: *mut WCHAR, lpProviderDllPathLen: LPINT, lpErrno: LPINT, ) -> c_int281     pub fn WSCGetProviderPath(
282         lpProviderId: LPGUID, lpszProviderDllPath: *mut WCHAR, lpProviderDllPathLen: LPINT,
283         lpErrno: LPINT,
284     ) -> c_int;
WSCInstallNameSpace( lpszIdentifier: LPWSTR, lpszPathName: LPWSTR, dwNameSpace: DWORD, dwVersion: DWORD, lpProviderId: LPGUID, ) -> INT285     pub fn WSCInstallNameSpace(
286         lpszIdentifier: LPWSTR, lpszPathName: LPWSTR, dwNameSpace: DWORD, dwVersion: DWORD,
287         lpProviderId: LPGUID,
288     ) -> INT;
WSCInstallNameSpaceEx( lpszIdentifier: LPWSTR, lpszPathName: LPWSTR, dwNameSpace: DWORD, dwVersion: DWORD, lpProviderId: LPGUID, lpProviderSpecific: LPBLOB, ) -> INT289     pub fn WSCInstallNameSpaceEx(
290         lpszIdentifier: LPWSTR, lpszPathName: LPWSTR, dwNameSpace: DWORD, dwVersion: DWORD,
291         lpProviderId: LPGUID, lpProviderSpecific: LPBLOB,
292     ) -> INT;
293     // pub fn WSCInstallNameSpaceEx2();
WSCInstallProvider( lpProviderId: LPGUID, lpszProviderDllPath: *const WCHAR, lpProtocolInfoList: LPWSAPROTOCOL_INFOW, dwNumberOfEntries: DWORD, lpErrno: LPINT, ) -> c_int294     pub fn WSCInstallProvider(
295         lpProviderId: LPGUID, lpszProviderDllPath: *const WCHAR,
296         lpProtocolInfoList: LPWSAPROTOCOL_INFOW, dwNumberOfEntries: DWORD, lpErrno: LPINT,
297     ) -> c_int;
298     // pub fn WSCInstallProviderEx();
WSCSetApplicationCategory( Path: LPCWSTR, PathLength: DWORD, Extra: LPCWSTR, ExtraLength: DWORD, PermittedLspCategories: DWORD, pPrevPermLspCat: *mut DWORD, lpErrno: LPINT, ) -> c_int299     pub fn WSCSetApplicationCategory(
300         Path: LPCWSTR, PathLength: DWORD, Extra: LPCWSTR, ExtraLength: DWORD,
301         PermittedLspCategories: DWORD, pPrevPermLspCat: *mut DWORD, lpErrno: LPINT,
302     ) -> c_int;
303     // pub fn WSCSetApplicationCategoryEx();
WSCSetProviderInfo( lpProviderId: LPGUID, InfoType: WSC_PROVIDER_INFO_TYPE, Info: PBYTE, InfoSize: size_t, Flags: DWORD, lpErrno: LPINT, ) -> c_int304     pub fn WSCSetProviderInfo(
305         lpProviderId: LPGUID, InfoType: WSC_PROVIDER_INFO_TYPE, Info: PBYTE, InfoSize: size_t,
306         Flags: DWORD, lpErrno: LPINT,
307     ) -> c_int;
WSCUnInstallNameSpace(lpProviderId: LPGUID) -> INT308     pub fn WSCUnInstallNameSpace(lpProviderId: LPGUID) -> INT;
309     // pub fn WSCUnInstallNameSpaceEx2();
WSCUpdateProvider( lpProviderId: LPGUID, lpszProviderDllPath: *const WCHAR, lpProtocolInfoList: LPWSAPROTOCOL_INFOW, dwNumberOfEntries: DWORD, lpErrno: LPINT, ) -> c_int310     pub fn WSCUpdateProvider(
311         lpProviderId: LPGUID, lpszProviderDllPath: *const WCHAR,
312         lpProtocolInfoList: LPWSAPROTOCOL_INFOW, dwNumberOfEntries: DWORD, lpErrno: LPINT,
313     ) -> c_int;
314     // pub fn WSCUpdateProviderEx();
WSCWriteNameSpaceOrder(lpProviderId: LPGUID, dwNumberOfEntries: DWORD) -> c_int315     pub fn WSCWriteNameSpaceOrder(lpProviderId: LPGUID, dwNumberOfEntries: DWORD) -> c_int;
WSCWriteProviderOrder(lpwdCatalogEntryId: LPDWORD, dwNumberOfEntries: DWORD) -> c_int316     pub fn WSCWriteProviderOrder(lpwdCatalogEntryId: LPDWORD, dwNumberOfEntries: DWORD) -> c_int;
317     // pub fn WSCWriteProviderOrderEx();
318     // pub fn WahCloseApcHelper();
319     // pub fn WahCloseHandleHelper();
320     // pub fn WahCloseNotificationHandleHelper();
321     // pub fn WahCloseSocketHandle();
322     // pub fn WahCloseThread();
323     // pub fn WahCompleteRequest();
324     // pub fn WahCreateHandleContextTable();
325     // pub fn WahCreateNotificationHandle();
326     // pub fn WahCreateSocketHandle();
327     // pub fn WahDestroyHandleContextTable();
328     // pub fn WahDisableNonIFSHandleSupport();
329     // pub fn WahEnableNonIFSHandleSupport();
330     // pub fn WahEnumerateHandleContexts();
331     // pub fn WahInsertHandleContext();
332     // pub fn WahNotifyAllProcesses();
333     // pub fn WahOpenApcHelper();
334     // pub fn WahOpenCurrentThread();
335     // pub fn WahOpenHandleHelper();
336     // pub fn WahOpenNotificationHandleHelper();
337     // pub fn WahQueueUserApc();
338     // pub fn WahReferenceContextByHandle();
339     // pub fn WahRemoveHandleContext();
340     // pub fn WahWaitForNotification();
341     // pub fn WahWriteLSPEvent();
__WSAFDIsSet(fd: SOCKET, _: *mut fd_set) -> c_int342     pub fn __WSAFDIsSet(fd: SOCKET, _: *mut fd_set) -> c_int;
accept(s: SOCKET, addr: *mut SOCKADDR, addrlen: *mut c_int) -> SOCKET343     pub fn accept(s: SOCKET, addr: *mut SOCKADDR, addrlen: *mut c_int) -> SOCKET;
bind(s: SOCKET, name: *const SOCKADDR, namelen: c_int) -> c_int344     pub fn bind(s: SOCKET, name: *const SOCKADDR, namelen: c_int) -> c_int;
closesocket(s: SOCKET) -> c_int345     pub fn closesocket(s: SOCKET) -> c_int;
connect(s: SOCKET, name: *const SOCKADDR, namelen: c_int) -> c_int346     pub fn connect(s: SOCKET, name: *const SOCKADDR, namelen: c_int) -> c_int;
freeaddrinfo(pAddrInfo: PADDRINFOA)347     pub fn freeaddrinfo(pAddrInfo: PADDRINFOA);
getaddrinfo( pNodeName: PCSTR, pServiceName: PCSTR, pHints: *const ADDRINFOA, ppResult: *mut PADDRINFOA, ) -> INT348     pub fn getaddrinfo(
349         pNodeName: PCSTR, pServiceName: PCSTR, pHints: *const ADDRINFOA, ppResult: *mut PADDRINFOA,
350     ) -> INT;
gethostbyaddr(addr: *const c_char, len: c_int, _type: c_int) -> *mut hostent351     pub fn gethostbyaddr(addr: *const c_char, len: c_int, _type: c_int) -> *mut hostent;
gethostbyname(name: *const c_char) -> *mut hostent352     pub fn gethostbyname(name: *const c_char) -> *mut hostent;
gethostname(name: *mut c_char, namelen: c_int) -> c_int353     pub fn gethostname(name: *mut c_char, namelen: c_int) -> c_int;
getnameinfo( pSockaddr: *const SOCKADDR, SockaddrLength: socklen_t, pNodeBuffer: PCHAR, NodeBufferSize: DWORD, pServiceBuffer: PCHAR, ServiceBufferSize: DWORD, Flags: INT, ) -> INT354     pub fn getnameinfo(
355         pSockaddr: *const SOCKADDR, SockaddrLength: socklen_t, pNodeBuffer: PCHAR,
356         NodeBufferSize: DWORD, pServiceBuffer: PCHAR, ServiceBufferSize: DWORD, Flags: INT,
357     ) -> INT;
getpeername(s: SOCKET, name: *mut SOCKADDR, namelen: *mut c_int) -> c_int358     pub fn getpeername(s: SOCKET, name: *mut SOCKADDR, namelen: *mut c_int) -> c_int;
getprotobyname(name: *const c_char) -> *mut protoent359     pub fn getprotobyname(name: *const c_char) -> *mut protoent;
getprotobynumber(number: c_int) -> *mut protoent360     pub fn getprotobynumber(number: c_int) -> *mut protoent;
getservbyname(name: *const c_char, proto: *const c_char) -> *mut servent361     pub fn getservbyname(name: *const c_char, proto: *const c_char) -> *mut servent;
getservbyport(port: c_int, proto: *const c_char) -> *mut servent362     pub fn getservbyport(port: c_int, proto: *const c_char) -> *mut servent;
getsockname(s: SOCKET, name: *mut SOCKADDR, namelen: *mut c_int) -> c_int363     pub fn getsockname(s: SOCKET, name: *mut SOCKADDR, namelen: *mut c_int) -> c_int;
getsockopt( s: SOCKET, level: c_int, optname: c_int, optval: *mut c_char, optlen: *mut c_int, ) -> c_int364     pub fn getsockopt(
365         s: SOCKET, level: c_int, optname: c_int, optval: *mut c_char, optlen: *mut c_int,
366     ) -> c_int;
htonl(hostlong: u_long) -> u_long367     pub fn htonl(hostlong: u_long) -> u_long;
htons(hostshort: u_short) -> u_short368     pub fn htons(hostshort: u_short) -> u_short;
inet_addr(cp: *const c_char) -> c_ulong369     pub fn inet_addr(cp: *const c_char) -> c_ulong;
inet_ntoa(_in: in_addr) -> *mut c_char370     pub fn inet_ntoa(_in: in_addr) -> *mut c_char;
inet_ntop(Family: INT, pAddr: PVOID, pStringBuf: PSTR, StringBufSize: size_t) -> PCSTR371     pub fn inet_ntop(Family: INT, pAddr: PVOID, pStringBuf: PSTR, StringBufSize: size_t) -> PCSTR;
inet_pton(Family: INT, pszAddrString: PCSTR, pAddrBuf: PVOID) -> INT372     pub fn inet_pton(Family: INT, pszAddrString: PCSTR, pAddrBuf: PVOID) -> INT;
ioctlsocket(s: SOCKET, cmd: c_long, argp: *mut u_long) -> c_int373     pub fn ioctlsocket(s: SOCKET, cmd: c_long, argp: *mut u_long) -> c_int;
listen(s: SOCKET, backlog: c_int) -> c_int374     pub fn listen(s: SOCKET, backlog: c_int) -> c_int;
ntohl(netlong: u_long) -> u_long375     pub fn ntohl(netlong: u_long) -> u_long;
ntohs(netshort: u_short) -> u_short376     pub fn ntohs(netshort: u_short) -> u_short;
recv(s: SOCKET, buf: *mut c_char, len: c_int, flags: c_int) -> c_int377     pub fn recv(s: SOCKET, buf: *mut c_char, len: c_int, flags: c_int) -> c_int;
recvfrom( s: SOCKET, buf: *mut c_char, len: c_int, flags: c_int, from: *mut SOCKADDR, fromlen: *mut c_int, ) -> c_int378     pub fn recvfrom(
379         s: SOCKET, buf: *mut c_char, len: c_int, flags: c_int, from: *mut SOCKADDR,
380         fromlen: *mut c_int,
381     ) -> c_int;
select( nfds: c_int, readfds: *mut fd_set, writefds: *mut fd_set, exceptfds: *mut fd_set, timeout: *const timeval, ) -> c_int382     pub fn select(
383         nfds: c_int, readfds: *mut fd_set, writefds: *mut fd_set, exceptfds: *mut fd_set,
384         timeout: *const timeval,
385     ) -> c_int;
send(s: SOCKET, buf: *const c_char, len: c_int, flags: c_int) -> c_int386     pub fn send(s: SOCKET, buf: *const c_char, len: c_int, flags: c_int) -> c_int;
sendto( s: SOCKET, buf: *const c_char, len: c_int, flags: c_int, to: *const SOCKADDR, tolen: c_int, ) -> c_int387     pub fn sendto(
388         s: SOCKET, buf: *const c_char, len: c_int, flags: c_int, to: *const SOCKADDR, tolen: c_int,
389     ) -> c_int;
setsockopt( s: SOCKET, level: c_int, optname: c_int, optval: *const c_char, optlen: c_int, ) -> c_int390     pub fn setsockopt(
391         s: SOCKET, level: c_int, optname: c_int, optval: *const c_char, optlen: c_int,
392     ) -> c_int;
shutdown(s: SOCKET, how: c_int) -> c_int393     pub fn shutdown(s: SOCKET, how: c_int) -> c_int;
socket(af: c_int, _type: c_int, protocol: c_int) -> SOCKET394     pub fn socket(af: c_int, _type: c_int, protocol: c_int) -> SOCKET;
395 }
396 #[cfg(any(target_arch = "x86", target_arch = "arm"))]
397 extern "system" {
WSCInstallProviderAndChains( lpProviderId: LPGUID, lpszProviderDllPath: LPWSTR, lpszLspName: LPWSTR, dwServiceFlags: DWORD, lpProtocolInfoList: LPWSAPROTOCOL_INFOW, dwNumberOfEntries: DWORD, lpdwCatalogEntryId: LPDWORD, lpErrno: LPINT, ) -> c_int398     pub fn WSCInstallProviderAndChains(
399         lpProviderId: LPGUID, lpszProviderDllPath: LPWSTR, lpszLspName: LPWSTR,
400         dwServiceFlags: DWORD, lpProtocolInfoList: LPWSAPROTOCOL_INFOW, dwNumberOfEntries: DWORD,
401         lpdwCatalogEntryId: LPDWORD, lpErrno: LPINT,
402     ) -> c_int;
403 }
404 #[cfg(target_arch = "x86_64")]
405 extern "system" {
WSCDeinstallProvider32(lpProviderId: LPGUID, lpErrno: LPINT) -> c_int406     pub fn WSCDeinstallProvider32(lpProviderId: LPGUID, lpErrno: LPINT) -> c_int;
WSCEnableNSProvider32(lpProviderId: LPGUID, fEnable: BOOL) -> INT407     pub fn WSCEnableNSProvider32(lpProviderId: LPGUID, fEnable: BOOL) -> INT;
WSCEnumNameSpaceProviders32( lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOW, ) -> INT408     pub fn WSCEnumNameSpaceProviders32(
409         lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOW,
410     ) -> INT;
WSCEnumNameSpaceProvidersEx32( lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOEXW, ) -> INT411     pub fn WSCEnumNameSpaceProvidersEx32(
412         lpdwBufferLength: LPDWORD, lpnspBuffer: LPWSANAMESPACE_INFOEXW,
413     ) -> INT;
WSCEnumProtocols32( lpiProtocols: LPINT, lpProtocolBuffer: LPWSAPROTOCOL_INFOW, lpdwBufferLength: LPDWORD, lpErrno: LPINT, ) -> c_int414     pub fn WSCEnumProtocols32(
415         lpiProtocols: LPINT, lpProtocolBuffer: LPWSAPROTOCOL_INFOW, lpdwBufferLength: LPDWORD,
416         lpErrno: LPINT,
417     ) -> c_int;
WSCGetProviderInfo32( lpProviderId: LPGUID, InfoType: WSC_PROVIDER_INFO_TYPE, Info: PBYTE, InfoSize: *mut size_t, Flags: DWORD, lpErrno: LPINT, ) -> c_int418     pub fn WSCGetProviderInfo32(
419         lpProviderId: LPGUID, InfoType: WSC_PROVIDER_INFO_TYPE, Info: PBYTE, InfoSize: *mut size_t,
420         Flags: DWORD, lpErrno: LPINT,
421     ) -> c_int;
WSCGetProviderPath32( lpProviderId: LPGUID, lpszProviderDllPath: *mut WCHAR, lpProviderDllPathLen: LPINT, lpErrno: LPINT, ) -> c_int422     pub fn WSCGetProviderPath32(
423         lpProviderId: LPGUID, lpszProviderDllPath: *mut WCHAR, lpProviderDllPathLen: LPINT,
424         lpErrno: LPINT,
425     ) -> c_int;
WSCInstallNameSpace32( lpszIdentifier: LPWSTR, lpszPathName: LPWSTR, dwNameSpace: DWORD, dwVersion: DWORD, lpProviderId: LPGUID, ) -> INT426     pub fn WSCInstallNameSpace32(
427         lpszIdentifier: LPWSTR, lpszPathName: LPWSTR, dwNameSpace: DWORD, dwVersion: DWORD,
428         lpProviderId: LPGUID,
429     ) -> INT;
WSCInstallNameSpaceEx32( lpszIdentifier: LPWSTR, lpszPathName: LPWSTR, dwNameSpace: DWORD, dwVersion: DWORD, lpProviderId: LPGUID, lpProviderSpecific: LPBLOB, ) -> INT430     pub fn WSCInstallNameSpaceEx32(
431         lpszIdentifier: LPWSTR, lpszPathName: LPWSTR, dwNameSpace: DWORD, dwVersion: DWORD,
432         lpProviderId: LPGUID, lpProviderSpecific: LPBLOB,
433     ) -> INT;
WSCInstallProvider64_32( lpProviderId: LPGUID, lpszProviderDllPath: *const WCHAR, lpProtocolInfoList: LPWSAPROTOCOL_INFOW, dwNumberOfEntries: DWORD, lpErrno: LPINT, ) -> c_int434     pub fn WSCInstallProvider64_32(
435         lpProviderId: LPGUID, lpszProviderDllPath: *const WCHAR,
436         lpProtocolInfoList: LPWSAPROTOCOL_INFOW, dwNumberOfEntries: DWORD, lpErrno: LPINT,
437     ) -> c_int;
WSCInstallProviderAndChains64_32( lpProviderId: LPGUID, lpszProviderDllPath: LPWSTR, lpszProviderDllPath32: LPWSTR, lpszLspName: LPWSTR, dwServiceFlags: DWORD, lpProtocolInfoList: LPWSAPROTOCOL_INFOW, dwNumberOfEntries: DWORD, lpdwCatalogEntryId: LPDWORD, lpErrno: LPINT, ) -> c_int438     pub fn WSCInstallProviderAndChains64_32(
439         lpProviderId: LPGUID, lpszProviderDllPath: LPWSTR, lpszProviderDllPath32: LPWSTR,
440         lpszLspName: LPWSTR, dwServiceFlags: DWORD, lpProtocolInfoList: LPWSAPROTOCOL_INFOW,
441         dwNumberOfEntries: DWORD, lpdwCatalogEntryId: LPDWORD, lpErrno: LPINT,
442     ) -> c_int;
WSCSetProviderInfo32( lpProviderId: LPGUID, InfoType: WSC_PROVIDER_INFO_TYPE, Info: PBYTE, InfoSize: size_t, Flags: DWORD, lpErrno: LPINT, ) -> c_int443     pub fn WSCSetProviderInfo32(
444         lpProviderId: LPGUID, InfoType: WSC_PROVIDER_INFO_TYPE, Info: PBYTE, InfoSize: size_t,
445         Flags: DWORD, lpErrno: LPINT,
446     ) -> c_int;
WSCUnInstallNameSpace32(lpProviderId: LPGUID) -> INT447     pub fn WSCUnInstallNameSpace32(lpProviderId: LPGUID) -> INT;
WSCUpdateProvider32( lpProviderId: LPGUID, lpszProviderDllPath: *const WCHAR, lpProtocolInfoList: LPWSAPROTOCOL_INFOW, dwNumberOfEntries: DWORD, lpErrno: LPINT, ) -> c_int448     pub fn WSCUpdateProvider32(
449         lpProviderId: LPGUID, lpszProviderDllPath: *const WCHAR,
450         lpProtocolInfoList: LPWSAPROTOCOL_INFOW, dwNumberOfEntries: DWORD, lpErrno: LPINT,
451     ) -> c_int;
WSCWriteNameSpaceOrder32(lpProviderId: LPGUID, dwNumberOfEntries: DWORD) -> c_int452     pub fn WSCWriteNameSpaceOrder32(lpProviderId: LPGUID, dwNumberOfEntries: DWORD) -> c_int;
WSCWriteProviderOrder32(lpwdCatalogEntryId: LPDWORD, dwNumberOfEntries: DWORD) -> c_int453     pub fn WSCWriteProviderOrder32(lpwdCatalogEntryId: LPDWORD, dwNumberOfEntries: DWORD) -> c_int;
454 }
455 extern {
456     // pub static AddressFamilyInformation;
457     // pub static eui48_broadcast;
458     // pub static in4addr_alligmpv3routersonlink;
459     // pub static in4addr_allnodesonlink;
460     // pub static in4addr_allroutersonlink;
461     // pub static in4addr_allteredohostsonlink;
462     // pub static in4addr_any;
463     // pub static in4addr_broadcast;
464     // pub static in4addr_linklocalprefix;
465     // pub static in4addr_loopback;
466     // pub static in4addr_multicastprefix;
467     // pub static in6addr_6to4prefix;
468     // pub static in6addr_allmldv2routersonlink;
469     // pub static in6addr_allnodesonlink;
470     // pub static in6addr_allnodesonnode;
471     // pub static in6addr_allroutersonlink;
472     // pub static in6addr_any;
473     // pub static in6addr_linklocalprefix;
474     // pub static in6addr_loopback;
475     // pub static in6addr_multicastprefix;
476     // pub static in6addr_solicitednodemulticastprefix;
477     // pub static in6addr_teredoinitiallinklocaladdress;
478     // pub static in6addr_teredoprefix;
479     // pub static in6addr_teredoprefix_old;
480     // pub static in6addr_v4mappedprefix;
481     // pub static scopeid_unspecified;
482     // pub static sockaddr_size;
483 }
484