Fix build.
[reactos.git] / include / ddk / ws2san.h
1 /*
2 * ws2san.h
3 *
4 * WinSock Direct (SAN) support
5 *
6 * This file is part of the w32api package.
7 *
8 * Contributors:
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
10 *
11 * THIS SOFTWARE IS NOT COPYRIGHTED
12 *
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
15 *
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 */
22
23 #ifndef __WS2SAN_H
24 #define __WS2SAN_H
25
26 #include <winsock2.h>
27
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31
32 #define WSPAPI WINAPI
33
34 /* FIXME: Unknown definitions */
35 typedef PVOID LPWSPDATA;
36 typedef PDWORD LPWSATHREADID;
37 typedef PVOID LPWSPPROC_TABLE;
38 typedef struct _WSPUPCALLTABLEEX WSPUPCALLTABLEEX;
39 typedef WSPUPCALLTABLEEX *LPWSPUPCALLTABLEEX;
40
41 #define SO_MAX_RDMA_SIZE 0x700D
42 #define SO_RDMA_THRESHOLD_SIZE 0x700E
43
44 #define WSAID_REGISTERMEMORY \
45 {0xC0B422F5, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
46
47 #define WSAID_DEREGISTERMEMORY \
48 {0xC0B422F6, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
49
50 #define WSAID_REGISTERRDMAMEMORY \
51 {0xC0B422F7, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
52
53 #define WSAID_DEREGISTERRDMAMEMORY \
54 {0xC0B422F8, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
55
56 #define WSAID_RDMAWRITE \
57 {0xC0B422F9, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
58
59 #define WSAID_RDMAREAD \
60 {0xC0B422FA, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
61
62 #define WSAID_MEMORYREGISTRATIONCACHECALLBACK \
63 {0xE5DA4AF8, 0xD824, 0x48CD, {0xA7, 0x99, 0x63, 0x37, 0xA9, 0x8E, 0xD2, 0xAF}}
64
65 typedef struct _WSABUFEX {
66 u_long len;
67 char FAR *buf;
68 HANDLE handle;
69 } WSABUFEX, FAR * LPWSABUFEX;
70
71 #if 0
72 typedef struct _WSPUPCALLTABLEEX {
73 LPWPUCLOSEEVENT lpWPUCloseEvent;
74 LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
75 LPWPUCREATEEVENT lpWPUCreateEvent;
76 LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
77 LPWPUFDISSET lpWPUFDIsSet;
78 LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
79 LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
80 LPWPUPOSTMESSAGE lpWPUPostMessage;
81 LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
82 LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
83 LPWPUQUEUEAPC lpWPUQueueApc;
84 LPWPURESETEVENT lpWPUResetEvent;
85 LPWPUSETEVENT lpWPUSetEvent;
86 LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
87 LPWPUCLOSETHREAD lpWPUCloseThread;
88 LPWPUCOMPLETEOVERLAPPEDREQUEST lpWPUCompleteOverlappedRequest;
89 } WSPUPCALLTABLEEX, FAR * LPWSPUPCALLTABLEEX;
90 #endif
91
92 int WSPAPI
93 WSPStartupEx(
94 IN WORD wVersionRequested,
95 OUT LPWSPDATA lpWSPData,
96 IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
97 IN LPWSPUPCALLTABLEEX lpUpcallTable,
98 OUT LPWSPPROC_TABLE lpProcTable);
99
100 typedef int WSPAPI
101 (*LPWSPSTARTUPEX)(
102 IN WORD wVersionRequested,
103 OUT LPWSPDATA lpWSPData,
104 IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
105 IN LPWSPUPCALLTABLEEX lpUpcallTable,
106 OUT LPWSPPROC_TABLE lpProcTable);
107
108 #define MEM_READ 1
109 #define MEM_WRITE 2
110 #define MEM_READWRITE 3
111
112 int WSPAPI
113 WSPDeregisterMemory(
114 IN SOCKET s,
115 IN HANDLE Handle,
116 OUT LPINT lpErrno);
117
118 typedef int WSPAPI
119 (*LPFN_WSPDEREGISTERMEMORY)(
120 IN SOCKET s,
121 IN HANDLE Handle,
122 OUT LPINT lpErrno);
123
124 int WSPAPI
125 WSPDeregisterRdmaMemory(
126 IN SOCKET s,
127 IN LPVOID lpRdmaBufferDescriptor,
128 IN DWORD dwDescriptorLength,
129 OUT LPINT lpErrno);
130
131 typedef int WSPAPI
132 (*LPFN_WSPDEREGISTERRDMAMEMORY)(
133 IN SOCKET s,
134 IN LPVOID lpRdmaBufferDescriptor,
135 IN DWORD dwDescriptorLength,
136 OUT LPINT lpErrno);
137
138 int WSPAPI
139 WSPMemoryRegistrationCacheCallback(
140 IN PVOID lpvAddress,
141 IN SIZE_T Size,
142 OUT LPINT lpErrno);
143
144 typedef int WSPAPI
145 (*LPFN_WSPMEMORYREGISTRATIONCACHECALLBACK)(
146 IN PVOID lpvAddress,
147 IN SIZE_T Size,
148 OUT LPINT lpErrno);
149
150 int WSPAPI
151 WSPRdmaRead(
152 IN SOCKET s,
153 IN LPWSABUFEX lpBuffers,
154 IN DWORD dwBufferCount,
155 IN LPVOID lpTargetBufferDescriptor,
156 IN DWORD dwTargetDescriptorLength,
157 IN DWORD dwTargetBufferOffset,
158 OUT LPDWORD lpdwNumberOfBytesRead,
159 IN DWORD dwFlags,
160 IN LPWSAOVERLAPPED lpOverlapped,
161 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
162 IN LPWSATHREADID lpThreadId,
163 OUT LPINT lpErrno);
164
165 typedef int WSPAPI
166 (*LPFN_WSPRDMAREAD)(
167 IN SOCKET s,
168 IN LPWSABUFEX lpBuffers,
169 IN DWORD dwBufferCount,
170 IN LPVOID lpTargetBufferDescriptor,
171 IN DWORD dwTargetDescriptorLength,
172 IN DWORD dwTargetBufferOffset,
173 OUT LPDWORD lpdwNumberOfBytesRead,
174 IN DWORD dwFlags,
175 IN LPWSAOVERLAPPED lpOverlapped,
176 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
177 IN LPWSATHREADID lpThreadId,
178 OUT LPINT lpErrno);
179
180 int WSPAPI
181 WSPRdmaWrite(
182 IN SOCKET s,
183 IN LPWSABUFEX lpBuffers,
184 IN DWORD dwBufferCount,
185 IN LPVOID lpTargetBufferDescriptor,
186 IN DWORD dwTargetDescriptorLength,
187 IN DWORD dwTargetBufferOffset,
188 OUT LPDWORD lpdwNumberOfBytesWritten,
189 IN DWORD dwFlags,
190 IN LPWSAOVERLAPPED lpOverlapped,
191 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
192 IN LPWSATHREADID lpThreadId,
193 OUT LPINT lpErrno);
194
195 typedef int WSPAPI
196 (*LPFN_WSPRDMAWRITE)(
197 IN SOCKET s,
198 IN LPWSABUFEX lpBuffers,
199 IN DWORD dwBufferCount,
200 IN LPVOID lpTargetBufferDescriptor,
201 IN DWORD dwTargetDescriptorLength,
202 IN DWORD dwTargetBufferOffset,
203 OUT LPDWORD lpdwNumberOfBytesWritten,
204 IN DWORD dwFlags,
205 IN LPWSAOVERLAPPED lpOverlapped,
206 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
207 IN LPWSATHREADID lpThreadId,
208 OUT LPINT lpErrno);
209
210 HANDLE WSPAPI
211 WSPRegisterMemory(
212 IN SOCKET s,
213 IN PVOID lpBuffer,
214 IN DWORD dwBufferLength,
215 IN DWORD dwFlags,
216 OUT LPINT lpErrno);
217
218 int WSPAPI
219 WSPRegisterRdmaMemory(
220 IN SOCKET s,
221 IN PVOID lpBuffer,
222 IN DWORD dwBufferLength,
223 IN DWORD dwFlags,
224 OUT LPVOID lpRdmaBufferDescriptor,
225 IN OUT LPDWORD lpdwDescriptorLength,
226 OUT LPINT lpErrno);
227
228 typedef int WSPAPI
229 (*LPFN_WSPREGISTERRDMAMEMORY)(
230 IN SOCKET s,
231 IN PVOID lpBuffer,
232 IN DWORD dwBufferLength,
233 IN DWORD dwFlags,
234 OUT LPVOID lpRdmaBufferDescriptor,
235 IN OUT LPDWORD lpdwDescriptorLength,
236 OUT LPINT lpErrno);
237
238 #ifdef __cplusplus
239 }
240 #endif
241
242 #endif /* __WS2SAN_H */