Embed:
(wiki syntax)
Show/hide line numbers
ws2san.h
00001 /* 00002 * ws2san.h 00003 * 00004 * WinSock Direct (SAN) support 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 00023 #ifndef __WS2SAN_H 00024 #define __WS2SAN_H 00025 00026 #if __GNUC__ >=3 00027 #pragma GCC system_header 00028 #endif 00029 00030 #ifdef __cplusplus 00031 extern "C" { 00032 #endif 00033 00034 #include <winsock2.h> 00035 #include "ntddk.h" 00036 00037 00038 #define WSPAPI STDCALL 00039 00040 /* FIXME: Unknown definitions */ 00041 typedef PVOID LPWSPDATA; 00042 typedef PDWORD LPWSATHREADID; 00043 typedef PVOID LPWSPPROC_TABLE; 00044 typedef struct _WSPUPCALLTABLEEX WSPUPCALLTABLEEX; 00045 typedef WSPUPCALLTABLEEX *LPWSPUPCALLTABLEEX; 00046 00047 #define SO_MAX_RDMA_SIZE 0x700D 00048 #define SO_RDMA_THRESHOLD_SIZE 0x700E 00049 00050 #define WSAID_REGISTERMEMORY \ 00051 {0xC0B422F5, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}} 00052 00053 #define WSAID_DEREGISTERMEMORY \ 00054 {0xC0B422F6, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}} 00055 00056 #define WSAID_REGISTERRDMAMEMORY \ 00057 {0xC0B422F7, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}} 00058 00059 #define WSAID_DEREGISTERRDMAMEMORY \ 00060 {0xC0B422F8, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}} 00061 00062 #define WSAID_RDMAWRITE \ 00063 {0xC0B422F9, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}} 00064 00065 #define WSAID_RDMAREAD \ 00066 {0xC0B422FA, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}} 00067 00068 #define WSAID_MEMORYREGISTRATIONCACHECALLBACK \ 00069 {0xE5DA4AF8, 0xD824, 0x48CD, {0xA7, 0x99, 0x63, 0x37, 0xA9, 0x8E, 0xD2, 0xAF}} 00070 00071 typedef struct _WSABUFEX { 00072 u_long len; 00073 char FAR *buf; 00074 HANDLE handle; 00075 } WSABUFEX, FAR * LPWSABUFEX; 00076 00077 #if 0 00078 typedef struct _WSPUPCALLTABLEEX { 00079 LPWPUCLOSEEVENT lpWPUCloseEvent; 00080 LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle; 00081 LPWPUCREATEEVENT lpWPUCreateEvent; 00082 LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle; 00083 LPWPUFDISSET lpWPUFDIsSet; 00084 LPWPUGETPROVIDERPATH lpWPUGetProviderPath; 00085 LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle; 00086 LPWPUPOSTMESSAGE lpWPUPostMessage; 00087 LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback; 00088 LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext; 00089 LPWPUQUEUEAPC lpWPUQueueApc; 00090 LPWPURESETEVENT lpWPUResetEvent; 00091 LPWPUSETEVENT lpWPUSetEvent; 00092 LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread; 00093 LPWPUCLOSETHREAD lpWPUCloseThread; 00094 LPWPUCOMPLETEOVERLAPPEDREQUEST lpWPUCompleteOverlappedRequest; 00095 } WSPUPCALLTABLEEX, FAR * LPWSPUPCALLTABLEEX; 00096 #endif 00097 00098 int WSPAPI 00099 WSPStartupEx( 00100 /*IN*/ WORD wVersionRequested, 00101 /*OUT*/ LPWSPDATA lpWSPData, 00102 /*IN*/ LPWSAPROTOCOL_INFOW lpProtocolInfo, 00103 /*IN*/ LPWSPUPCALLTABLEEX lpUpcallTable, 00104 /*OUT*/ LPWSPPROC_TABLE lpProcTable); 00105 00106 typedef int WSPAPI 00107 (*LPWSPSTARTUPEX)( 00108 /*IN*/ WORD wVersionRequested, 00109 /*OUT*/ LPWSPDATA lpWSPData, 00110 /*IN*/ LPWSAPROTOCOL_INFOW lpProtocolInfo, 00111 /*IN*/ LPWSPUPCALLTABLEEX lpUpcallTable, 00112 /*OUT*/ LPWSPPROC_TABLE lpProcTable); 00113 00114 #define MEM_READ 1 00115 #define MEM_WRITE 2 00116 #define MEM_READWRITE 3 00117 00118 int WSPAPI 00119 WSPDeregisterMemory( 00120 /*IN*/ SOCKET s, 00121 /*IN*/ HANDLE Handle, 00122 /*OUT*/ LPINT lpErrno); 00123 00124 typedef int WSPAPI 00125 (*LPFN_WSPDEREGISTERMEMORY)( 00126 /*IN*/ SOCKET s, 00127 /*IN*/ HANDLE Handle, 00128 /*OUT*/ LPINT lpErrno); 00129 00130 int WSPAPI 00131 WSPDeregisterRdmaMemory( 00132 /*IN*/ SOCKET s, 00133 /*IN*/ LPVOID lpRdmaBufferDescriptor, 00134 /*IN*/ DWORD dwDescriptorLength, 00135 /*OUT*/ LPINT lpErrno); 00136 00137 typedef int WSPAPI 00138 (*LPFN_WSPDEREGISTERRDMAMEMORY)( 00139 /*IN*/ SOCKET s, 00140 /*IN*/ LPVOID lpRdmaBufferDescriptor, 00141 /*IN*/ DWORD dwDescriptorLength, 00142 /*OUT*/ LPINT lpErrno); 00143 00144 int WSPAPI 00145 WSPMemoryRegistrationCacheCallback( 00146 /*IN*/ PVOID lpvAddress, 00147 /*IN*/ SIZE_T Size, 00148 /*OUT*/ LPINT lpErrno); 00149 00150 typedef int WSPAPI 00151 (*LPFN_WSPMEMORYREGISTRATIONCACHECALLBACK)( 00152 /*IN*/ PVOID lpvAddress, 00153 /*IN*/ SIZE_T Size, 00154 /*OUT*/ LPINT lpErrno); 00155 00156 int WSPAPI 00157 WSPRdmaRead( 00158 /*IN*/ SOCKET s, 00159 /*IN*/ LPWSABUFEX lpBuffers, 00160 /*IN*/ DWORD dwBufferCount, 00161 /*IN*/ LPVOID lpTargetBufferDescriptor, 00162 /*IN*/ DWORD dwTargetDescriptorLength, 00163 /*IN*/ DWORD dwTargetBufferOffset, 00164 /*OUT*/ LPDWORD lpdwNumberOfBytesRead, 00165 /*IN*/ DWORD dwFlags, 00166 /*IN*/ LPWSAOVERLAPPED lpOverlapped, 00167 /*IN*/ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, 00168 /*IN*/ LPWSATHREADID lpThreadId, 00169 /*OUT*/ LPINT lpErrno); 00170 00171 typedef int WSPAPI 00172 (*LPFN_WSPRDMAREAD)( 00173 /*IN*/ SOCKET s, 00174 /*IN*/ LPWSABUFEX lpBuffers, 00175 /*IN*/ DWORD dwBufferCount, 00176 /*IN*/ LPVOID lpTargetBufferDescriptor, 00177 /*IN*/ DWORD dwTargetDescriptorLength, 00178 /*IN*/ DWORD dwTargetBufferOffset, 00179 /*OUT*/ LPDWORD lpdwNumberOfBytesRead, 00180 /*IN*/ DWORD dwFlags, 00181 /*IN*/ LPWSAOVERLAPPED lpOverlapped, 00182 /*IN*/ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, 00183 /*IN*/ LPWSATHREADID lpThreadId, 00184 /*OUT*/ LPINT lpErrno); 00185 00186 int WSPAPI 00187 WSPRdmaWrite( 00188 /*IN*/ SOCKET s, 00189 /*IN*/ LPWSABUFEX lpBuffers, 00190 /*IN*/ DWORD dwBufferCount, 00191 /*IN*/ LPVOID lpTargetBufferDescriptor, 00192 /*IN*/ DWORD dwTargetDescriptorLength, 00193 /*IN*/ DWORD dwTargetBufferOffset, 00194 /*OUT*/ LPDWORD lpdwNumberOfBytesWritten, 00195 /*IN*/ DWORD dwFlags, 00196 /*IN*/ LPWSAOVERLAPPED lpOverlapped, 00197 /*IN*/ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, 00198 /*IN*/ LPWSATHREADID lpThreadId, 00199 /*OUT*/ LPINT lpErrno); 00200 00201 typedef int WSPAPI 00202 (*LPFN_WSPRDMAWRITE)( 00203 /*IN*/ SOCKET s, 00204 /*IN*/ LPWSABUFEX lpBuffers, 00205 /*IN*/ DWORD dwBufferCount, 00206 /*IN*/ LPVOID lpTargetBufferDescriptor, 00207 /*IN*/ DWORD dwTargetDescriptorLength, 00208 /*IN*/ DWORD dwTargetBufferOffset, 00209 /*OUT*/ LPDWORD lpdwNumberOfBytesWritten, 00210 /*IN*/ DWORD dwFlags, 00211 /*IN*/ LPWSAOVERLAPPED lpOverlapped, 00212 /*IN*/ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, 00213 /*IN*/ LPWSATHREADID lpThreadId, 00214 /*OUT*/ LPINT lpErrno); 00215 00216 HANDLE WSPAPI 00217 WSPRegisterMemory( 00218 /*IN*/ SOCKET s, 00219 /*IN*/ PVOID lpBuffer, 00220 /*IN*/ DWORD dwBufferLength, 00221 /*IN*/ DWORD dwFlags, 00222 /*OUT*/ LPINT lpErrno); 00223 00224 int WSPAPI 00225 WSPRegisterRdmaMemory( 00226 /*IN*/ SOCKET s, 00227 /*IN*/ PVOID lpBuffer, 00228 /*IN*/ DWORD dwBufferLength, 00229 /*IN*/ DWORD dwFlags, 00230 /*OUT*/ LPVOID lpRdmaBufferDescriptor, 00231 /*IN OUT*/ LPDWORD lpdwDescriptorLength, 00232 /*OUT*/ LPINT lpErrno); 00233 00234 typedef int WSPAPI 00235 (*LPFN_WSPREGISTERRDMAMEMORY)( 00236 /*IN*/ SOCKET s, 00237 /*IN*/ PVOID lpBuffer, 00238 /*IN*/ DWORD dwBufferLength, 00239 /*IN*/ DWORD dwFlags, 00240 /*OUT*/ LPVOID lpRdmaBufferDescriptor, 00241 /*IN OUT*/ LPDWORD lpdwDescriptorLength, 00242 /*OUT*/ LPINT lpErrno); 00243 00244 #ifdef __cplusplus 00245 } 00246 #endif 00247 00248 #endif /* __WS2SAN_H */
Generated on Tue Jul 12 2022 19:59:55 by
1.7.2