Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*===================================================================
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
|