source: Daodan/MinGW/include/ddk/ws2san.h@ 1098

Last change on this file since 1098 was 1046, checked in by alloc, 8 years ago

Daodan: Added Windows MinGW and build batch file

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