*
*/
-#ifndef __WS2SAN_H
-#define __WS2SAN_H
-
-#if __GNUC__ >=3
-#pragma GCC system_header
-#endif
+#pragma once
+/* FIXME
#include <winsock2.h>
+*/
#ifdef __cplusplus
extern "C" {
#endif
-#define WSPAPI STDCALL
-
-/* FIXME: Unknown definitions */
-typedef PVOID LPWSPDATA;
-typedef PDWORD LPWSATHREADID;
-typedef PVOID LPWSPPROC_TABLE;
-typedef struct _WSPUPCALLTABLEEX WSPUPCALLTABLEEX;
-typedef WSPUPCALLTABLEEX *LPWSPUPCALLTABLEEX;
-
#define SO_MAX_RDMA_SIZE 0x700D
#define SO_RDMA_THRESHOLD_SIZE 0x700E
+#define MEM_READ 1
+#define MEM_WRITE 2
+#define MEM_READWRITE 3
+
#define WSAID_REGISTERMEMORY \
{0xC0B422F5, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
#define WSAID_RDMAREAD \
{0xC0B422FA, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
+#if(_WIN32_WINNT >= 0x0501)
#define WSAID_MEMORYREGISTRATIONCACHECALLBACK \
{0xE5DA4AF8, 0xD824, 0x48CD, {0xA7, 0x99, 0x63, 0x37, 0xA9, 0x8E, 0xD2, 0xAF}}
+#endif
+
+typedef struct _WSPUPCALLTABLEEX {
+ LPWPUCLOSEEVENT lpWPUCloseEvent;
+ LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
+ LPWPUCREATEEVENT lpWPUCreateEvent;
+ LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
+ LPWPUFDISSET lpWPUFDIsSet;
+ LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
+ LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
+ LPWPUPOSTMESSAGE lpWPUPostMessage;
+ LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
+ LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
+ LPWPUQUEUEAPC lpWPUQueueApc;
+ LPWPURESETEVENT lpWPUResetEvent;
+ LPWPUSETEVENT lpWPUSetEvent;
+ LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
+ LPWPUCLOSETHREAD lpWPUCloseThread;
+ LPWPUCOMPLETEOVERLAPPEDREQUEST lpWPUCompleteOverlappedRequest;
+} WSPUPCALLTABLEEX, FAR *LPWSPUPCALLTABLEEX;
typedef struct _WSABUFEX {
- u_long len;
- char FAR *buf;
- HANDLE handle;
+ u_long len;
+ char FAR *buf;
+ HANDLE handle;
} WSABUFEX, FAR * LPWSABUFEX;
-#if 0
-typedef struct _WSPUPCALLTABLEEX {
- LPWPUCLOSEEVENT lpWPUCloseEvent;
- LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
- LPWPUCREATEEVENT lpWPUCreateEvent;
- LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
- LPWPUFDISSET lpWPUFDIsSet;
- LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
- LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
- LPWPUPOSTMESSAGE lpWPUPostMessage;
- LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
- LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
- LPWPUQUEUEAPC lpWPUQueueApc;
- LPWPURESETEVENT lpWPUResetEvent;
- LPWPUSETEVENT lpWPUSetEvent;
- LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
- LPWPUCLOSETHREAD lpWPUCloseThread;
- LPWPUCOMPLETEOVERLAPPEDREQUEST lpWPUCompleteOverlappedRequest;
-} WSPUPCALLTABLEEX, FAR * LPWSPUPCALLTABLEEX;
+typedef int
+(WSPAPI *LPWSPSTARTUPEX)(
+ IN WORD wVersionRequested,
+ OUT LPWSPDATA lpWSPData,
+ IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ IN LPWSPUPCALLTABLEEX lpUpcallTable,
+ OUT LPWSPPROC_TABLE lpProcTable);
+
+typedef HANDLE
+(WSPAPI *LPFN_WSPREGISTERMEMORY)(
+ IN SOCKET s,
+ IN PVOID lpBuffer,
+ IN DWORD dwBufferLength,
+ IN DWORD dwFlags,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPFN_WSPDEREGISTERMEMORY)(
+ IN SOCKET s,
+ IN HANDLE Handle,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPFN_WSPREGISTERRDMAMEMORY)(
+ IN SOCKET s,
+ IN PVOID lpBuffer,
+ IN DWORD dwBufferLength,
+ IN DWORD dwFlags,
+ OUT LPVOID lpRdmaBufferDescriptor,
+ IN OUT LPDWORD lpdwDescriptorLength,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPFN_WSPDEREGISTERRDMAMEMORY)(
+ IN SOCKET s,
+ IN LPVOID lpRdmaBufferDescriptor,
+ IN DWORD dwDescriptorLength,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPFN_WSPRDMAWRITE)(
+ IN SOCKET s,
+ IN LPWSABUFEX lpBuffers,
+ IN DWORD dwBufferCount,
+ IN LPVOID lpTargetBufferDescriptor,
+ IN DWORD dwTargetDescriptorLength,
+ IN DWORD dwTargetBufferOffset,
+ OUT LPDWORD lpdwNumberOfBytesWritten,
+ IN DWORD dwFlags,
+ IN LPWSAOVERLAPPED lpOverlapped OPTIONAL,
+ IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
+ IN LPWSATHREADID lpThreadId,
+ OUT LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPFN_WSPRDMAREAD)(
+ IN SOCKET s,
+ IN LPWSABUFEX lpBuffers,
+ IN DWORD dwBufferCount,
+ IN LPVOID lpTargetBufferDescriptor,
+ IN DWORD dwTargetDescriptorLength,
+ IN DWORD dwTargetBufferOffset,
+ OUT LPDWORD lpdwNumberOfBytesRead,
+ IN DWORD dwFlags,
+ IN LPWSAOVERLAPPED lpOverlapped OPTIONAL,
+ IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
+ IN LPWSATHREADID lpThreadId,
+ OUT LPINT lpErrno);
+
+#if(_WIN32_WINNT >= 0x0501)
+typedef int
+(WSPAPI *LPFN_WSPMEMORYREGISTRATIONCACHECALLBACK)(
+ IN PVOID lpvAddress,
+ IN SIZE_T Size,
+ OUT LPINT lpErrno);
#endif
-int WSPAPI
+int
+WSPAPI
WSPStartupEx(
- IN WORD wVersionRequested,
- OUT LPWSPDATA lpWSPData,
- IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
- IN LPWSPUPCALLTABLEEX lpUpcallTable,
- OUT LPWSPPROC_TABLE lpProcTable);
-
-typedef int WSPAPI
-(*LPWSPSTARTUPEX)(
- IN WORD wVersionRequested,
- OUT LPWSPDATA lpWSPData,
- IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
- IN LPWSPUPCALLTABLEEX lpUpcallTable,
- OUT LPWSPPROC_TABLE lpProcTable);
-
-#define MEM_READ 1
-#define MEM_WRITE 2
-#define MEM_READWRITE 3
-
-int WSPAPI
+ IN WORD wVersionRequested,
+ OUT LPWSPDATA lpWSPData,
+ IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ IN LPWSPUPCALLTABLEEX lpUpcallTable,
+ OUT LPWSPPROC_TABLE lpProcTable);
+
+HANDLE
+WSPAPI
+WSPRegisterMemory(
+ IN SOCKET s,
+ IN PVOID lpBuffer,
+ IN DWORD dwBufferLength,
+ IN DWORD dwFlags,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
WSPDeregisterMemory(
- IN SOCKET s,
- IN HANDLE Handle,
- OUT LPINT lpErrno);
-
-typedef int WSPAPI
-(*LPFN_WSPDEREGISTERMEMORY)(
- IN SOCKET s,
- IN HANDLE Handle,
- OUT LPINT lpErrno);
+ IN SOCKET s,
+ IN HANDLE Handle,
+ OUT LPINT lpErrno);
-int WSPAPI
+int
+WSPAPI
+WSPRegisterRdmaMemory(
+ IN SOCKET s,
+ IN PVOID lpBuffer,
+ IN DWORD dwBufferLength,
+ IN DWORD dwFlags,
+ OUT LPVOID lpRdmaBufferDescriptor,
+ IN OUT LPDWORD lpdwDescriptorLength,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
WSPDeregisterRdmaMemory(
- IN SOCKET s,
- IN LPVOID lpRdmaBufferDescriptor,
- IN DWORD dwDescriptorLength,
- OUT LPINT lpErrno);
-
-typedef int WSPAPI
-(*LPFN_WSPDEREGISTERRDMAMEMORY)(
- IN SOCKET s,
- IN LPVOID lpRdmaBufferDescriptor,
- IN DWORD dwDescriptorLength,
- OUT LPINT lpErrno);
-
-int WSPAPI
-WSPMemoryRegistrationCacheCallback(
- IN PVOID lpvAddress,
- IN SIZE_T Size,
- OUT LPINT lpErrno);
+ IN SOCKET s,
+ IN LPVOID lpRdmaBufferDescriptor,
+ IN DWORD dwDescriptorLength,
+ OUT LPINT lpErrno);
-typedef int WSPAPI
-(*LPFN_WSPMEMORYREGISTRATIONCACHECALLBACK)(
- IN PVOID lpvAddress,
- IN SIZE_T Size,
- OUT LPINT lpErrno);
-
-int WSPAPI
-WSPRdmaRead(
- IN SOCKET s,
- IN LPWSABUFEX lpBuffers,
- IN DWORD dwBufferCount,
- IN LPVOID lpTargetBufferDescriptor,
- IN DWORD dwTargetDescriptorLength,
- IN DWORD dwTargetBufferOffset,
- OUT LPDWORD lpdwNumberOfBytesRead,
- IN DWORD dwFlags,
- IN LPWSAOVERLAPPED lpOverlapped,
- IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
- IN LPWSATHREADID lpThreadId,
- OUT LPINT lpErrno);
-
-typedef int WSPAPI
-(*LPFN_WSPRDMAREAD)(
- IN SOCKET s,
- IN LPWSABUFEX lpBuffers,
- IN DWORD dwBufferCount,
- IN LPVOID lpTargetBufferDescriptor,
- IN DWORD dwTargetDescriptorLength,
- IN DWORD dwTargetBufferOffset,
- OUT LPDWORD lpdwNumberOfBytesRead,
- IN DWORD dwFlags,
- IN LPWSAOVERLAPPED lpOverlapped,
- IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
- IN LPWSATHREADID lpThreadId,
- OUT LPINT lpErrno);
-
-int WSPAPI
+int
+WSPAPI
WSPRdmaWrite(
- IN SOCKET s,
- IN LPWSABUFEX lpBuffers,
- IN DWORD dwBufferCount,
- IN LPVOID lpTargetBufferDescriptor,
- IN DWORD dwTargetDescriptorLength,
- IN DWORD dwTargetBufferOffset,
- OUT LPDWORD lpdwNumberOfBytesWritten,
- IN DWORD dwFlags,
- IN LPWSAOVERLAPPED lpOverlapped,
- IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
- IN LPWSATHREADID lpThreadId,
- OUT LPINT lpErrno);
-
-typedef int WSPAPI
-(*LPFN_WSPRDMAWRITE)(
- IN SOCKET s,
- IN LPWSABUFEX lpBuffers,
- IN DWORD dwBufferCount,
- IN LPVOID lpTargetBufferDescriptor,
- IN DWORD dwTargetDescriptorLength,
- IN DWORD dwTargetBufferOffset,
- OUT LPDWORD lpdwNumberOfBytesWritten,
- IN DWORD dwFlags,
- IN LPWSAOVERLAPPED lpOverlapped,
- IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
- IN LPWSATHREADID lpThreadId,
- OUT LPINT lpErrno);
-
-HANDLE WSPAPI
-WSPRegisterMemory(
- IN SOCKET s,
- IN PVOID lpBuffer,
- IN DWORD dwBufferLength,
- IN DWORD dwFlags,
- OUT LPINT lpErrno);
-
-int WSPAPI
-WSPRegisterRdmaMemory(
- IN SOCKET s,
- IN PVOID lpBuffer,
- IN DWORD dwBufferLength,
- IN DWORD dwFlags,
- OUT LPVOID lpRdmaBufferDescriptor,
- IN OUT LPDWORD lpdwDescriptorLength,
- OUT LPINT lpErrno);
-
-typedef int WSPAPI
-(*LPFN_WSPREGISTERRDMAMEMORY)(
- IN SOCKET s,
- IN PVOID lpBuffer,
- IN DWORD dwBufferLength,
- IN DWORD dwFlags,
- OUT LPVOID lpRdmaBufferDescriptor,
- IN OUT LPDWORD lpdwDescriptorLength,
- OUT LPINT lpErrno);
+ IN SOCKET s,
+ IN LPWSABUFEX lpBuffers,
+ IN DWORD dwBufferCount,
+ IN LPVOID lpTargetBufferDescriptor,
+ IN DWORD dwTargetDescriptorLength,
+ IN DWORD dwTargetBufferOffset,
+ OUT LPDWORD lpdwNumberOfBytesWritten,
+ IN DWORD dwFlags,
+ IN LPWSAOVERLAPPED lpOverlapped OPTIONAL,
+ IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
+ IN LPWSATHREADID lpThreadId,
+ OUT LPINT lpErrno);
+
+int
+WSPAPI
+WSPRdmaRead(
+ IN SOCKET s,
+ IN LPWSABUFEX lpBuffers,
+ IN DWORD dwBufferCount,
+ IN LPVOID lpTargetBufferDescriptor,
+ IN DWORD dwTargetDescriptorLength,
+ IN DWORD dwTargetBufferOffset,
+ OUT LPDWORD lpdwNumberOfBytesRead,
+ IN DWORD dwFlags,
+ IN LPWSAOVERLAPPED lpOverlapped OPTIONAL,
+ IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
+ IN LPWSATHREADID lpThreadId,
+ OUT LPINT lpErrno);
+
+#if(_WIN32_WINNT >= 0x0501)
+int
+WSPAPI
+WSPMemoryRegistrationCacheCallback(
+ IN PVOID lpvAddress,
+ IN SIZE_T Size,
+ OUT LPINT lpErrno);
+#endif
#ifdef __cplusplus
}
#endif
-
-#endif /* __WS2SAN_H */