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.
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
;
41 #define SO_MAX_RDMA_SIZE 0x700D
42 #define SO_RDMA_THRESHOLD_SIZE 0x700E
44 #define WSAID_REGISTERMEMORY \
45 {0xC0B422F5, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
47 #define WSAID_DEREGISTERMEMORY \
48 {0xC0B422F6, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
50 #define WSAID_REGISTERRDMAMEMORY \
51 {0xC0B422F7, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
53 #define WSAID_DEREGISTERRDMAMEMORY \
54 {0xC0B422F8, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
56 #define WSAID_RDMAWRITE \
57 {0xC0B422F9, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
59 #define WSAID_RDMAREAD \
60 {0xC0B422FA, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
62 #define WSAID_MEMORYREGISTRATIONCACHECALLBACK \
63 {0xE5DA4AF8, 0xD824, 0x48CD, {0xA7, 0x99, 0x63, 0x37, 0xA9, 0x8E, 0xD2, 0xAF}}
65 typedef struct _WSABUFEX
{
69 } WSABUFEX
, FAR
* LPWSABUFEX
;
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
;
94 IN WORD wVersionRequested
,
95 OUT LPWSPDATA lpWSPData
,
96 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
97 IN LPWSPUPCALLTABLEEX lpUpcallTable
,
98 OUT LPWSPPROC_TABLE lpProcTable
);
102 IN WORD wVersionRequested
,
103 OUT LPWSPDATA lpWSPData
,
104 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
105 IN LPWSPUPCALLTABLEEX lpUpcallTable
,
106 OUT LPWSPPROC_TABLE lpProcTable
);
110 #define MEM_READWRITE 3
119 (*LPFN_WSPDEREGISTERMEMORY
)(
125 WSPDeregisterRdmaMemory(
127 IN LPVOID lpRdmaBufferDescriptor
,
128 IN DWORD dwDescriptorLength
,
132 (*LPFN_WSPDEREGISTERRDMAMEMORY
)(
134 IN LPVOID lpRdmaBufferDescriptor
,
135 IN DWORD dwDescriptorLength
,
139 WSPMemoryRegistrationCacheCallback(
145 (*LPFN_WSPMEMORYREGISTRATIONCACHECALLBACK
)(
153 IN LPWSABUFEX lpBuffers
,
154 IN DWORD dwBufferCount
,
155 IN LPVOID lpTargetBufferDescriptor
,
156 IN DWORD dwTargetDescriptorLength
,
157 IN DWORD dwTargetBufferOffset
,
158 OUT LPDWORD lpdwNumberOfBytesRead
,
160 IN LPWSAOVERLAPPED lpOverlapped
,
161 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
162 IN LPWSATHREADID lpThreadId
,
168 IN LPWSABUFEX lpBuffers
,
169 IN DWORD dwBufferCount
,
170 IN LPVOID lpTargetBufferDescriptor
,
171 IN DWORD dwTargetDescriptorLength
,
172 IN DWORD dwTargetBufferOffset
,
173 OUT LPDWORD lpdwNumberOfBytesRead
,
175 IN LPWSAOVERLAPPED lpOverlapped
,
176 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
177 IN LPWSATHREADID lpThreadId
,
183 IN LPWSABUFEX lpBuffers
,
184 IN DWORD dwBufferCount
,
185 IN LPVOID lpTargetBufferDescriptor
,
186 IN DWORD dwTargetDescriptorLength
,
187 IN DWORD dwTargetBufferOffset
,
188 OUT LPDWORD lpdwNumberOfBytesWritten
,
190 IN LPWSAOVERLAPPED lpOverlapped
,
191 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
192 IN LPWSATHREADID lpThreadId
,
196 (*LPFN_WSPRDMAWRITE
)(
198 IN LPWSABUFEX lpBuffers
,
199 IN DWORD dwBufferCount
,
200 IN LPVOID lpTargetBufferDescriptor
,
201 IN DWORD dwTargetDescriptorLength
,
202 IN DWORD dwTargetBufferOffset
,
203 OUT LPDWORD lpdwNumberOfBytesWritten
,
205 IN LPWSAOVERLAPPED lpOverlapped
,
206 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
207 IN LPWSATHREADID lpThreadId
,
214 IN DWORD dwBufferLength
,
219 WSPRegisterRdmaMemory(
222 IN DWORD dwBufferLength
,
224 OUT LPVOID lpRdmaBufferDescriptor
,
225 IN OUT LPDWORD lpdwDescriptorLength
,
229 (*LPFN_WSPREGISTERRDMAMEMORY
)(
232 IN DWORD dwBufferLength
,
234 OUT LPVOID lpRdmaBufferDescriptor
,
235 IN OUT LPDWORD lpdwDescriptorLength
,
242 #endif /* __WS2SAN_H */