| ... | ... | @@ -96,6 +96,23 @@ pub const WSA_FLAG_MULTIPOINT_D_LEAF = 0x10; |
| 96 | 96 | pub const WSA_FLAG_ACCESS_SYSTEM_SECURITY = 0x40; |
| 97 | 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 | 116 | pub const WSA_INVALID_HANDLE = 6; |
| 100 | 117 | pub const WSA_NOT_ENOUGH_MEMORY = 8; |
| 101 | 118 | pub const WSA_INVALID_PARAMETER = 87; |
| ... | ... | @@ -192,6 +209,19 @@ pub const WSA_QOS_ESDMODEOBJ = 11029; |
| 192 | 209 | pub const WSA_QOS_ESHAPERATEOBJ = 11030; |
| 193 | 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 | 225 | pub extern "ws2_32" stdcallcc fn WSAStartup( |
| 196 | 226 | wVersionRequired: WORD, |
| 197 | 227 | lpWSAData: *WSADATA, |
| ... | ... | @@ -214,3 +244,14 @@ pub extern "ws2_32" stdcallcc fn WSASocketW( |
| 214 | 244 | g: GROUP, |
| 215 | 245 | dwFlags: DWORD, |
| 216 | 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; |