1 module tango.sys.win32.WsaSock;
2 
3 public import tango.sys.Common;
4 
5 struct Guid
6 {
7         uint     g1;
8         ushort   g2,
9                  g3;
10         ubyte[8] g4;
11 }
12 
13 enum 
14 {
15         WSADESCRIPTION_LEN = 256,
16         WSASYS_STATUS_LEN = 128,
17         WSAEWOULDBLOCK =  10035,
18         WSAEINTR =        10004,
19 }
20 
21 struct WSABUF
22 {
23         uint    len;
24         void*   buf;
25 }
26 
27 struct WSADATA
28 {
29         WORD wVersion;
30         WORD wHighVersion;
31         char[WSADESCRIPTION_LEN+1] szDescription;
32         char[WSASYS_STATUS_LEN+1] szSystemStatus;
33         ushort iMaxSockets;
34         ushort iMaxUdpDg;
35         char* lpVendorInfo;
36 }
37 
38 enum 
39 {
40         SIO_GET_EXTENSION_FUNCTION_POINTER = 0x40000000 | 0x80000000 | 0x08000000 | 6,
41         SO_UPDATE_CONNECT_CONTEXT = 0x7010,
42         SO_UPDATE_ACCEPT_CONTEXT = 0x700B
43 }
44 
45 extern (Windows)
46 {
47         int WSACleanup();
48         int WSAGetLastError ();
49         int WSAStartup(WORD wVersionRequested, WSADATA* lpWSAData);
50         int WSAGetOverlappedResult (HANDLE, OVERLAPPED*, DWORD*, BOOL, DWORD*);
51         int WSAIoctl (HANDLE s, DWORD op, LPVOID inBuf, DWORD cbIn, LPVOID outBuf, DWORD cbOut, DWORD* result, LPOVERLAPPED, void*);
52         int WSARecv (HANDLE, WSABUF*, DWORD, DWORD*, DWORD*, OVERLAPPED*, void*);
53         int WSASend (HANDLE, WSABUF*, DWORD, DWORD*, DWORD, OVERLAPPED*, void*);
54 }
55