Author: tkreuzer Date: Sat Jan 7 16:14:00 2012 New Revision: 54863
URL: http://svn.reactos.org/svn/reactos?rev=54863&view=rev Log: [DDK] Add wsk.h
Added: trunk/reactos/include/ddk/wsk.h (with props)
Added: trunk/reactos/include/ddk/wsk.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/wsk.h?rev=54863... ============================================================================== --- trunk/reactos/include/ddk/wsk.h (added) +++ trunk/reactos/include/ddk/wsk.h [iso-8859-1] Sat Jan 7 16:14:00 2012 @@ -1,0 +1,617 @@ +/* + * wsk.h + * + * Windows Sockets Kernel-Mode Interface + * + * This file is part of the ReactOS DDK package. + * + * Contributors: + * Timo Kreuzer (timo.kreuzer@reactos.org) + * + * 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. + * + */ +#pragma once +#define _WSK_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <netioddk.h> +#include <ws2def.h> +#include <mswsockdef.h> + +extern CONST NPIID NPI_WSK_INTERFACE_ID; + +#define WSKAPI NTAPI + +#define MAKE_WSK_VERSION(Mj, Mn) ((USHORT)((Mj) << 8) | (USHORT)((Mn) & 0xff)) +#define WSK_MAJOR_VERSION(V) ((UCHAR)((V) >> 8)) +#define WSK_MINOR_VERSION(V) ((UCHAR)(V)) +#define WSK_FLAG_AT_DISPATCH_LEVEL 0x00000008 +#define WSK_FLAG_RELEASE_ASAP 0x00000002 +#define WSK_FLAG_ENTIRE_MESSAGE 0x00000004 +#define WSK_FLAG_ABORTIVE 0x00000001 +#define WSK_FLAG_BASIC_SOCKET 0x00000000 +#define WSK_FLAG_LISTEN_SOCKET 0x00000001 +#define WSK_FLAG_CONNECTION_SOCKET 0x00000002 +#define WSK_FLAG_DATAGRAM_SOCKET 0x00000004 +#define WSK_TRANSPORT_LIST_QUERY 2 +#define WSK_TRANSPORT_LIST_CHANGE 3 +#define WSK_CACHE_SD 4 +#define WSK_RELEASE_SD 5 +#define WSK_TDI_DEVICENAME_MAPPING 6 +#define WSK_SET_STATIC_EVENT_CALLBACKS 7 +#define WSK_TDI_BEHAVIOR 8 +#define WSK_TDI_BEHAVIOR_BYPASS_TDI 0x00000001 +#define SO_WSK_SECURITY (WSK_SO_BASE+1) +#define SO_WSK_EVENT_CALLBACK (WSK_SO_BASE+2) +#define WSK_EVENT_RECEIVE_FROM 0x00000100 +#define WSK_EVENT_ACCEPT 0x00000200 +#define WSK_EVENT_SEND_BACKLOG 0x00000010 +#define WSK_EVENT_RECEIVE 0x00000040 +#define WSK_EVENT_DISCONNECT 0x00000080 +#define WSK_EVENT_DISABLE 0x80000000 +#define SIO_WSK_SET_REMOTE_ADDRESS _WSAIOW(IOC_WSK,0x1) +#define SIO_WSK_REGISTER_EXTENSION _WSAIORW(IOC_WSK,0x2) +#define SIO_WSK_QUERY_IDEAL_SEND_BACKLOG _WSAIOR(IOC_WSK,0x3) +#define SIO_WSK_QUERY_RECEIVE_BACKLOG _WSAIOR(IOC_WSK,0x4) +#define SIO_WSK_QUERY_INSPECT_ID _WSAIOR(IOC_WSK,0x5) +#define SIO_WSK_SET_SENDTO_ADDRESS _WSAIOW(IOC_WSK,0x6) +#define WSK_FLAG_NODELAY 0x00000002 +#define WSK_FLAG_WAITALL 0x00000002 +#define WSK_FLAG_DRAIN 0x00000004 +#define WSK_NO_WAIT 0 +#define WSK_INFINITE_WAIT 0xffffffff + +typedef enum +{ + WskInspectReject, + WskInspectAccept, + WskInspectPend, + WskInspectMax +} WSK_INSPECT_ACTION, *PWSK_INSPECT_ACTION; + +typedef enum +{ + WskSetOption, + WskGetOption, + WskIoctl, + WskControlMax +} WSK_CONTROL_SOCKET_TYPE, *PWSK_CONTROL_SOCKET_TYPE; + +typedef PVOID PWSK_CLIENT; + +typedef struct _WSK_SOCKET +{ + const VOID *Dispatch; +} WSK_SOCKET, *PWSK_SOCKET; + +typedef struct _WSK_BUF +{ + PMDL Mdl; + ULONG Offset; + SIZE_T Length; +} WSK_BUF, *PWSK_BUF; + +typedef struct _WSK_INSPECT_ID +{ + ULONG_PTR Key; + ULONG SerialNumber; +} WSK_INSPECT_ID, *PWSK_INSPECT_ID; + +typedef struct _WSK_DATAGRAM_INDICATION +{ + struct _WSK_DATAGRAM_INDICATION *Next; + WSK_BUF Buffer; + _Field_size_bytes_(ControlInfoLength) PCMSGHDR ControlInfo; + ULONG ControlInfoLength; + PSOCKADDR RemoteAddress; +} WSK_DATAGRAM_INDICATION, *PWSK_DATAGRAM_INDICATION; + +typedef +_Must_inspect_result_ +NTSTATUS +(WSKAPI * PFN_WSK_RECEIVE_FROM_EVENT)( + _In_opt_ PVOID SocketContext, + _In_ ULONG Flags, + _In_opt_ PWSK_DATAGRAM_INDICATION DataIndication); + +typedef struct _WSK_DATA_INDICATION +{ + struct _WSK_DATA_INDICATION *Next; + WSK_BUF Buffer; +} WSK_DATA_INDICATION, *PWSK_DATA_INDICATION; + +typedef +_Must_inspect_result_ +NTSTATUS +(WSKAPI * PFN_WSK_RECEIVE_EVENT)( + _In_opt_ PVOID SocketContext, + _In_ ULONG Flags, + _In_opt_ PWSK_DATA_INDICATION DataIndication, + _In_ SIZE_T BytesIndicated, + _Inout_ SIZE_T *BytesAccepted); + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_DISCONNECT_EVENT)( + _In_opt_ PVOID SocketContext, + _In_ ULONG Flags); + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_SEND_BACKLOG_EVENT)( + _In_opt_ PVOID SocketContext, + _In_ SIZE_T IdealBacklogSize); + +typedef struct _WSK_CLIENT_CONNECTION_DISPATCH +{ + PFN_WSK_RECEIVE_EVENT WskReceiveEvent; + PFN_WSK_DISCONNECT_EVENT WskDisconnectEvent; + PFN_WSK_SEND_BACKLOG_EVENT WskSendBacklogEvent; +} WSK_CLIENT_CONNECTION_DISPATCH, *PWSK_CLIENT_CONNECTION_DISPATCH; + +typedef +_Must_inspect_result_ +_At_(AcceptSocket, __drv_aliasesMem) +NTSTATUS +(WSKAPI * PFN_WSK_ACCEPT_EVENT)( + _In_opt_ PVOID SocketContext, + _In_ ULONG Flags, + _In_ PSOCKADDR LocalAddress, + _In_ PSOCKADDR RemoteAddress, + _In_opt_ PWSK_SOCKET AcceptSocket, + _Outptr_result_maybenull_ PVOID *AcceptSocketContext, + _Outptr_result_maybenull_ const WSK_CLIENT_CONNECTION_DISPATCH **AcceptSocketDispatch); + +typedef +_At_(Irp->IoStatus.Information, __drv_allocatesMem(Mem)) +NTSTATUS +(WSKAPI * PFN_WSK_SOCKET_CONNECT)( + _In_ PWSK_CLIENT Client, + _In_ USHORT SocketType, + _In_ ULONG Protocol, + _In_ PSOCKADDR LocalAddress, + _In_ PSOCKADDR RemoteAddress, + _Reserved_ ULONG Flags, + _In_opt_ PVOID SocketContext, + _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH *Dispatch, + _In_opt_ PEPROCESS OwningProcess, + _In_opt_ PETHREAD OwningThread, + _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor, + _Inout_ PIRP Irp); + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_CONTROL_SOCKET)( + _In_ PWSK_SOCKET Socket, + _In_ WSK_CONTROL_SOCKET_TYPE RequestType, + _In_ ULONG ControlCode, + _In_ ULONG Level, + _In_ SIZE_T InputSize, + _In_reads_bytes_opt_(InputSize) PVOID InputBuffer, + _In_ SIZE_T OutputSize, + _Out_writes_bytes_opt_(OutputSize) PVOID OutputBuffer, + _Out_opt_ SIZE_T *OutputSizeReturned, + _Inout_opt_ PIRP Irp); + +typedef +_At_(Socket, __drv_freesMem(Mem)) +NTSTATUS +(WSKAPI * PFN_WSK_CLOSE_SOCKET)( + _In_ PWSK_SOCKET Socket, + _Inout_ PIRP Irp); + +typedef struct _WSK_PROVIDER_BASIC_DISPATCH +{ + PFN_WSK_CONTROL_SOCKET WskControlSocket; + PFN_WSK_CLOSE_SOCKET WskCloseSocket; +} WSK_PROVIDER_BASIC_DISPATCH, *PWSK_PROVIDER_BASIC_DISPATCH; + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_BIND) ( + _In_ PWSK_SOCKET Socket, + _In_ PSOCKADDR LocalAddress, + _Reserved_ ULONG Flags, + _Inout_ PIRP Irp); + +typedef +_At_(Irp->IoStatus.Information, __drv_allocatesMem(Mem)) +NTSTATUS +(WSKAPI * PFN_WSK_ACCEPT)( + _In_ PWSK_SOCKET ListenSocket, + _Reserved_ ULONG Flags, + _In_opt_ PVOID AcceptSocketContext, + _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH *AcceptSocketDispatch, + _Out_opt_ PSOCKADDR LocalAddress, + _Out_opt_ PSOCKADDR RemoteAddress, + _Inout_ PIRP Irp); + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_INSPECT_COMPLETE)( + _In_ PWSK_SOCKET ListenSocket, + _In_ PWSK_INSPECT_ID InspectID, + _In_ WSK_INSPECT_ACTION Action, + _Inout_ PIRP Irp); + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_GET_LOCAL_ADDRESS)( + _In_ PWSK_SOCKET Socket, + _Out_ PSOCKADDR LocalAddress, + _Inout_ PIRP Irp); + +typedef struct _WSK_PROVIDER_LISTEN_DISPATCH +{ +#ifdef __cplusplus + WSK_PROVIDER_BASIC_DISPATCH Basic; +#else + WSK_PROVIDER_BASIC_DISPATCH; +#endif + PFN_WSK_BIND WskBind; + PFN_WSK_ACCEPT WskAccept; + PFN_WSK_INSPECT_COMPLETE WskInspectComplete; + PFN_WSK_GET_LOCAL_ADDRESS WskGetLocalAddress; +} WSK_PROVIDER_LISTEN_DISPATCH, *PWSK_PROVIDER_LISTEN_DISPATCH; + +#if (NTDDI_VERSION >= NTDDI_WIN8) +typedef struct _WSK_BUF_LIST { + struct _WSK_BUF_LIST *Next; + WSK_BUF Buffer; +} WSK_BUF_LIST, *PWSK_BUF_LIST; + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_SEND_MESSAGES)( + _In_ PWSK_SOCKET Socket, + _In_ PWSK_BUF_LIST BufferList, + _Reserved_ ULONG Flags, + _In_opt_ PSOCKADDR RemoteAddress, + _In_ ULONG ControlInfoLength, + _In_reads_bytes_opt_(ControlInfoLength) PCMSGHDR ControlInfo, + _Inout_ PIRP Irp); +#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */ + +typedef struct _WSK_PROVIDER_DATAGRAM_DISPATCH +{ +#ifdef __cplusplus + WSK_PROVIDER_BASIC_DISPATCH Basic; +#else + WSK_PROVIDER_BASIC_DISPATCH; +#endif + PFN_WSK_BIND WskBind; + PFN_WSK_SEND_TO WskSendTo; + PFN_WSK_RECEIVE_FROM WskReceiveFrom; + PFN_WSK_RELEASE_DATAGRAM_INDICATION_LIST WskRelease; + PFN_WSK_GET_LOCAL_ADDRESS WskGetLocalAddress; +#if (NTDDI_VERSION >= NTDDI_WIN8) + PFN_WSK_SEND_MESSAGES WskSendMessages; +#endif +} WSK_PROVIDER_DATAGRAM_DISPATCH, *PWSK_PROVIDER_DATAGRAM_DISPATCH; + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_CONNECT) ( + _In_ PWSK_SOCKET Socket, + _In_ PSOCKADDR RemoteAddress, + _Reserved_ ULONG Flags, + _Inout_ PIRP Irp); + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_GET_REMOTE_ADDRESS)( + _In_ PWSK_SOCKET Socket, + _Out_ PSOCKADDR RemoteAddress, + _Inout_ PIRP Irp); + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_SEND)( + _In_ PWSK_SOCKET Socket, + _In_ PWSK_BUF Buffer, + _In_ ULONG Flags, + _Inout_ PIRP Irp); + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_RECEIVE)( + _In_ PWSK_SOCKET Socket, + _In_ PWSK_BUF Buffer, + _In_ ULONG Flags, + _Inout_ PIRP Irp); + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_DISCONNECT)( + _In_ PWSK_SOCKET Socket, + _In_opt_ PWSK_BUF Buffer, + _In_ ULONG Flags, + _Inout_ PIRP Irp); + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_RELEASE_DATA_INDICATION_LIST)( + _In_ PWSK_SOCKET Socket, + _In_ PWSK_DATA_INDICATION DataIndication); + +typedef struct _WSK_PROVIDER_CONNECTION_DISPATCH +{ +#ifdef __cplusplus + WSK_PROVIDER_BASIC_DISPATCH Basic; +#else + WSK_PROVIDER_BASIC_DISPATCH; +#endif + PFN_WSK_BIND WskBind; + PFN_WSK_CONNECT WskConnect; + PFN_WSK_GET_LOCAL_ADDRESS WskGetLocalAddress; + PFN_WSK_GET_REMOTE_ADDRESS WskGetRemoteAddress; + PFN_WSK_SEND WskSend; + PFN_WSK_RECEIVE WskReceive; + PFN_WSK_DISCONNECT WskDisconnect; + PFN_WSK_RELEASE_DATA_INDICATION_LIST WskRelease; +} WSK_PROVIDER_CONNECTION_DISPATCH, *PWSK_PROVIDER_CONNECTION_DISPATCH; + +typedef +_Must_inspect_result_ +WSK_INSPECT_ACTION +(WSKAPI * PFN_WSK_INSPECT_EVENT)( + _In_opt_ PVOID SocketContext, + _In_ PSOCKADDR LocalAddress, + _In_ PSOCKADDR RemoteAddress, + _In_opt_ PWSK_INSPECT_ID InspectID); + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_ABORT_EVENT) ( + _In_opt_ PVOID SocketContext, + _In_ PWSK_INSPECT_ID InspectID); + +typedef +_At_(Irp->IoStatus.Information, __drv_allocatesMem(Mem)) +NTSTATUS +(WSKAPI * PFN_WSK_SOCKET)( + _In_ PWSK_CLIENT Client, + _In_ ADDRESS_FAMILY AddressFamily, + _In_ USHORT SocketType, + _In_ ULONG Protocol, + _In_ ULONG Flags, + _In_opt_ PVOID SocketContext, + _In_opt_ const VOID *Dispatch, + _In_opt_ PEPROCESS OwningProcess, + _In_opt_ PETHREAD OwningThread, + _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor, + _Inout_ PIRP Irp); + +typedef struct _WSK_TDI_MAP +{ + USHORT SocketType; + ADDRESS_FAMILY AddressFamily; + ULONG Protocol; + PCWSTR TdiDeviceName; +} WSK_TDI_MAP, *PWSK_TDI_MAP; + +typedef struct _WSK_TDI_MAP_INFO +{ + const ULONG ElementCount; + _Field_size_(ElementCount) const WSK_TDI_MAP *Map; +} WSK_TDI_MAP_INFO, *PWSK_TDI_MAP_INFO; + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_CONTROL_CLIENT)( + _In_ PWSK_CLIENT Client, + _In_ ULONG ControlCode, + _In_ SIZE_T InputSize, + _In_reads_bytes_opt_(InputSize) PVOID InputBuffer, + _In_ SIZE_T OutputSize, + _Out_writes_bytes_opt_(OutputSize) PVOID OutputBuffer, + _Out_opt_ SIZE_T *OutputSizeReturned, + _Inout_opt_ PIRP Irp); + +#if (NTDDI_VERSION >= NTDDI_WIN7) + +typedef +_At_(*Result, __drv_allocatesMem(Mem)) +NTSTATUS +(WSKAPI * PFN_WSK_GET_ADDRESS_INFO)( + _In_ PWSK_CLIENT Client, + _In_opt_ PUNICODE_STRING NodeName, + _In_opt_ PUNICODE_STRING ServiceName, + _In_opt_ ULONG NameSpace, + _In_opt_ GUID *Provider, + _In_opt_ PADDRINFOEXW Hints, + _Outptr_ PADDRINFOEXW *Result, + _In_opt_ PEPROCESS OwningProcess, + _In_opt_ PETHREAD OwningThread, + _Inout_ PIRP Irp); + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_GET_NAME_INFO)( + _In_ PWSK_CLIENT Client, + _In_ PSOCKADDR SockAddr, + _In_ ULONG SockAddrLength, + _Out_opt_ PUNICODE_STRING NodeName, + _Out_opt_ PUNICODE_STRING ServiceName, + _In_ ULONG Flags, + _In_opt_ PEPROCESS OwningProcess, + _In_opt_ PETHREAD OwningThread, + _Inout_ PIRP Irp); + +typedef +_At_(AddrInfo, __drv_freesMem(Mem)) +VOID +(WSKAPI * PFN_WSK_FREE_ADDRESS_INFO)( + _In_ PWSK_CLIENT Client, + _In_ PADDRINFOEXW AddrInfo); + +#endif /* if (NTDDI_VERSION >= NTDDI_WIN7) */ + +typedef struct _WSK_EVENT_CALLBACK_CONTROL +{ + PNPIID NpiId; + ULONG EventMask; +} WSK_EVENT_CALLBACK_CONTROL, *PWSK_EVENT_CALLBACK_CONTROL; + +typedef struct _WSK_EXTENSION_CONTROL_IN +{ + PNPIID NpiId; + PVOID ClientContext; + const VOID* ClientDispatch; +} WSK_EXTENSION_CONTROL_IN, *PWSK_EXTENSION_CONTROL_IN; + +typedef struct _WSK_EXTENSION_CONTROL_OUT +{ + PVOID ProviderContext; + const VOID* ProviderDispatch; +} WSK_EXTENSION_CONTROL_OUT, *PWSK_EXTENSION_CONTROL_OUT; + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_SEND_TO)( + _In_ PWSK_SOCKET Socket, + _In_ PWSK_BUF Buffer, + _Reserved_ ULONG Flags, + _In_opt_ PSOCKADDR RemoteAddress, + _In_ ULONG ControlInfoLength, + _In_reads_bytes_opt_(ControlInfoLength) PCMSGHDR ControlInfo, + _Inout_ PIRP Irp); + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_RECEIVE_FROM)( + _In_ PWSK_SOCKET Socket, + _In_ PWSK_BUF Buffer, + _Reserved_ ULONG Flags, + _Out_opt_ PSOCKADDR RemoteAddress, + _Inout_ PULONG ControlLength, + _Out_writes_bytes_opt_(*ControlLength) PCMSGHDR ControlInfo, + _Out_opt_ PULONG ControlFlags, + _Inout_ PIRP Irp); + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_RELEASE_DATAGRAM_INDICATION_LIST)( + _In_ PWSK_SOCKET Socket, + _In_ PWSK_DATAGRAM_INDICATION DatagramIndication); + +typedef +NTSTATUS +(WSKAPI * PFN_WSK_CLIENT_EVENT)( + _In_opt_ PVOID ClientContext, + _In_ ULONG EventType, + _In_reads_bytes_opt_(InformationLength) PVOID Information, + _In_ SIZE_T InformationLength); + +typedef struct _WSK_CLIENT_DISPATCH +{ + USHORT Version; + USHORT Reserved; + PFN_WSK_CLIENT_EVENT WskClientEvent; +} WSK_CLIENT_DISPATCH, *PWSK_CLIENT_DISPATCH; + +typedef struct _WSK_CLIENT_LISTEN_DISPATCH +{ + PFN_WSK_ACCEPT_EVENT WskAcceptEvent; + PFN_WSK_INSPECT_EVENT WskInspectEvent; + PFN_WSK_ABORT_EVENT WskAbortEvent; +} WSK_CLIENT_LISTEN_DISPATCH, *PWSK_CLIENT_LISTEN_DISPATCH; + +typedef struct _WSK_CLIENT_DATAGRAM_DISPATCH +{ + PFN_WSK_RECEIVE_FROM_EVENT WskReceiveFromEvent; +} WSK_CLIENT_DATAGRAM_DISPATCH, *PWSK_CLIENT_DATAGRAM_DISPATCH; + +typedef struct _WSK_PROVIDER_DISPATCH +{ + USHORT Version; + USHORT Reserved; + PFN_WSK_SOCKET WskSocket; + PFN_WSK_SOCKET_CONNECT WskSocketConnect; + PFN_WSK_CONTROL_CLIENT WskControlClient; +#if (NTDDI_VERSION >= NTDDI_WIN7) + PFN_WSK_GET_ADDRESS_INFO WskGetAddressInfo; + PFN_WSK_FREE_ADDRESS_INFO WskFreeAddressInfo; + PFN_WSK_GET_NAME_INFO WskGetNameInfo; +#endif +} WSK_PROVIDER_DISPATCH, *PWSK_PROVIDER_DISPATCH; + + +typedef struct _WSK_CLIENT_NPI +{ + PVOID ClientContext; + const WSK_CLIENT_DISPATCH *Dispatch; +} WSK_CLIENT_NPI, *PWSK_CLIENT_NPI; + +typedef struct _WSK_PROVIDER_NPI +{ + PWSK_CLIENT Client; + const WSK_PROVIDER_DISPATCH *Dispatch; +} WSK_PROVIDER_NPI, *PWSK_PROVIDER_NPI; + +typedef struct _WSK_REGISTRATION +{ + ULONGLONG ReservedRegistrationState; + PVOID ReservedRegistrationContext; + KSPIN_LOCK ReservedRegistrationLock; +} WSK_REGISTRATION, *PWSK_REGISTRATION; + +typedef struct _WSK_PROVIDER_CHARACTERISTICS +{ + USHORT HighestVersion; + USHORT LowestVersion; +} WSK_PROVIDER_CHARACTERISTICS, *PWSK_PROVIDER_CHARACTERISTICS; + +typedef struct _WSK_TRANSPORT +{ + USHORT Version; + USHORT SocketType; + ULONG Protocol; + ADDRESS_FAMILY AddressFamily; + GUID ProviderId; +} WSK_TRANSPORT, *PWSK_TRANSPORT; + +_Must_inspect_result_ +NTSTATUS +WskRegister( + _In_ PWSK_CLIENT_NPI WskClientNpi, + _Out_ PWSK_REGISTRATION WskRegistration); + +_Must_inspect_result_ +NTSTATUS +WskCaptureProviderNPI( + _In_ PWSK_REGISTRATION WskRegistration, + _In_ ULONG WaitTimeout, + _Out_ PWSK_PROVIDER_NPI WskProviderNpi); + +VOID +WskReleaseProviderNPI( + _In_ PWSK_REGISTRATION WskRegistration); + +_Must_inspect_result_ +NTSTATUS +WskQueryProviderCharacteristics( + _In_ PWSK_REGISTRATION WskRegistration, + _Out_ PWSK_PROVIDER_CHARACTERISTICS WskProviderCharacteristics); + +VOID +WskDeregister( + _In_ PWSK_REGISTRATION WskRegistration); + +#ifdef __cplusplus +} +#endif + +
Propchange: trunk/reactos/include/ddk/wsk.h ------------------------------------------------------------------------------ svn:eol-style = native