146 lines
3.7 KiB
C
146 lines
3.7 KiB
C
|
/*===================================================================
|
||
|
Microsoft Denali
|
||
|
|
||
|
Microsoft Confidential.
|
||
|
Copyright 1996 Microsoft Corporation. All Rights Reserved.
|
||
|
|
||
|
Component: misc
|
||
|
|
||
|
File: debugger.h
|
||
|
|
||
|
Owner: DGottner, DmitryR
|
||
|
|
||
|
This file contains debugger useful utility prototypes.
|
||
|
===================================================================*/
|
||
|
|
||
|
#ifndef _DEBUGGER_H
|
||
|
#define _DEBUGGER_H
|
||
|
|
||
|
#include "activdbg.h"
|
||
|
#include "dbgcxt.h" // Convienence for users of debugger.h
|
||
|
|
||
|
/*
|
||
|
* Globals that we advertise
|
||
|
*/
|
||
|
|
||
|
class CViperActivity;
|
||
|
|
||
|
extern IProcessDebugManager *g_pPDM;
|
||
|
extern IDebugApplication *g_pDebugApp;
|
||
|
extern IDebugApplicationNode *g_pDebugAppRoot;
|
||
|
extern CViperActivity *g_pDebugActivity;
|
||
|
extern DWORD g_dwDebugThreadId;
|
||
|
|
||
|
/*
|
||
|
* Initialize/Uninitialize debugging
|
||
|
*/
|
||
|
|
||
|
extern HRESULT InitDebugging(CIsapiReqInfo *pIReq);
|
||
|
extern HRESULT UnInitDebugging();
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Get the application node for the virtual server
|
||
|
*/
|
||
|
|
||
|
extern HRESULT GetServerDebugRoot(CIsapiReqInfo *pIReq, IDebugApplicationNode **ppDebugRoot);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Query debugging client
|
||
|
*/
|
||
|
BOOL FCaesars(); // TRUE if default JIT debugger is Script Debugger
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Debugger (or Debugger UI) invocation from a correct thread
|
||
|
*/
|
||
|
|
||
|
#define DEBUGGER_UI_BRING_DOCUMENT_TO_TOP 0x00000001
|
||
|
#define DEBUGGER_UI_BRING_DOC_CONTEXT_TO_TOP 0x00000002
|
||
|
#define DEBUGGER_EVENT_ON_PAGEBEGIN 0x00000010
|
||
|
#define DEBUGGER_EVENT_ON_PAGEEND 0x00000020
|
||
|
#define DEBUGGER_EVENT_ON_REFRESH_BREAKPOINT 0x00000040
|
||
|
#define DEBUGGER_ON_REMOVE_CHILD 0x00000100
|
||
|
#define DEBUGGER_ON_DESTROY 0x00000200
|
||
|
#define DEBUGGER_UNUSED_RECORD 0x80000000 // can reclaim argument space
|
||
|
|
||
|
HRESULT InvokeDebuggerWithThreadSwitch(IDebugApplication *pDebugAppln, DWORD iMethod, void *Arg = NULL);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Create/Destroy entire document trees (debugger)
|
||
|
*/
|
||
|
|
||
|
HRESULT CreateDocumentTree(wchar_t *szDocPath, IDebugApplicationNode *pDocParent, IDebugApplicationNode **ppDocRoot, IDebugApplicationNode **ppDocLeaf, wchar_t **pwszLeaf);
|
||
|
void DestroyDocumentTree(IDebugApplicationNode *pDocRoot);
|
||
|
|
||
|
|
||
|
/*===================================================================
|
||
|
C F i l e N o d e
|
||
|
|
||
|
These are used to provide directory nodes in debugger
|
||
|
Used by application mgr & by CreateDocumentTree
|
||
|
===================================================================*/
|
||
|
|
||
|
extern const GUID IID_IFileNode;
|
||
|
struct IFileNode : IDebugDocumentProvider
|
||
|
{
|
||
|
//
|
||
|
// This private interface provides two functions:
|
||
|
//
|
||
|
// * An extra method to retrieve/set the count of documents in
|
||
|
// a directory (used to know when we can detach a folder from
|
||
|
// the UI
|
||
|
//
|
||
|
// * A way of verifying that an IDebugDocumentProvider is a CFileNode
|
||
|
//
|
||
|
|
||
|
STDMETHOD_(DWORD, IncrementDocumentCount)() = 0;
|
||
|
STDMETHOD_(DWORD, DecrementDocumentCount)() = 0;
|
||
|
};
|
||
|
|
||
|
|
||
|
class CFileNode : public IFileNode
|
||
|
{
|
||
|
private:
|
||
|
DWORD m_cRefs; // Reference Count
|
||
|
DWORD m_cDocuments; // # of CTemplates in the directory (and recursively in subdirectories)
|
||
|
wchar_t *m_wszName;
|
||
|
|
||
|
public:
|
||
|
CFileNode();
|
||
|
~CFileNode();
|
||
|
HRESULT Init(wchar_t *wszName);
|
||
|
|
||
|
// IUnknown methods
|
||
|
STDMETHOD(QueryInterface)(const GUID &, void **);
|
||
|
STDMETHOD_(ULONG, AddRef)();
|
||
|
STDMETHOD_(ULONG, Release)();
|
||
|
|
||
|
// IDebugDocumentProvider methods
|
||
|
STDMETHOD(GetDocument)(/* [out] */ IDebugDocument **ppDebugDoc);
|
||
|
|
||
|
// IDebugDocumentInfo (also IDebugDocumentProvider) methods
|
||
|
STDMETHOD(GetName)(
|
||
|
/* [in] */ DOCUMENTNAMETYPE dnt,
|
||
|
/* [out] */ BSTR *pbstrName);
|
||
|
|
||
|
STDMETHOD(GetDocumentClassId)(/* [out] */ CLSID *)
|
||
|
{
|
||
|
return E_NOTIMPL;
|
||
|
}
|
||
|
|
||
|
STDMETHOD_(DWORD, IncrementDocumentCount)()
|
||
|
{
|
||
|
return ++m_cDocuments;
|
||
|
}
|
||
|
|
||
|
STDMETHOD_(DWORD, DecrementDocumentCount)()
|
||
|
{
|
||
|
return --m_cDocuments;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
#endif // _DEBUGGER_H
|