windows-nt/Source/XPSP1/NT/inetsrv/iis/svcs/cmp/asp/denali.h
2020-09-26 16:20:57 +08:00

159 lines
4.4 KiB
C

/*===================================================================
Microsoft Denali
Microsoft Confidential.
Copyright 1996 Microsoft Corporation. All Rights Reserved.
Component: Hit Manager
File: Denali.h
Owner: PramodD
This is the Hit (Request) Manager header file.
===================================================================*/
#ifndef DENALI_H
#define DENALI_H
//#define LOG_FCNOTIFICATIONS // logs file change notifications to a file
#include "Hitobj.h"
#include "CacheMgr.h"
#include "Request.h"
extern BOOL g_fShutDownInProgress;
inline IsShutDownInProgress()
{
return g_fShutDownInProgress;
}
// de-comment the following line to build with no perfmon counters
//#define PERF_DISABLE
DWORD HandleHit(CIsapiReqInfo *pIReq);
//void InitODBC( void );
//void UnInitODBC( void );
extern BOOL g_fOOP;
/* inlines to implement ISA per-thread bracketing in OOP case
*/
inline HRESULT StartISAThreadBracket(CIsapiReqInfo *pIReq)
{
if (g_fOOP && pIReq)
{
HRESULT hr = pIReq->ISAThreadNotify(TRUE);
if (FAILED(hr))
return hr;
}
return S_OK;
}
inline void EndISAThreadBracket(CIsapiReqInfo *pIReq)
{
if (g_fOOP && pIReq)
{
pIReq->ISAThreadNotify(FALSE);
}
}
extern HINSTANCE g_hinstDLL;
/* intrinsic object names (bug 164)
NOTE to add an intrinsic object to denali, follow these steps:
1. add both sz and wsz versions of the object name below
2. add a check for the sz version of the object name in CTemplate::FValidObjectName
*/
#define CONCAT(a, b) a ## b
#define WSZ(x) CONCAT(L, x)
#define SZ_OBJ_APPLICATION "Application"
#define SZ_OBJ_REQUEST "Request"
#define SZ_OBJ_RESPONSE "Response"
#define SZ_OBJ_SERVER "Server"
#define SZ_OBJ_CERTIFICATE "Certificate"
#define SZ_OBJ_SESSION "Session"
#define SZ_OBJ_SCRIPTINGNAMESPACE "ScriptingNamespace"
#define SZ_OBJ_OBJECTCONTEXT "ObjectContext"
#define SZ_OBJ_ASPPAGETLB "ASPPAGETLB"
#define SZ_OBJ_ASPGLOBALTLB "ASPGLOBALTLB"
#define WSZ_OBJ_APPLICATION WSZ(SZ_OBJ_APPLICATION)
#define WSZ_OBJ_REQUEST WSZ(SZ_OBJ_REQUEST)
#define WSZ_OBJ_RESPONSE WSZ(SZ_OBJ_RESPONSE)
#define WSZ_OBJ_SERVER WSZ(SZ_OBJ_SERVER)
#define WSZ_OBJ_CERTIFICATE WSZ(SZ_OBJ_CERTIFICATE)
#define WSZ_OBJ_SESSION WSZ(SZ_OBJ_SESSION)
#define WSZ_OBJ_SCRIPTINGNAMESPACE WSZ(SZ_OBJ_SCRIPTINGNAMESPACE)
#define WSZ_OBJ_OBJECTCONTEXT WSZ(SZ_OBJ_OBJECTCONTEXT)
#define WSZ_OBJ_ASPPAGETLB WSZ(SZ_OBJ_ASPPAGETLB)
#define WSZ_OBJ_ASPGLOBALTLB WSZ(SZ_OBJ_ASPGLOBALTLB)
#define BSTR_OBJ_APPLICATION g_bstrApplication
#define BSTR_OBJ_REQUEST g_bstrRequest
#define BSTR_OBJ_RESPONSE g_bstrResponse
#define BSTR_OBJ_SERVER g_bstrServer
#define BSTR_OBJ_CERTIFICATE g_bstrCertificate
#define BSTR_OBJ_SESSION g_bstrSession
#define BSTR_OBJ_SCRIPTINGNAMESPACE g_bstrScriptingNamespace
#define BSTR_OBJ_OBJECTCONTEXT g_bstrObjectContext
// Cached BSTRs
extern BSTR g_bstrApplication;
extern BSTR g_bstrRequest;
extern BSTR g_bstrResponse;
extern BSTR g_bstrServer;
extern BSTR g_bstrCertificate;
extern BSTR g_bstrSession;
extern BSTR g_bstrScriptingNamespace;
extern BSTR g_bstrObjectContext;
// Session ID Cookie
// consist of 12 char literal constant and 8 hex process ID
#define CCH_SESSION_ID_COOKIE 20
#define CCH_SESSION_ID_COOKIE_PREFIX 12
#define SZ_SESSION_ID_COOKIE_PREFIX "ASPSESSIONID"
extern char g_szSessionIDCookieName[];
// CLIENT DEBUG (flag) Cookie
#define SZ_CLIENT_DEBUG_COOKIE "ASPCLIENTDEBUG"
// Dll name
#define ASP_DLL_NAME "ASP.DLL"
// Max # of bytes we will allocate before we assume an attack by a malicious browser
#define REQUEST_ALLOC_MAX (100 * 1024)
#define SZ_GLOBAL_ASA _T("GLOBAL.ASA")
#define CCH_GLOBAL_ASA 10
/*
* InitializeCriticalSection can throw. Use this macro instead
*/
#define ErrInitCriticalSection( cs, hr ) \
do { \
hr = S_OK; \
__try \
{ \
INITIALIZE_CRITICAL_SECTION(cs); \
} \
__except(1) \
{ \
hr = E_UNEXPECTED; \
} \
} while (0)
#ifdef LOG_FCNOTIFICATIONS
void LfcnCreateLogFile();
void LfcnCopyAdvance(char** ppchDest, const char* sz);
void LfcnAppendLog(const char* sz);
void LfcnLogNotification(char* szFile);
void LfcnLogHandleCreation(int i, char* szApp);
void LfcnUnmapLogFile();
#endif //LOG_FCNOTIFICATIONS
#endif // DENALI_H