Synchronize with trunk revision 59636 (just before Alex's CreateProcess revamp).
[reactos.git] / include / ddk / ws2san.h
index 392085d..c4ec847 100644 (file)
  *
  */
 
-#ifndef __WS2SAN_H
-#define __WS2SAN_H
+#pragma once
 
-#include <winsock2.h>
+#ifndef _WS2SAN_H_
+#define _WS2SAN_H_
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#define WSPAPI WINAPI
-
-/* 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}}
 
@@ -59,184 +54,212 @@ typedef WSPUPCALLTABLEEX *LPWSPUPCALLTABLEEX;
 #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;
+  _Field_size_bytes_(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
+_Must_inspect_result_
+int
+(WSPAPI *LPWSPSTARTUPEX)(
+  _In_ WORD wVersionRequested,
+  _Out_ LPWSPDATA lpWSPData,
+  _In_ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+  _In_ LPWSPUPCALLTABLEEX lpUpcallTable,
+  _Out_ LPWSPPROC_TABLE lpProcTable);
+
+typedef
+_Must_inspect_result_
+HANDLE
+(WSPAPI *LPFN_WSPREGISTERMEMORY)(
+  _In_ SOCKET s,
+  _In_reads_bytes_(dwBufferLength) 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
+_Must_inspect_result_
+int
+(WSPAPI *LPFN_WSPREGISTERRDMAMEMORY)(
+  _In_ SOCKET s,
+  _In_reads_bytes_(dwBufferLength) PVOID lpBuffer,
+  _In_ DWORD dwBufferLength,
+  _In_ DWORD dwFlags,
+  _Out_writes_bytes_(*lpdwDescriptorLength) LPVOID lpRdmaBufferDescriptor,
+  _Inout_ LPDWORD lpdwDescriptorLength,
+  _Out_ LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPFN_WSPDEREGISTERRDMAMEMORY)(
+  _In_ SOCKET s,
+  _In_reads_bytes_(dwDescriptorLength) LPVOID lpRdmaBufferDescriptor,
+  _In_ DWORD dwDescriptorLength,
+  _Out_ LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPFN_WSPRDMAWRITE)(
+  _In_ SOCKET s,
+  _In_reads_(dwBufferCount) LPWSABUFEX lpBuffers,
+  _In_ DWORD dwBufferCount,
+  _In_reads_bytes_(dwTargetDescriptorLength) LPVOID lpTargetBufferDescriptor,
+  _In_ DWORD dwTargetDescriptorLength,
+  _In_ DWORD dwTargetBufferOffset,
+  _Out_ LPDWORD lpdwNumberOfBytesWritten,
+  _In_ DWORD dwFlags,
+  _In_opt_ LPWSAOVERLAPPED lpOverlapped,
+  _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+  _In_ LPWSATHREADID lpThreadId,
+  _Out_ LPINT lpErrno);
+
+typedef int
+(WSPAPI *LPFN_WSPRDMAREAD)(
+  _In_ SOCKET s,
+  _In_reads_(dwBufferCount) LPWSABUFEX lpBuffers,
+  _In_ DWORD dwBufferCount,
+  _In_reads_bytes_(dwTargetDescriptorLength) LPVOID lpTargetBufferDescriptor,
+  _In_ DWORD dwTargetDescriptorLength,
+  _In_ DWORD dwTargetBufferOffset,
+  _Out_ LPDWORD lpdwNumberOfBytesRead,
+  _In_ DWORD dwFlags,
+  _In_opt_ LPWSAOVERLAPPED lpOverlapped,
+  _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+  _In_ LPWSATHREADID lpThreadId,
+  _Out_ LPINT lpErrno);
+
+#if(_WIN32_WINNT >= 0x0501)
+typedef
+_Must_inspect_result_
+int
+(WSPAPI *LPFN_WSPMEMORYREGISTRATIONCACHECALLBACK)(
+  _In_reads_bytes_(Size) PVOID lpvAddress,
+  _In_ SIZE_T Size,
+  _Out_ LPINT lpErrno);
 #endif
 
-int WSPAPI
+_Must_inspect_result_
+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);
+
+_Must_inspect_result_
+HANDLE
+WSPAPI
+WSPRegisterMemory(
+  _In_ SOCKET s,
+  _In_reads_bytes_(dwBufferLength) PVOID lpBuffer,
+  _In_ DWORD dwBufferLength,
+  _In_ DWORD dwFlags,
+  _Out_ LPINT lpErrno);
+
+int
+WSPAPI
 WSPDeregisterMemory(
-  IN SOCKET  s,
-  IN HANDLE  Handle,
-  OUT LPINT  lpErrno);
+  _In_ SOCKET s,
+  _In_ HANDLE Handle,
+  _Out_ LPINT lpErrno);
 
-typedef int WSPAPI
-(*LPFN_WSPDEREGISTERMEMORY)(
-  IN SOCKET  s,
-  IN HANDLE  Handle,
-  OUT LPINT  lpErrno);
-
-int WSPAPI
+_Must_inspect_result_
+int
+WSPAPI
+WSPRegisterRdmaMemory(
+  _In_ SOCKET s,
+  _In_reads_bytes_(dwBufferLength) PVOID lpBuffer,
+  _In_ DWORD dwBufferLength,
+  _In_ DWORD dwFlags,
+  _Out_writes_bytes_(*lpdwDescriptorLength) LPVOID lpRdmaBufferDescriptor,
+  _Inout_ 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);
-
-typedef int WSPAPI
-(*LPFN_WSPMEMORYREGISTRATIONCACHECALLBACK)(
-  IN PVOID  lpvAddress,
-  IN SIZE_T  Size,
-  OUT LPINT  lpErrno);
+  _In_ SOCKET s,
+  _In_reads_bytes_(dwDescriptorLength) LPVOID lpRdmaBufferDescriptor,
+  _In_ DWORD dwDescriptorLength,
+  _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_reads_(dwBufferCount) LPWSABUFEX lpBuffers,
+  _In_ DWORD dwBufferCount,
+  _In_reads_bytes_(dwTargetDescriptorLength) LPVOID lpTargetBufferDescriptor,
+  _In_ DWORD dwTargetDescriptorLength,
+  _In_ DWORD dwTargetBufferOffset,
+  _Out_ LPDWORD lpdwNumberOfBytesWritten,
+  _In_ DWORD dwFlags,
+  _In_opt_ LPWSAOVERLAPPED lpOverlapped,
+  _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+  _In_ LPWSATHREADID lpThreadId,
+  _Out_ LPINT lpErrno);
+
+int
+WSPAPI
+WSPRdmaRead(
+  _In_ SOCKET s,
+  _In_reads_(dwBufferCount) LPWSABUFEX lpBuffers,
+  _In_ DWORD dwBufferCount,
+  _In_reads_bytes_(dwTargetDescriptorLength) LPVOID lpTargetBufferDescriptor,
+  _In_ DWORD dwTargetDescriptorLength,
+  _In_ DWORD dwTargetBufferOffset,
+  _Out_ LPDWORD lpdwNumberOfBytesRead,
+  _In_ DWORD dwFlags,
+  _In_opt_ LPWSAOVERLAPPED lpOverlapped,
+  _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+  _In_ LPWSATHREADID lpThreadId,
+  _Out_ LPINT lpErrno);
+
+#if(_WIN32_WINNT >= 0x0501)
+_Must_inspect_result_
+int
+WSPAPI
+WSPMemoryRegistrationCacheCallback(
+  _In_reads_bytes_(Size) PVOID lpvAddress,
+  _In_ SIZE_T Size,
+  _Out_ LPINT lpErrno);
+#endif
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* __WS2SAN_H */
+#endif /* _WS2SAN_H_ */