Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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