/*++ Copyright (c) 1997 Microsoft Corporation Module Name : isapidll.hxx Abstract: This module declares all the classes and functions associated with ISAPI Application DLLs Author: Murali R. Krishnan ( MuraliK ) 07-Feb-1997 Environment: User Mode - Win32 Project: W3 Services DLL Revision History: --*/ # ifndef _ISAPIDLL_HXX_ # define _ISAPIDLL_HXX_ /************************************************************ * Include Headers ************************************************************/ # include "isapi.hxx" // // If the request doesn't specify an entry point, default to using // this // #define SE_DEFAULT_ENTRY "HttpExtensionProc" #define SE_INIT_ENTRY "GetExtensionVersion" #define SE_TERM_ENTRY "TerminateExtension" /************************************************************ * Forward References ************************************************************/ class WAM; /************************************************************ * Type Definitions ************************************************************/ /*++ class HSE_APPDLL: Defines the class for the object containing information about an extension. The Server extension sits in an application DLL and exports the standard ISAPI (legacy) "C" entry points. --*/ class HSE_APPDLL : public HSE_BASE { public: HSE_APPDLL( const CHAR * pszModuleName, HMODULE hMod, PFN_HTTPEXTENSIONPROC pfnEntryPoint, PFN_TERMINATEEXTENSION pfnTerminate, BOOL fCache ) : HSE_BASE( pszModuleName, fCache), _hMod ( hMod ), _pfnEntryPoint( pfnEntryPoint ), _pfnTerminate ( pfnTerminate ), _hLastUser ( NULL ) { // // We expect the first call to GetFileSecurity to fail // if ( !LoadAcl() ) { SetValid( FALSE); } } ~HSE_APPDLL(VOID); virtual DWORD ExecuteRequest( IN WAM_EXEC_INFO * pWamExecInfo ); virtual BOOL Cleanup(VOID); virtual BOOL IsMatch( IN const char * pchModuleName, IN DWORD cchModuleName) const { return ( (cchModuleName == m_strModuleName.QueryCCH()) && #if 1 // DBCS enabling for ISAPI module Name !lstrcmpi( pchModuleName, m_strModuleName.QueryStr()) #else !_stricmp( pchModuleName, m_strModuleName.QueryStr()) #endif ); } BOOL LoadAcl( VOID ); DWORD Unload(VOID); virtual BOOL AccessCheck( HANDLE hImpersonation, BOOL fCacheImpersonation); PFN_HTTPEXTENSIONPROC QueryEntryPoint( VOID ) const { return _pfnEntryPoint; } PSECURITY_DESCRIPTOR QuerySecDesc( VOID ) const { return (PSECURITY_DESCRIPTOR) _buffSD.QueryPtr(); } HMODULE QueryHMod( VOID ) const { return _hMod; } HANDLE QueryLastSuccessfulUser( VOID ) const { return _hLastUser; } VOID SetLastSuccessfulUser( HANDLE hLastUser ) { _hLastUser = hLastUser; } private: PFN_HTTPEXTENSIONPROC _pfnEntryPoint; PFN_TERMINATEEXTENSION _pfnTerminate; HMODULE _hMod; HANDLE _hLastUser; // Last successful access BUFFER _buffSD; // Security descriptor on the DLL WAM * _pWam; public: // loads an ISAPI app dll static PHSE LoadModule( IN const char * pchModule, IN HANDLE hImpersonation, IN BOOL fCache); }; // class HSE_APPDLL typedef HSE_APPDLL * PHSE_APPDLL; /************************************************************ * ISAPI Application DLL Specific Call back functions ************************************************************/ BOOL WINAPI GetServerVariable( HCONN hConn, LPSTR lpszVariableName, LPVOID lpvBuffer, LPDWORD lpdwSize ); BOOL WINAPI WriteClient( HCONN hConn, LPVOID Buffer, LPDWORD lpdwBytes, DWORD dwReserved ); BOOL WINAPI ReadClient( HCONN hConn, LPVOID Buffer, LPDWORD lpdwBytes ); BOOL WINAPI ServerSupportFunction( HCONN hConn, DWORD dwRequest, LPVOID lpvBuffer, LPDWORD lpdwSize, LPDWORD lpdwDataType ); # endif // _ISAPIDLL_HXX_ /************************ End of File ***********************/