/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS Winsock 2 DLL * FILE: include/wsahelp.h * PURPOSE: Header file for the WinSock 2 DLL * and WinSock 2 Helper DLLs */ #ifndef __WSAHELP_H #define __WSAHELP_H #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define WSH_NOTIFY_BIND 0x00000001 #define WSH_NOTIFY_LISTEN 0x00000002 #define WSH_NOTIFY_CONNECT 0x00000004 #define WSH_NOTIFY_ACCEPT 0x00000008 #define WSH_NOTIFY_SHUTDOWN_RECEIVE 0x00000010 #define WSH_NOTIFY_SHUTDOWN_SEND 0x00000020 #define WSH_NOTIFY_SHUTDOWN_ALL 0x00000040 #define WSH_NOTIFY_CLOSE 0x00000080 #define WSH_NOTIFY_CONNECT_ERROR 0x00000100 #define SOL_INTERNAL 0xFFFE #define SO_CONTEXT 1 typedef enum _SOCKADDR_ADDRESS_INFO { SockaddrAddressInfoNormal, SockaddrAddressInfoWildcard, SockaddrAddressInfoBroadcast, SockaddrAddressInfoLoopback } SOCKADDR_ADDRESS_INFO, *PSOCKADDR_ADDRESS_INFO; typedef enum _SOCKADDR_ENDPOINT_INFO { SockaddrEndpointInfoNormal, SockaddrEndpointInfoWildcard, SockaddrEndpointInfoReserved, } SOCKADDR_ENDPOINT_INFO, *PSOCKADDR_ENDPOINT_INFO; typedef struct _WINSOCK_MAPPING { DWORD Rows; DWORD Columns; struct { DWORD AddressFamily; DWORD SocketType; DWORD Protocol; } Mapping[1]; } WINSOCK_MAPPING, *PWINSOCK_MAPPING; typedef struct _SOCKADDR_INFO { SOCKADDR_ADDRESS_INFO AddressInfo; SOCKADDR_ENDPOINT_INFO EndpointInfo; } SOCKADDR_INFO, *PSOCKADDR_INFO; INT WINAPI WSHAddressToString( IN LPSOCKADDR Address, IN INT AddressLength, IN LPWSAPROTOCOL_INFOW ProtocolInfo OPTIONAL, OUT LPWSTR AddressString, IN OUT LPDWORD AddressStringLength); INT WINAPI WSHEnumProtocols( IN LPINT lpiProtocols OPTIONAL, IN LPWSTR lpTransportKeyName, IN OUT LPVOID lpProtocolBuffer, IN OUT LPDWORD lpdwBufferLength); INT WINAPI WSHGetBroadcastSockaddr( IN PVOID HelperDllSocketContext, OUT PSOCKADDR Sockaddr, OUT PINT SockaddrLength); INT WINAPI WSHGetProviderGuid( IN LPWSTR ProviderName, OUT LPGUID ProviderGuid); INT WINAPI WSHGetSockaddrType( IN PSOCKADDR Sockaddr, IN DWORD SockaddrLength, OUT PSOCKADDR_INFO SockaddrInfo); INT WINAPI WSHGetSocketInformation( IN PVOID HelperDllSocketContext, IN SOCKET SocketHandle, IN HANDLE TdiAddressObjectHandle, IN HANDLE TdiConnectionObjectHandle, IN INT Level, IN INT OptionName, OUT PCHAR OptionValue, OUT INT OptionLength); INT WINAPI WSHGetWildcardSockaddr( IN PVOID HelperDllSocketContext, OUT PSOCKADDR Sockaddr, OUT PINT SockaddrLength); DWORD WINAPI WSHGetWinsockMapping( OUT PWINSOCK_MAPPING Mapping, IN DWORD MappingLength); INT WINAPI WSHGetWSAProtocolInfo( IN LPWSTR ProviderName, OUT LPWSAPROTOCOL_INFOW *ProtocolInfo, OUT LPDWORD ProtocolInfoEntries); INT WINAPI WSHIoctl( IN PVOID HelperDllSocketContext, IN SOCKET SocketHandle, IN HANDLE TdiAddressObjectHandle, IN HANDLE TdiConnectionObjectHandle, IN DWORD IoControlCode, IN LPVOID InputBuffer, IN DWORD InputBufferLength, IN LPVOID OutputBuffer, IN DWORD OutputBufferLength, OUT LPDWORD NumberOfBytesReturned, IN LPWSAOVERLAPPED Overlapped, IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine, OUT LPBOOL NeedsCompletion); INT WINAPI WSHJoinLeaf( IN PVOID HelperDllSocketContext, IN SOCKET SocketHandle, IN HANDLE TdiAddressObjectHandle, IN HANDLE TdiConnectionObjectHandle, IN PVOID LeafHelperDllSocketContext, IN SOCKET LeafSocketHandle, IN PSOCKADDR Sockaddr, IN DWORD SockaddrLength, IN LPWSABUF CallerData, IN LPWSABUF CalleeData, IN LPQOS SocketQOS, IN LPQOS GroupQOS, IN DWORD Flags); INT WINAPI WSHNotify( IN PVOID HelperDllSocketContext, IN SOCKET SocketHandle, IN HANDLE TdiAddressObjectHandle, IN HANDLE TdiConnectionObjectHandle, IN DWORD NotifyEvent); INT WINAPI WSHOpenSocket( IN OUT PINT AddressFamily, IN OUT PINT SocketType, IN OUT PINT Protocol, OUT PUNICODE_STRING TransportDeviceName, OUT PVOID HelperDllSocketContext, OUT PDWORD NotificationEvents); INT WINAPI WSHOpenSocket2( OUT PINT AddressFamily, IN OUT PINT SocketType, IN OUT PINT Protocol, IN GROUP Group, IN DWORD Flags, OUT PUNICODE_STRING TransportDeviceName, OUT PVOID *HelperDllSocketContext, OUT PDWORD NotificationEvents); INT WINAPI WSHSetSocketInformation( IN PVOID HelperDllSocketContext, IN SOCKET SocketHandle, IN HANDLE TdiAddressObjectHandle, IN HANDLE TdiConnectionObjectHandle, IN INT Level, IN INT OptionName, IN PCHAR OptionValue, IN INT OptionLength); INT WINAPI WSHStringToAddress( IN LPWSTR AddressString, IN DWORD AddressFamily, IN LPWSAPROTOCOL_INFOW ProtocolInfo OPTIONAL, OUT LPSOCKADDR Address, IN OUT LPDWORD AddressStringLength); typedef INT (WINAPI * PWSH_ADDRESS_TO_STRING)( IN LPSOCKADDR Address, IN INT AddressLength, IN LPWSAPROTOCOL_INFOW ProtocolInfo OPTIONAL, OUT LPWSTR AddressString, IN OUT LPDWORD AddressStringLength); typedef INT (WINAPI * PWSH_ENUM_PROTOCOLS)( IN LPINT lpiProtocols OPTIONAL, IN LPWSTR lpTransportKeyName, IN OUT LPVOID lpProtocolBuffer, IN OUT LPDWORD lpdwBufferLength); typedef INT (WINAPI * PWSH_GET_BROADCAST_SOCKADDR)( IN PVOID HelperDllSocketContext, OUT PSOCKADDR Sockaddr, OUT PINT SockaddrLength); typedef INT (WINAPI * PWSH_GET_PROVIDER_GUID)( IN LPWSTR ProviderName, OUT LPGUID ProviderGuid); typedef INT (WINAPI * PWSH_GET_SOCKADDR_TYPE)( IN PSOCKADDR Sockaddr, IN DWORD SockaddrLength, OUT PSOCKADDR_INFO SockaddrInfo); typedef INT (WINAPI * PWSH_GET_SOCKET_INFORMATION)( IN PVOID HelperDllSocketContext, IN SOCKET SocketHandle, IN HANDLE TdiAddressObjectHandle, IN HANDLE TdiConnectionObjectHandle, IN INT Level, IN INT OptionName, OUT PCHAR OptionValue, OUT INT OptionLength); typedef INT (WINAPI * PWSH_GET_WILDCARD_SOCKEADDR)( IN PVOID HelperDllSocketContext, OUT PSOCKADDR Sockaddr, OUT PINT SockaddrLength); typedef DWORD (WINAPI * PWSH_GET_WINSOCK_MAPPING)( OUT PWINSOCK_MAPPING Mapping, IN DWORD MappingLength); typedef INT (WINAPI * PWSH_GET_WSAPROTOCOL_INFO)( IN LPWSTR ProviderName, OUT LPWSAPROTOCOL_INFOW *ProtocolInfo, OUT LPDWORD ProtocolInfoEntries); typedef INT (WINAPI * PWSH_IOCTL)( IN PVOID HelperDllSocketContext, IN SOCKET SocketHandle, IN HANDLE TdiAddressObjectHandle, IN HANDLE TdiConnectionObjectHandle, IN DWORD IoControlCode, IN LPVOID InputBuffer, IN DWORD InputBufferLength, IN LPVOID OutputBuffer, IN DWORD OutputBufferLength, OUT LPDWORD NumberOfBytesReturned, IN LPWSAOVERLAPPED Overlapped, IN LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine, OUT LPBOOL NeedsCompletion); typedef INT (WINAPI * PWSH_JOIN_LEAF)( IN PVOID HelperDllSocketContext, IN SOCKET SocketHandle, IN HANDLE TdiAddressObjectHandle, IN HANDLE TdiConnectionObjectHandle, IN PVOID LeafHelperDllSocketContext, IN SOCKET LeafSocketHandle, IN PSOCKADDR Sockaddr, IN DWORD SockaddrLength, IN LPWSABUF CallerData, IN LPWSABUF CalleeData, IN LPQOS SocketQOS, IN LPQOS GroupQOS, IN DWORD Flags); typedef INT (WINAPI * PWSH_NOTIFY)( IN PVOID HelperDllSocketContext, IN SOCKET SocketHandle, IN HANDLE TdiAddressObjectHandle, IN HANDLE TdiConnectionObjectHandle, IN DWORD NotifyEvent); typedef INT (WINAPI * PWSH_OPEN_SOCKET)( IN OUT PINT AddressFamily, IN OUT PINT SocketType, IN OUT PINT Protocol, OUT PUNICODE_STRING TransportDeviceName, OUT PVOID HelperDllSocketContext, OUT PDWORD NotificationEvents); typedef INT (WINAPI * PWSH_OPEN_SOCKET2)( OUT PINT AddressFamily, IN OUT PINT SocketType, IN OUT PINT Protocol, IN GROUP Group, IN DWORD Flags, OUT PUNICODE_STRING TransportDeviceName, OUT PVOID *HelperDllSocketContext, OUT PDWORD NotificationEvents); typedef INT (WINAPI * PWSH_SET_SOCKET_INFORMATION)( IN PVOID HelperDllSocketContext, IN SOCKET SocketHandle, IN HANDLE TdiAddressObjectHandle, IN HANDLE TdiConnectionObjectHandle, IN INT Level, IN INT OptionName, IN PCHAR OptionValue, IN INT OptionLength); typedef INT (WINAPI * PWSH_STRING_TO_ADDRESS)( IN LPWSTR AddressString, IN DWORD AddressFamily, IN LPWSAPROTOCOL_INFOW ProtocolInfo OPTIONAL, OUT LPSOCKADDR Address, IN OUT LPDWORD AddressStringLength); #ifdef __cplusplus }; #endif /* __cplusplus */ #endif /* __WSAHELP_H */ /* EOF */