| ... | @@ -96,6 +96,23 @@ pub const WSA_FLAG_MULTIPOINT_D_LEAF = 0x10; | ... | @@ -96,6 +96,23 @@ pub const WSA_FLAG_MULTIPOINT_D_LEAF = 0x10; |
| 96 | pub const WSA_FLAG_ACCESS_SYSTEM_SECURITY = 0x40; | 96 | pub const WSA_FLAG_ACCESS_SYSTEM_SECURITY = 0x40; |
| 97 | pub const WSA_FLAG_NO_HANDLE_INHERIT = 0x80; | 97 | pub const WSA_FLAG_NO_HANDLE_INHERIT = 0x80; |
| 98 | | 98 | |
| | 99 | pub const WSAEVENT = HANDLE; |
| | 100 | |
| | 101 | pub const WSAOVERLAPPED = extern struct { |
| | 102 | Internal: DWORD, |
| | 103 | InternalHigh: DWORD, |
| | 104 | Offset: DWORD, |
| | 105 | OffsetHigh: DWORD, |
| | 106 | hEvent: ?WSAEVENT, |
| | 107 | }; |
| | 108 | |
| | 109 | pub const WSAOVERLAPPED_COMPLETION_ROUTINE = extern fn ( |
| | 110 | dwError: DWORD, |
| | 111 | cbTransferred: DWORD, |
| | 112 | lpOverlapped: *WSAOVERLAPPED, |
| | 113 | dwFlags: DWORD |
| | 114 | ) void; |
| | 115 | |
| 99 | pub const WSA_INVALID_HANDLE = 6; | 116 | pub const WSA_INVALID_HANDLE = 6; |
| 100 | pub const WSA_NOT_ENOUGH_MEMORY = 8; | 117 | pub const WSA_NOT_ENOUGH_MEMORY = 8; |
| 101 | pub const WSA_INVALID_PARAMETER = 87; | 118 | pub const WSA_INVALID_PARAMETER = 87; |
| ... | @@ -192,6 +209,19 @@ pub const WSA_QOS_ESDMODEOBJ = 11029; | ... | @@ -192,6 +209,19 @@ pub const WSA_QOS_ESDMODEOBJ = 11029; |
| 192 | pub const WSA_QOS_ESHAPERATEOBJ = 11030; | 209 | pub const WSA_QOS_ESHAPERATEOBJ = 11030; |
| 193 | pub const WSA_QOS_RESERVED_PETYPE = 11031; | 210 | pub const WSA_QOS_RESERVED_PETYPE = 11031; |
| 194 | | 211 | |
| | 212 | |
| | 213 | /// no parameters |
| | 214 | const IOC_VOID = 0x80000000; |
| | 215 | /// copy out parameters |
| | 216 | const IOC_OUT = 0x40000000; |
| | 217 | /// copy in parameters |
| | 218 | const IOC_IN = 0x80000000; |
| | 219 | |
| | 220 | /// The IOCTL is a generic Windows Sockets 2 IOCTL code. New IOCTL codes defined for Windows Sockets 2 will have T == 1. |
| | 221 | const IOC_WS2 = 0x08000000; |
| | 222 | |
| | 223 | pub const SIO_BASE_HANDLE = IOC_OUT | IOC_WS2 | 34; |
| | 224 | |
| 195 | pub extern "ws2_32" stdcallcc fn WSAStartup( | 225 | pub extern "ws2_32" stdcallcc fn WSAStartup( |
| 196 | wVersionRequired: WORD, | 226 | wVersionRequired: WORD, |
| 197 | lpWSAData: *WSADATA, | 227 | lpWSAData: *WSADATA, |
| ... | @@ -214,3 +244,14 @@ pub extern "ws2_32" stdcallcc fn WSASocketW( | ... | @@ -214,3 +244,14 @@ pub extern "ws2_32" stdcallcc fn WSASocketW( |
| 214 | g: GROUP, | 244 | g: GROUP, |
| 215 | dwFlags: DWORD, | 245 | dwFlags: DWORD, |
| 216 | ) SOCKET; | 246 | ) SOCKET; |
| | 247 | pub extern "ws2_32" stdcallcc fn WSAIoctl( |
| | 248 | s: SOCKET, |
| | 249 | dwIoControlCode: DWORD, |
| | 250 | lpvInBuffer: ?*const c_void, |
| | 251 | cbInBuffer: DWORD, |
| | 252 | lpvOutBuffer: ?LPVOID, |
| | 253 | cbOutBuffer: DWORD, |
| | 254 | lpcbBytesReturned: LPDWORD, |
| | 255 | lpOverlapped: ?*WSAOVERLAPPED, |
| | 256 | lpCompletionRoutine: ?*WSAOVERLAPPED_COMPLETION_ROUTINE, |
| | 257 | ) c_int; |