@@ -19,7 +19,9 @@ pub use self::FILE_INFO_BY_HANDLE_CLASS::*;
19
19
pub use libc:: consts:: os:: extra:: {
20
20
FILE_ATTRIBUTE_READONLY ,
21
21
FILE_ATTRIBUTE_DIRECTORY ,
22
+ WSAPROTOCOL_LEN ,
22
23
} ;
24
+ pub use libc:: types:: os:: arch:: extra:: { GROUP , GUID , WSAPROTOCOLCHAIN } ;
23
25
24
26
pub const WSADESCRIPTION_LEN : usize = 256 ;
25
27
pub const WSASYS_STATUS_LEN : usize = 128 ;
@@ -41,6 +43,7 @@ pub const WSA_INFINITE: libc::DWORD = libc::INFINITE;
41
43
pub const WSA_WAIT_TIMEOUT : libc:: DWORD = libc:: consts:: os:: extra:: WAIT_TIMEOUT ;
42
44
pub const WSA_WAIT_EVENT_0 : libc:: DWORD = libc:: consts:: os:: extra:: WAIT_OBJECT_0 ;
43
45
pub const WSA_WAIT_FAILED : libc:: DWORD = libc:: consts:: os:: extra:: WAIT_FAILED ;
46
+ pub const WSAESHUTDOWN : libc:: c_int = 10058 ;
44
47
45
48
pub const ERROR_NO_MORE_FILES : libc:: DWORD = 18 ;
46
49
pub const TOKEN_READ : libc:: DWORD = 0x20008 ;
@@ -80,6 +83,33 @@ pub type LPWSANETWORKEVENTS = *mut WSANETWORKEVENTS;
80
83
81
84
pub type WSAEVENT = libc:: HANDLE ;
82
85
86
+ #[ repr( C ) ]
87
+ #[ derive( Copy ) ]
88
+ pub struct WSAPROTOCOL_INFO {
89
+ pub dwServiceFlags1 : libc:: DWORD ,
90
+ pub dwServiceFlags2 : libc:: DWORD ,
91
+ pub dwServiceFlags3 : libc:: DWORD ,
92
+ pub dwServiceFlags4 : libc:: DWORD ,
93
+ pub dwProviderFlags : libc:: DWORD ,
94
+ pub ProviderId : GUID ,
95
+ pub dwCatalogEntryId : libc:: DWORD ,
96
+ pub ProtocolChain : WSAPROTOCOLCHAIN ,
97
+ pub iVersion : libc:: c_int ,
98
+ pub iAddressFamily : libc:: c_int ,
99
+ pub iMaxSockAddr : libc:: c_int ,
100
+ pub iMinSockAddr : libc:: c_int ,
101
+ pub iSocketType : libc:: c_int ,
102
+ pub iProtocol : libc:: c_int ,
103
+ pub iProtocolMaxOffset : libc:: c_int ,
104
+ pub iNetworkByteOrder : libc:: c_int ,
105
+ pub iSecurityScheme : libc:: c_int ,
106
+ pub dwMessageSize : libc:: DWORD ,
107
+ pub dwProviderReserved : libc:: DWORD ,
108
+ pub szProtocol : [ u16 ; ( WSAPROTOCOL_LEN as usize ) + 1 us] ,
109
+ }
110
+
111
+ pub type LPWSAPROTOCOL_INFO = * mut WSAPROTOCOL_INFO ;
112
+
83
113
#[ repr( C ) ]
84
114
pub struct fd_set {
85
115
fd_count : libc:: c_uint ,
@@ -184,6 +214,7 @@ pub struct FILE_END_OF_FILE_INFO {
184
214
extern "system" {
185
215
pub fn WSAStartup ( wVersionRequested : libc:: WORD ,
186
216
lpWSAData : LPWSADATA ) -> libc:: c_int ;
217
+ pub fn WSACleanup ( ) -> libc:: c_int ;
187
218
pub fn WSAGetLastError ( ) -> libc:: c_int ;
188
219
pub fn WSACloseEvent ( hEvent : WSAEVENT ) -> libc:: BOOL ;
189
220
pub fn WSACreateEvent ( ) -> WSAEVENT ;
@@ -200,6 +231,17 @@ extern "system" {
200
231
hEventObject : WSAEVENT ,
201
232
lpNetworkEvents : LPWSANETWORKEVENTS )
202
233
-> libc:: c_int ;
234
+ pub fn WSADuplicateSocketW ( s : libc:: SOCKET ,
235
+ dwProcessId : libc:: DWORD ,
236
+ lpProtocolInfo : LPWSAPROTOCOL_INFO )
237
+ -> libc:: c_int ;
238
+ pub fn GetCurrentProcessId ( ) -> libc:: DWORD ;
239
+ pub fn WSASocketW ( af : libc:: c_int ,
240
+ kind : libc:: c_int ,
241
+ protocol : libc:: c_int ,
242
+ lpProtocolInfo : LPWSAPROTOCOL_INFO ,
243
+ g : GROUP ,
244
+ dwFlags : libc:: DWORD ) -> libc:: SOCKET ;
203
245
204
246
pub fn ioctlsocket ( s : libc:: SOCKET , cmd : libc:: c_long ,
205
247
argp : * mut libc:: c_ulong ) -> libc:: c_int ;
0 commit comments