//================================================================= // // Wsock32Api.h // // Copyright (c) 1999-2001 Microsoft Corporation, All Rights Reserved // //================================================================= #ifndef _WSOCK32API_H_ #define _WSOCK32API_H_ #include #include #include #include #include /****************************************************************************** * #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