Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

189 lines
4.0 KiB

//=================================================================
//
// Wsock32Api.h
//
// Copyright (c) 1999-2001 Microsoft Corporation, All Rights Reserved
//
//=================================================================
#ifndef _WSOCK32API_H_
#define _WSOCK32API_H_
#include <winsock.h>
#include <tdiinfo.h>
#include <llinfo.h>
#include <tdistat.h>
#include <ipinfo.h>
/******************************************************************************
* #includes to Register this class with the CResourceManager.
*****************************************************************************/
#include "DllWrapperBase.h"
extern const GUID g_guidWsock32Api;
extern const TCHAR g_tstrWsock32[];
/******************************************************************************
* Function pointer typedefs. Add new functions here as required.
*****************************************************************************/
typedef DWORD (CALLBACK *PFN_WSOCK32_WSCONTROL)
(
DWORD,
DWORD,
LPVOID,
LPDWORD,
LPVOID,
LPDWORD
);
typedef INT (APIENTRY *PFN_WSOCK32_ENUMPROTOCOLS)
(
LPINT lpiProtocols,
LPVOID lpProtocolBuffer,
LPDWORD lpdwBufferLength
) ;
typedef INT (APIENTRY *PFN_WSOCK32_STARTUP)
(
IN WORD wVersionRequired,
OUT LPWSADATA lpWSAData
) ;
typedef INT (APIENTRY *PFN_WSOCK32_CLEANUP)
(
) ;
typedef INT (APIENTRY *PFN_WSOCK32_CLOSESOCKET)
(
SOCKET s
) ;
typedef int ( PASCAL FAR *PFN_WSOCK32_GETSOCKOPT )
(
SOCKET s,
int level,
int optname,
char FAR * optval,
int FAR *optlen
);
typedef int ( PASCAL FAR *PFN_WSOCK32_BIND )
(
SOCKET s,
const struct sockaddr FAR *addr,
int namelen
);
typedef SOCKET ( PASCAL FAR *PFN_WSOCK32_SOCKET )
(
int af,
int type,
int protocol
);
typedef int ( PASCAL FAR *PFN_WSOCK32_WSAGETLASTERROR ) (void);
typedef char * ( PASCAL FAR *PFN_WSOCK32_INET_NTOA )
(
IN struct in_addr in
);
/******************************************************************************
* Wrapper class for Wsock32 load/unload, for registration with CResourceManager.
******************************************************************************/
class CWsock32Api : public CDllWrapperBase
{
private:
// Member variables (function pointers) pointing to kernel32 functions.
// Add new functions here as required.
PFN_WSOCK32_WSCONTROL m_pfnWsControl;
PFN_WSOCK32_ENUMPROTOCOLS m_pfnWsEnumProtocols;
PFN_WSOCK32_STARTUP m_pfnWsStartup;
PFN_WSOCK32_CLEANUP m_pfnWsCleanup;
PFN_WSOCK32_CLOSESOCKET m_pfnWsCloseSocket;
PFN_WSOCK32_GETSOCKOPT m_pfnWsGetSockopt ;
PFN_WSOCK32_BIND m_pfnWsBind ;
PFN_WSOCK32_SOCKET m_pfnWsSocket ;
PFN_WSOCK32_WSAGETLASTERROR m_pfnWsWSAGetLastError ;
PFN_WSOCK32_INET_NTOA m_pfnWsInet_NtoA ;
public:
// Constructor and destructor:
CWsock32Api(LPCTSTR a_tstrWrappedDllName);
~CWsock32Api();
// Inherrited initialization function.
virtual bool Init();
// Member functions wrapping Wsock32 functions.
// Add new functions here as required:
bool WsControl
(
DWORD a_dw1,
DWORD a_dw2,
LPVOID a_lpv1,
LPDWORD a_lpdw1,
LPVOID a_lpv2,
LPDWORD a_lpdw2,
DWORD *a_pdwRetval
);
INT WsEnumProtocols (
LPINT lpiProtocols,
LPVOID lpProtocolBuffer,
LPDWORD lpdwBufferLength
);
INT WsWSAStartup (
IN WORD wVersionRequired,
OUT LPWSADATA lpWSAData
) ;
INT WsWSACleanup () ;
INT Wsclosesocket ( SOCKET s ) ;
int Wsbind (
SOCKET s,
const struct sockaddr FAR *addr,
int namelen
);
int Wsgetsockopt (
SOCKET s,
int level,
int optname,
char FAR * optval,
int FAR *optlen
);
SOCKET Wssocket (
int af,
int type,
int protocol
);
int WsWSAGetLastError(void);
char * Wsinet_ntoa (
struct in_addr in
) ;
};
#endif