143 lines
3.1 KiB
C++
143 lines
3.1 KiB
C++
/*++
|
||
|
||
Copyright (c) 1995-1996 Microsoft Corporation
|
||
|
||
Module Name :
|
||
|
||
isapi.hxx
|
||
|
||
Abstract:
|
||
|
||
This module declares the class for the HTTP Extension objects.
|
||
|
||
Author:
|
||
|
||
Murali R. Krishnan ( MuraliK ) 17-July-1996
|
||
|
||
Environment:
|
||
User Mode - Win32
|
||
|
||
Project:
|
||
|
||
W3 Services DLL
|
||
|
||
Revision History:
|
||
|
||
--*/
|
||
|
||
# ifndef _ISAPI_HXX_
|
||
# define _ISAPI_HXX_
|
||
|
||
/************************************************************
|
||
* Include Headers
|
||
************************************************************/
|
||
|
||
#if 0
|
||
extern "C" {
|
||
# include <nt.h>
|
||
# include <ntrtl.h>
|
||
# include <nturtl.h>
|
||
# include <windows.h>
|
||
# include <string.h>
|
||
};
|
||
|
||
# endif // 0
|
||
|
||
# include "buffer.hxx"
|
||
# include <iisextp.h>
|
||
|
||
|
||
//
|
||
// SE_EXIT_PERIOD is the time to wait for all extensions to get out during
|
||
// shutdown (in seconds). Note the service controller will blow away the
|
||
// service before this timeout period expires
|
||
//
|
||
|
||
#define SE_EXIT_PERIOD (900) // seconds
|
||
|
||
|
||
|
||
/************************************************************
|
||
* Forward References
|
||
************************************************************/
|
||
class WAM_EXEC_INFO;
|
||
|
||
|
||
/************************************************************
|
||
* Type Definitions
|
||
************************************************************/
|
||
|
||
struct EXEC_DESCRIPTOR;
|
||
|
||
|
||
/*++
|
||
class HSE_BASE:
|
||
|
||
o Defines the class which will be the base class for legacy ISAPI apps
|
||
and the TAAL-based apps
|
||
|
||
--*/
|
||
class HSE_BASE {
|
||
|
||
public:
|
||
HSE_BASE( IN const CHAR * pszModuleName,
|
||
IN BOOL fCache
|
||
)
|
||
: m_nRefs ( 1),
|
||
m_strModuleName( pszModuleName ),
|
||
m_fValid ( TRUE),
|
||
m_fCache ( fCache )
|
||
{
|
||
if ( !m_strModuleName.IsValid()) {
|
||
SetValid( FALSE);
|
||
}
|
||
}
|
||
|
||
virtual ~HSE_BASE( VOID) {};
|
||
|
||
virtual BOOL IsValid( VOID) const { return ( m_fValid && (m_nRefs > 0)); }
|
||
#if DBG
|
||
virtual BOOL IsKindaValid( VOID) const { return ( m_fValid ); }
|
||
#endif
|
||
virtual BOOL IsMatch( IN const char * pchModuleName,
|
||
IN DWORD cchModuleName) const = 0;
|
||
virtual DWORD ExecuteRequest( IN WAM_EXEC_INFO * pWamExecInfo ) = 0;
|
||
|
||
virtual BOOL AccessCheck( HANDLE hImpersonation,
|
||
BOOL fCacheImpersonation) = 0;
|
||
virtual BOOL LoadAcl( VOID ) = 0;
|
||
virtual BOOL Cleanup(VOID) = 0;
|
||
virtual DWORD GetDirMonitorId(void) const { return (0); }
|
||
|
||
BOOL IsCached( VOID ) const
|
||
{ return m_fCache; }
|
||
|
||
VOID SetValid( BOOL fVal) { m_fValid = fVal; }
|
||
|
||
LONG Reference( VOID) { return ( InterlockedIncrement( &m_nRefs)); }
|
||
LONG Dereference( VOID) { return ( InterlockedDecrement( &m_nRefs)); }
|
||
LONG RefCount(VOID) const { return ( m_nRefs); }
|
||
|
||
const CHAR * QueryModuleName( VOID ) const
|
||
{ return m_strModuleName.QueryStr(); }
|
||
|
||
LIST_ENTRY m_ListEntry;
|
||
|
||
private:
|
||
LONG m_nRefs;
|
||
BOOL m_fValid;
|
||
BOOL m_fCache;
|
||
|
||
protected:
|
||
STR m_strModuleName;
|
||
|
||
}; // class HSE_BASE
|
||
|
||
|
||
typedef HSE_BASE * PHSE;
|
||
|
||
|
||
# endif // _ISAPI_HXX_
|
||
|
||
/************************ End of File ***********************/
|