mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-28 04:13:35 +00:00
350 lines
8.9 KiB
C
350 lines
8.9 KiB
C
/*
|
|
* 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 <winsock2.h>
|
|
|
|
#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 */
|