⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ws2san.h

📁 MinGW+MSYS开发必用的api参考
💻 H
字号:
/* * ws2san.h * * WinSock Direct (SAN) support * * This file is part of the w32api package. * * Contributors: *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net> * * THIS SOFTWARE IS NOT COPYRIGHTED * * This source code is offered for use in the public domain. You may * use, modify or distribute it freely. * * This code is distributed in the hope that it will be useful but * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY * DISCLAIMED. This includes but is not limited to warranties of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */#ifndef __WS2SAN_H#define __WS2SAN_H#if __GNUC__ >=3#pragma GCC system_header#endif#ifdef __cplusplusextern "C" {#endif#include <winsock2.h>#include "ntddk.h"#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 WSAID_REGISTERMEMORY \  {0xC0B422F5, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}#define WSAID_DEREGISTERMEMORY \  {0xC0B422F6, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}#define WSAID_REGISTERRDMAMEMORY \  {0xC0B422F7, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}#define WSAID_DEREGISTERRDMAMEMORY \  {0xC0B422F8, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}#define WSAID_RDMAWRITE \  {0xC0B422F9, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}#define WSAID_RDMAREAD \  {0xC0B422FA, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}#define WSAID_MEMORYREGISTRATIONCACHECALLBACK \  {0xE5DA4AF8, 0xD824, 0x48CD, {0xA7, 0x99, 0x63, 0x37, 0xA9, 0x8E, 0xD2, 0xAF}}typedef struct _WSABUFEX {  u_long  len;   char FAR  *buf;   HANDLE  handle; } WSABUFEX, FAR * LPWSABUFEX;#if 0typedef 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;#endifint WSPAPIWSPStartupEx(  /*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                     3int WSPAPIWSPDeregisterMemory(  /*IN*/ SOCKET  s,  /*IN*/ HANDLE  Handle,  /*OUT*/ LPINT  lpErrno);typedef int WSPAPI(*LPFN_WSPDEREGISTERMEMORY)(  /*IN*/ SOCKET  s,  /*IN*/ HANDLE  Handle,  /*OUT*/ LPINT  lpErrno);int WSPAPIWSPDeregisterRdmaMemory(  /*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 WSPAPIWSPMemoryRegistrationCacheCallback(  /*IN*/ PVOID  lpvAddress,  /*IN*/ SIZE_T  Size,  /*OUT*/ LPINT  lpErrno);typedef int WSPAPI(*LPFN_WSPMEMORYREGISTRATIONCACHECALLBACK)(  /*IN*/ PVOID  lpvAddress,  /*IN*/ SIZE_T  Size,  /*OUT*/ LPINT  lpErrno);int WSPAPIWSPRdmaRead(  /*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 WSPAPIWSPRdmaWrite(  /*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 WSPAPIWSPRegisterMemory(  /*IN*/ SOCKET  s,  /*IN*/ PVOID  lpBuffer,  /*IN*/ DWORD  dwBufferLength,  /*IN*/ DWORD  dwFlags,  /*OUT*/ LPINT  lpErrno);int WSPAPIWSPRegisterRdmaMemory(  /*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);#ifdef __cplusplus}#endif#endif /* __WS2SAN_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -