source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/ddk/ws2san.h@ 1181

Last change on this file since 1181 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 6.2 KB
Line 
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#pragma once
24
25#define _WS2SAN_H_
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
31#define SO_MAX_RDMA_SIZE 0x700D
32#define SO_RDMA_THRESHOLD_SIZE 0x700E
33
34#define MEM_READ 1
35#define MEM_WRITE 2
36#define MEM_READWRITE 3
37
38#define WSAID_REGISTERMEMORY \
39 {0xC0B422F5, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
40
41#define WSAID_DEREGISTERMEMORY \
42 {0xC0B422F6, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
43
44#define WSAID_REGISTERRDMAMEMORY \
45 {0xC0B422F7, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
46
47#define WSAID_DEREGISTERRDMAMEMORY \
48 {0xC0B422F8, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
49
50#define WSAID_RDMAWRITE \
51 {0xC0B422F9, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
52
53#define WSAID_RDMAREAD \
54 {0xC0B422FA, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
55
56#if(_WIN32_WINNT >= 0x0501)
57#define WSAID_MEMORYREGISTRATIONCACHECALLBACK \
58 {0xE5DA4AF8, 0xD824, 0x48CD, {0xA7, 0x99, 0x63, 0x37, 0xA9, 0x8E, 0xD2, 0xAF}}
59#endif
60
61typedef struct _WSPUPCALLTABLEEX {
62 LPWPUCLOSEEVENT lpWPUCloseEvent;
63 LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
64 LPWPUCREATEEVENT lpWPUCreateEvent;
65 LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
66 LPWPUFDISSET lpWPUFDIsSet;
67 LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
68 LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
69 LPWPUPOSTMESSAGE lpWPUPostMessage;
70 LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
71 LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
72 LPWPUQUEUEAPC lpWPUQueueApc;
73 LPWPURESETEVENT lpWPUResetEvent;
74 LPWPUSETEVENT lpWPUSetEvent;
75 LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
76 LPWPUCLOSETHREAD lpWPUCloseThread;
77 LPWPUCOMPLETEOVERLAPPEDREQUEST lpWPUCompleteOverlappedRequest;
78} WSPUPCALLTABLEEX, FAR *LPWSPUPCALLTABLEEX;
79
80typedef struct _WSABUFEX {
81 u_long len;
82 char FAR *buf;
83 HANDLE handle;
84} WSABUFEX, FAR * LPWSABUFEX;
85
86typedef int
87(WSPAPI *LPWSPSTARTUPEX)(
88 IN WORD wVersionRequested,
89 OUT LPWSPDATA lpWSPData,
90 IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
91 IN LPWSPUPCALLTABLEEX lpUpcallTable,
92 OUT LPWSPPROC_TABLE lpProcTable);
93
94typedef HANDLE
95(WSPAPI *LPFN_WSPREGISTERMEMORY)(
96 IN SOCKET s,
97 IN PVOID lpBuffer,
98 IN DWORD dwBufferLength,
99 IN DWORD dwFlags,
100 OUT LPINT lpErrno);
101
102typedef int
103(WSPAPI *LPFN_WSPDEREGISTERMEMORY)(
104 IN SOCKET s,
105 IN HANDLE Handle,
106 OUT LPINT lpErrno);
107
108typedef int
109(WSPAPI *LPFN_WSPREGISTERRDMAMEMORY)(
110 IN SOCKET s,
111 IN PVOID lpBuffer,
112 IN DWORD dwBufferLength,
113 IN DWORD dwFlags,
114 OUT LPVOID lpRdmaBufferDescriptor,
115 IN OUT LPDWORD lpdwDescriptorLength,
116 OUT LPINT lpErrno);
117
118typedef int
119(WSPAPI *LPFN_WSPDEREGISTERRDMAMEMORY)(
120 IN SOCKET s,
121 IN LPVOID lpRdmaBufferDescriptor,
122 IN DWORD dwDescriptorLength,
123 OUT LPINT lpErrno);
124
125typedef int
126(WSPAPI *LPFN_WSPRDMAWRITE)(
127 IN SOCKET s,
128 IN LPWSABUFEX lpBuffers,
129 IN DWORD dwBufferCount,
130 IN LPVOID lpTargetBufferDescriptor,
131 IN DWORD dwTargetDescriptorLength,
132 IN DWORD dwTargetBufferOffset,
133 OUT LPDWORD lpdwNumberOfBytesWritten,
134 IN DWORD dwFlags,
135 IN LPWSAOVERLAPPED lpOverlapped OPTIONAL,
136 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
137 IN LPWSATHREADID lpThreadId,
138 OUT LPINT lpErrno);
139
140typedef int
141(WSPAPI *LPFN_WSPRDMAREAD)(
142 IN SOCKET s,
143 IN LPWSABUFEX lpBuffers,
144 IN DWORD dwBufferCount,
145 IN LPVOID lpTargetBufferDescriptor,
146 IN DWORD dwTargetDescriptorLength,
147 IN DWORD dwTargetBufferOffset,
148 OUT LPDWORD lpdwNumberOfBytesRead,
149 IN DWORD dwFlags,
150 IN LPWSAOVERLAPPED lpOverlapped OPTIONAL,
151 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
152 IN LPWSATHREADID lpThreadId,
153 OUT LPINT lpErrno);
154
155#if(_WIN32_WINNT >= 0x0501)
156typedef int
157(WSPAPI *LPFN_WSPMEMORYREGISTRATIONCACHECALLBACK)(
158 IN PVOID lpvAddress,
159 IN SIZE_T Size,
160 OUT LPINT lpErrno);
161#endif
162
163int
164WSPAPI
165WSPStartupEx(
166 IN WORD wVersionRequested,
167 OUT LPWSPDATA lpWSPData,
168 IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
169 IN LPWSPUPCALLTABLEEX lpUpcallTable,
170 OUT LPWSPPROC_TABLE lpProcTable);
171
172HANDLE
173WSPAPI
174WSPRegisterMemory(
175 IN SOCKET s,
176 IN PVOID lpBuffer,
177 IN DWORD dwBufferLength,
178 IN DWORD dwFlags,
179 OUT LPINT lpErrno);
180
181int
182WSPAPI
183WSPDeregisterMemory(
184 IN SOCKET s,
185 IN HANDLE Handle,
186 OUT LPINT lpErrno);
187
188int
189WSPAPI
190WSPRegisterRdmaMemory(
191 IN SOCKET s,
192 IN PVOID lpBuffer,
193 IN DWORD dwBufferLength,
194 IN DWORD dwFlags,
195 OUT LPVOID lpRdmaBufferDescriptor,
196 IN OUT LPDWORD lpdwDescriptorLength,
197 OUT LPINT lpErrno);
198
199int
200WSPAPI
201WSPDeregisterRdmaMemory(
202 IN SOCKET s,
203 IN LPVOID lpRdmaBufferDescriptor,
204 IN DWORD dwDescriptorLength,
205 OUT LPINT lpErrno);
206
207int
208WSPAPI
209WSPRdmaWrite(
210 IN SOCKET s,
211 IN LPWSABUFEX lpBuffers,
212 IN DWORD dwBufferCount,
213 IN LPVOID lpTargetBufferDescriptor,
214 IN DWORD dwTargetDescriptorLength,
215 IN DWORD dwTargetBufferOffset,
216 OUT LPDWORD lpdwNumberOfBytesWritten,
217 IN DWORD dwFlags,
218 IN LPWSAOVERLAPPED lpOverlapped OPTIONAL,
219 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
220 IN LPWSATHREADID lpThreadId,
221 OUT LPINT lpErrno);
222
223int
224WSPAPI
225WSPRdmaRead(
226 IN SOCKET s,
227 IN LPWSABUFEX lpBuffers,
228 IN DWORD dwBufferCount,
229 IN LPVOID lpTargetBufferDescriptor,
230 IN DWORD dwTargetDescriptorLength,
231 IN DWORD dwTargetBufferOffset,
232 OUT LPDWORD lpdwNumberOfBytesRead,
233 IN DWORD dwFlags,
234 IN LPWSAOVERLAPPED lpOverlapped OPTIONAL,
235 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
236 IN LPWSATHREADID lpThreadId,
237 OUT LPINT lpErrno);
238
239#if(_WIN32_WINNT >= 0x0501)
240int
241WSPAPI
242WSPMemoryRegistrationCacheCallback(
243 IN PVOID lpvAddress,
244 IN SIZE_T Size,
245 OUT LPINT lpErrno);
246#endif
247
248#ifdef __cplusplus
249}
250#endif
Note: See TracBrowser for help on using the repository browser.