159 lines
4.4 KiB
C
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
|