195 lines
4.5 KiB
C++
195 lines
4.5 KiB
C++
/*++
|
||
|
||
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 ***********************/
|