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
40 #define WSPAPI STDCALL
42 /* FIXME: Unknown definitions */
43 typedef PVOID LPWSPDATA
;
44 typedef PDWORD LPWSATHREADID
;
45 typedef PVOID LPWSPPROC_TABLE
;
46 typedef struct _WSPUPCALLTABLEEX WSPUPCALLTABLEEX
;
47 typedef WSPUPCALLTABLEEX
*LPWSPUPCALLTABLEEX
;
49 #define SO_MAX_RDMA_SIZE 0x700D
50 #define SO_RDMA_THRESHOLD_SIZE 0x700E
52 #define WSAID_REGISTERMEMORY \
53 {0xC0B422F5, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
55 #define WSAID_DEREGISTERMEMORY \
56 {0xC0B422F6, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
58 #define WSAID_REGISTERRDMAMEMORY \
59 {0xC0B422F7, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
61 #define WSAID_DEREGISTERRDMAMEMORY \
62 {0xC0B422F8, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
64 #define WSAID_RDMAWRITE \
65 {0xC0B422F9, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
67 #define WSAID_RDMAREAD \
68 {0xC0B422FA, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
70 #define WSAID_MEMORYREGISTRATIONCACHECALLBACK \
71 {0xE5DA4AF8, 0xD824, 0x48CD, {0xA7, 0x99, 0x63, 0x37, 0xA9, 0x8E, 0xD2, 0xAF}}
73 typedef struct _WSABUFEX
{
77 } WSABUFEX
, FAR
* LPWSABUFEX
;
80 typedef struct _WSPUPCALLTABLEEX
{
81 LPWPUCLOSEEVENT lpWPUCloseEvent
;
82 LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle
;
83 LPWPUCREATEEVENT lpWPUCreateEvent
;
84 LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle
;
85 LPWPUFDISSET lpWPUFDIsSet
;
86 LPWPUGETPROVIDERPATH lpWPUGetProviderPath
;
87 LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle
;
88 LPWPUPOSTMESSAGE lpWPUPostMessage
;
89 LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback
;
90 LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext
;
91 LPWPUQUEUEAPC lpWPUQueueApc
;
92 LPWPURESETEVENT lpWPUResetEvent
;
93 LPWPUSETEVENT lpWPUSetEvent
;
94 LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread
;
95 LPWPUCLOSETHREAD lpWPUCloseThread
;
96 LPWPUCOMPLETEOVERLAPPEDREQUEST lpWPUCompleteOverlappedRequest
;
97 } WSPUPCALLTABLEEX
, FAR
* LPWSPUPCALLTABLEEX
;
102 IN WORD wVersionRequested
,
103 OUT LPWSPDATA lpWSPData
,
104 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
105 IN LPWSPUPCALLTABLEEX lpUpcallTable
,
106 OUT LPWSPPROC_TABLE lpProcTable
);
110 IN WORD wVersionRequested
,
111 OUT LPWSPDATA lpWSPData
,
112 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
113 IN LPWSPUPCALLTABLEEX lpUpcallTable
,
114 OUT LPWSPPROC_TABLE lpProcTable
);
118 #define MEM_READWRITE 3
127 (*LPFN_WSPDEREGISTERMEMORY
)(
133 WSPDeregisterRdmaMemory(
135 IN LPVOID lpRdmaBufferDescriptor
,
136 IN DWORD dwDescriptorLength
,
140 (*LPFN_WSPDEREGISTERRDMAMEMORY
)(
142 IN LPVOID lpRdmaBufferDescriptor
,
143 IN DWORD dwDescriptorLength
,
147 WSPMemoryRegistrationCacheCallback(
153 (*LPFN_WSPMEMORYREGISTRATIONCACHECALLBACK
)(
161 IN LPWSABUFEX lpBuffers
,
162 IN DWORD dwBufferCount
,
163 IN LPVOID lpTargetBufferDescriptor
,
164 IN DWORD dwTargetDescriptorLength
,
165 IN DWORD dwTargetBufferOffset
,
166 OUT LPDWORD lpdwNumberOfBytesRead
,
168 IN LPWSAOVERLAPPED lpOverlapped
,
169 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
170 IN LPWSATHREADID lpThreadId
,
176 IN LPWSABUFEX lpBuffers
,
177 IN DWORD dwBufferCount
,
178 IN LPVOID lpTargetBufferDescriptor
,
179 IN DWORD dwTargetDescriptorLength
,
180 IN DWORD dwTargetBufferOffset
,
181 OUT LPDWORD lpdwNumberOfBytesRead
,
183 IN LPWSAOVERLAPPED lpOverlapped
,
184 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
185 IN LPWSATHREADID lpThreadId
,
191 IN LPWSABUFEX lpBuffers
,
192 IN DWORD dwBufferCount
,
193 IN LPVOID lpTargetBufferDescriptor
,
194 IN DWORD dwTargetDescriptorLength
,
195 IN DWORD dwTargetBufferOffset
,
196 OUT LPDWORD lpdwNumberOfBytesWritten
,
198 IN LPWSAOVERLAPPED lpOverlapped
,
199 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
200 IN LPWSATHREADID lpThreadId
,
204 (*LPFN_WSPRDMAWRITE
)(
206 IN LPWSABUFEX lpBuffers
,
207 IN DWORD dwBufferCount
,
208 IN LPVOID lpTargetBufferDescriptor
,
209 IN DWORD dwTargetDescriptorLength
,
210 IN DWORD dwTargetBufferOffset
,
211 OUT LPDWORD lpdwNumberOfBytesWritten
,
213 IN LPWSAOVERLAPPED lpOverlapped
,
214 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
,
215 IN LPWSATHREADID lpThreadId
,
222 IN DWORD dwBufferLength
,
227 WSPRegisterRdmaMemory(
230 IN DWORD dwBufferLength
,
232 OUT LPVOID lpRdmaBufferDescriptor
,
233 IN OUT LPDWORD lpdwDescriptorLength
,
237 (*LPFN_WSPREGISTERRDMAMEMORY
)(
240 IN DWORD dwBufferLength
,
242 OUT LPVOID lpRdmaBufferDescriptor
,
243 IN OUT LPDWORD lpdwDescriptorLength
,
252 #endif /* __WS2SAN_H */