4 * WinSock Direct (SAN) support
6 * This file is part of the w32api package.
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
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.
27 #pragma GCC system_header
36 #define WSPAPI STDCALL
38 /* FIXME: Unknown definitions */
39 typedef PVOID LPWSPDATA
;
40 typedef PDWORD LPWSATHREADID
;
41 typedef PVOID LPWSPPROC_TABLE
;
42 typedef struct _WSPUPCALLTABLEEX WSPUPCALLTABLEEX
;
43 typedef WSPUPCALLTABLEEX
*LPWSPUPCALLTABLEEX
;
45 #define SO_MAX_RDMA_SIZE 0x700D
46 #define SO_RDMA_THRESHOLD_SIZE 0x700E
48 #define WSAID_REGISTERMEMORY \
49 {0xC0B422F5, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
51 #define WSAID_DEREGISTERMEMORY \
52 {0xC0B422F6, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
54 #define WSAID_REGISTERRDMAMEMORY \
55 {0xC0B422F7, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
57 #define WSAID_DEREGISTERRDMAMEMORY \
58 {0xC0B422F8, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
60 #define WSAID_RDMAWRITE \
61 {0xC0B422F9, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
63 #define WSAID_RDMAREAD \
64 {0xC0B422FA, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
66 #define WSAID_MEMORYREGISTRATIONCACHECALLBACK \
67 {0xE5DA4AF8, 0xD824, 0x48CD, {0xA7, 0x99, 0x63, 0x37, 0xA9, 0x8E, 0xD2, 0xAF}}
69 typedef struct _WSABUFEX
{
73 } WSABUFEX
, FAR
* LPWSABUFEX
;
76 typedef struct _WSPUPCALLTABLEEX
{
77 LPWPUCLOSEEVENT lpWPUCloseEvent
;
78 LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle
;
79 LPWPUCREATEEVENT lpWPUCreateEvent
;
80 LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle
;
81 LPWPUFDISSET lpWPUFDIsSet
;
82 LPWPUGETPROVIDERPATH lpWPUGetProviderPath
;
83 LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle
;
84 LPWPUPOSTMESSAGE lpWPUPostMessage
;
85 LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback
;
86 LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext
;
87 LPWPUQUEUEAPC lpWPUQueueApc
;
88 LPWPURESETEVENT lpWPUResetEvent
;
89 LPWPUSETEVENT lpWPUSetEvent
;
90 LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread
;
91 LPWPUCLOSETHREAD lpWPUCloseThread
;
92 LPWPUCOMPLETEOVERLAPPEDREQUEST lpWPUCompleteOverlappedRequest
;
93 } WSPUPCALLTABLEEX
, FAR
* LPWSPUPCALLTABLEEX
;
98 IN WORD wVersionRequested
,
99 OUT LPWSPDATA lpWSPData
,
100 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
101 IN LPWSPUPCALLTABLEEX lpUpcallTable
,
102 OUT LPWSPPROC_TABLE lpProcTable
);
106 IN WORD wVersionRequested
,
107 OUT LPWSPDATA lpWSPData
,
108 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
109 IN LPWSPUPCALLTABLEEX lpUpcallTable
,
110 OUT LPWSPPROC_TABLE lpProcTable
);
114 #define MEM_READWRITE 3
123 (*LPFN_WSPDEREGISTERMEMORY
)(
129 WSPDeregisterRdmaMemory(
131 IN LPVOID lpRdmaBufferDescriptor
,
132 IN DWORD dwDescriptorLength
,
136 (*LPFN_WSPDEREGISTERRDMAMEMORY
)(
138 IN LPVOID lpRdmaBufferDescriptor
,
139 IN DWORD dwDescriptorLength
,
143 WSPMemoryRegistrationCacheCallback(
149 (*LPFN_WSPMEMORYREGISTRATIONCACHECALLBACK
)(
157 IN LPWSABUFEX lpBuffers
,
158 IN DWORD dwBufferCount
,
159 IN LPVOID lpTargetBufferDescriptor
,
160 IN DWORD dwTargetDescriptorLength
,
161 IN DWORD dwTargetBufferOffset
,
162 OUT LPDWORD lpdwNumberOfBytesRead
,
164 IN LPWSAOVERLAPPED lpOverlapped
,
165 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
166 IN LPWSATHREADID lpThreadId
,
172 IN LPWSABUFEX lpBuffers
,
173 IN DWORD dwBufferCount
,
174 IN LPVOID lpTargetBufferDescriptor
,
175 IN DWORD dwTargetDescriptorLength
,
176 IN DWORD dwTargetBufferOffset
,
177 OUT LPDWORD lpdwNumberOfBytesRead
,
179 IN LPWSAOVERLAPPED lpOverlapped
,
180 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
181 IN LPWSATHREADID lpThreadId
,
187 IN LPWSABUFEX lpBuffers
,
188 IN DWORD dwBufferCount
,
189 IN LPVOID lpTargetBufferDescriptor
,
190 IN DWORD dwTargetDescriptorLength
,
191 IN DWORD dwTargetBufferOffset
,
192 OUT LPDWORD lpdwNumberOfBytesWritten
,
194 IN LPWSAOVERLAPPED lpOverlapped
,
195 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
196 IN LPWSATHREADID lpThreadId
,
200 (*LPFN_WSPRDMAWRITE
)(
202 IN LPWSABUFEX lpBuffers
,
203 IN DWORD dwBufferCount
,
204 IN LPVOID lpTargetBufferDescriptor
,
205 IN DWORD dwTargetDescriptorLength
,
206 IN DWORD dwTargetBufferOffset
,
207 OUT LPDWORD lpdwNumberOfBytesWritten
,
209 IN LPWSAOVERLAPPED lpOverlapped
,
210 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
211 IN LPWSATHREADID lpThreadId
,
218 IN DWORD dwBufferLength
,
223 WSPRegisterRdmaMemory(
226 IN DWORD dwBufferLength
,
228 OUT LPVOID lpRdmaBufferDescriptor
,
229 IN OUT LPDWORD lpdwDescriptorLength
,
233 (*LPFN_WSPREGISTERRDMAMEMORY
)(
236 IN DWORD dwBufferLength
,
238 OUT LPVOID lpRdmaBufferDescriptor
,
239 IN OUT LPDWORD lpdwDescriptorLength
,
246 #endif /* __WS2SAN_H */