00001 #ifndef _WSAHELP_H
00002 #define _WSAHELP_H
00003
00004 #include <winsock2.h>
00005 #include <ntsecapi.h>
00006 #ifdef __cplusplus
00007 extern "C" {
00008 #endif
00009
00010 #define WSH_NOTIFY_BIND 0x00000001
00011 #define WSH_NOTIFY_LISTEN 0x00000002
00012 #define WSH_NOTIFY_CONNECT 0x00000004
00013 #define WSH_NOTIFY_ACCEPT 0x00000008
00014 #define WSH_NOTIFY_SHUTDOWN_RECEIVE 0x00000010
00015 #define WSH_NOTIFY_SHUTDOWN_SEND 0x00000020
00016 #define WSH_NOTIFY_SHUTDOWN_ALL 0x00000040
00017 #define WSH_NOTIFY_CLOSE 0x00000080
00018 #define WSH_NOTIFY_CONNECT_ERROR 0x00000100
00019 #define SOL_INTERNAL 0xFFFE
00020 #define SO_CONTEXT 1
00021
00022 #ifndef RC_INVOKED
00023 typedef enum _SOCKADDR_ADDRESS_INFO {
00024 SockaddrAddressInfoNormal,
00025 SockaddrAddressInfoWildcard,
00026 SockaddrAddressInfoBroadcast,
00027 SockaddrAddressInfoLoopback
00028 } SOCKADDR_ADDRESS_INFO, *PSOCKADDR_ADDRESS_INFO;
00029 typedef enum _SOCKADDR_ENDPOINT_INFO {
00030 SockaddrEndpointInfoNormal,
00031 SockaddrEndpointInfoWildcard,
00032 SockaddrEndpointInfoReserved
00033 } SOCKADDR_ENDPOINT_INFO, *PSOCKADDR_ENDPOINT_INFO;
00034 typedef struct _WINSOCK_MAPPING {
00035 DWORD Rows;
00036 DWORD Columns;
00037 struct {
00038 DWORD AddressFamily;
00039 DWORD SocketType;
00040 DWORD Protocol;
00041 } Mapping[1];
00042 } WINSOCK_MAPPING, *PWINSOCK_MAPPING;
00043 typedef struct _SOCKADDR_INFO {
00044 SOCKADDR_ADDRESS_INFO AddressInfo;
00045 SOCKADDR_ENDPOINT_INFO EndpointInfo;
00046 } SOCKADDR_INFO, *PSOCKADDR_INFO;
00047
00048 INT WINAPI WSHAddressToString(LPSOCKADDR,INT,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD);
00049 INT WINAPI WSHEnumProtocols(LPINT,LPWSTR,LPVOID,LPDWORD);
00050 INT WINAPI WSHGetBroadcastSockaddr(PVOID,PSOCKADDR,PINT);
00051 INT WINAPI WSHGetProviderGuid(LPWSTR,LPGUID);
00052 INT WINAPI WSHGetSockaddrType(PSOCKADDR,DWORD,PSOCKADDR_INFO);
00053 INT WINAPI WSHGetSocketInformation(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,LPINT);
00054 INT WINAPI WSHGetWildcardSockaddr(PVOID,PSOCKADDR,PINT);
00055 DWORD WINAPI WSHGetWinsockMapping(PWINSOCK_MAPPING,DWORD);
00056 INT WINAPI WSHGetWSAProtocolInfo(LPWSTR,LPWSAPROTOCOL_INFOW*,LPDWORD);
00057 INT WINAPI WSHIoctl(PVOID,SOCKET,HANDLE,HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,
00058 LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPBOOL);
00059 INT WINAPI WSHJoinLeaf(PVOID,SOCKET,HANDLE,HANDLE,PVOID,SOCKET,PSOCKADDR,
00060 DWORD,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD);
00061 INT WINAPI WSHNotify(PVOID,SOCKET,HANDLE,HANDLE,DWORD);
00062 INT WINAPI WSHOpenSocket(PINT,PINT,PINT,PUNICODE_STRING,PVOID,PDWORD);
00063 INT WINAPI WSHOpenSocket2(PINT,PINT,PINT,GROUP,DWORD,PUNICODE_STRING,PVOID*,PDWORD);
00064 INT WINAPI WSHSetSocketInformation(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT);
00065 INT WINAPI WSHStringToAddress(LPWSTR,DWORD,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPDWORD);
00066
00067 typedef INT (WINAPI *PWSH_ADDRESS_TO_STRING)(LPSOCKADDR,INT,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD);
00068 typedef INT (WINAPI *PWSH_ENUM_PROTOCOLS)(LPINT,LPWSTR,LPVOID,LPDWORD);
00069 typedef INT (WINAPI *PWSH_GET_BROADCAST_SOCKADDR)(PVOID,PSOCKADDR,PINT);
00070 typedef INT (WINAPI *PWSH_GET_PROVIDER_GUID)(LPWSTR,LPGUID);
00071 typedef INT (WINAPI *PWSH_GET_SOCKADDR_TYPE)(PSOCKADDR,DWORD,PSOCKADDR_INFO);
00072 typedef INT (WINAPI *PWSH_GET_SOCKET_INFORMATION)(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,LPINT);
00073 typedef INT (WINAPI *PWSH_GET_WILDCARD_SOCKADDR)(PVOID,PSOCKADDR,PINT);
00074 typedef DWORD (WINAPI *PWSH_GET_WINSOCK_MAPPING)(PWINSOCK_MAPPING,DWORD);
00075 typedef INT (WINAPI *PWSH_GET_WSAPROTOCOL_INFO)(LPWSTR,LPWSAPROTOCOL_INFOW*,LPDWORD);
00076 typedef INT (WINAPI *PWSH_IOCTL)(PVOID,SOCKET,HANDLE,HANDLE,DWORD,LPVOID,DWORD,
00077 LPVOID,DWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPBOOL);
00078 typedef INT (WINAPI *PWSH_JOIN_LEAF)(PVOID,SOCKET,HANDLE,HANDLE,PVOID,SOCKET,
00079 PSOCKADDR,DWORD,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD);
00080 typedef INT (WINAPI *PWSH_NOTIFY)(PVOID,SOCKET,HANDLE,HANDLE,DWORD);
00081 typedef INT (WINAPI *PWSH_OPEN_SOCKET)(PINT,PINT,PINT,PUNICODE_STRING,PVOID,PDWORD);
00082 typedef INT (WINAPI *PWSH_OPEN_SOCKET2)(PINT,PINT,PINT,GROUP,DWORD,PUNICODE_STRING,PVOID*,PDWORD);
00083 typedef INT (WINAPI *PWSH_SET_SOCKET_INFORMATION)(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT);
00084 typedef INT (WINAPI *PWSH_STRING_TO_ADDRESS)(LPWSTR,DWORD,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPDWORD);
00085
00086 #endif
00087
00088 #ifdef __cplusplus
00089 }
00090 #endif
00091
00092 #endif