90 lines
2.4 KiB
C++
90 lines
2.4 KiB
C++
|
//----------------------------------------------------------------------------
|
||
|
//
|
||
|
// Generic routines and initialization code.
|
||
|
//
|
||
|
// Copyright (C) Microsoft Corporation, 2000-2001.
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
#include "dbgexts.h"
|
||
|
|
||
|
PDEBUG_CLIENT2 g_ExtClient;
|
||
|
PDEBUG_CONTROL2 g_ExtControl;
|
||
|
PDEBUG_DATA_SPACES2 g_ExtData;
|
||
|
PDEBUG_REGISTERS g_ExtRegisters;
|
||
|
PDEBUG_SYMBOLS2 g_ExtSymbols;
|
||
|
PDEBUG_SYSTEM_OBJECTS2 g_ExtSystem;
|
||
|
|
||
|
// Queries for all debugger interfaces.
|
||
|
HRESULT
|
||
|
ExtQuery(PDEBUG_CLIENT Client)
|
||
|
{
|
||
|
HRESULT Status;
|
||
|
|
||
|
if ((Status = Client->QueryInterface(__uuidof(IDebugClient2),
|
||
|
(void **)&g_ExtClient)) != S_OK ||
|
||
|
(Status = Client->QueryInterface(__uuidof(IDebugControl2),
|
||
|
(void **)&g_ExtControl)) != S_OK ||
|
||
|
(Status = Client->QueryInterface(__uuidof(IDebugDataSpaces2),
|
||
|
(void **)&g_ExtData)) != S_OK ||
|
||
|
(Status = Client->QueryInterface(__uuidof(IDebugRegisters),
|
||
|
(void **)&g_ExtRegisters)) != S_OK ||
|
||
|
(Status = Client->QueryInterface(__uuidof(IDebugSymbols2),
|
||
|
(void **)&g_ExtSymbols)) != S_OK ||
|
||
|
(Status = Client->QueryInterface(__uuidof(IDebugSystemObjects2),
|
||
|
(void **)&g_ExtSystem)) != S_OK)
|
||
|
{
|
||
|
ExtRelease();
|
||
|
return Status;
|
||
|
}
|
||
|
|
||
|
return S_OK;
|
||
|
}
|
||
|
|
||
|
// Cleans up all debugger interfaces.
|
||
|
void
|
||
|
ExtRelease(void)
|
||
|
{
|
||
|
EXT_RELEASE(g_ExtClient);
|
||
|
EXT_RELEASE(g_ExtControl);
|
||
|
EXT_RELEASE(g_ExtData);
|
||
|
EXT_RELEASE(g_ExtRegisters);
|
||
|
EXT_RELEASE(g_ExtSymbols);
|
||
|
EXT_RELEASE(g_ExtSystem);
|
||
|
}
|
||
|
|
||
|
void __cdecl
|
||
|
ExtOut(PCSTR Format, ...)
|
||
|
{
|
||
|
va_list Args;
|
||
|
|
||
|
va_start(Args, Format);
|
||
|
g_ExtControl->OutputVaList(DEBUG_OUTPUT_NORMAL, Format, Args);
|
||
|
va_end(Args);
|
||
|
}
|
||
|
|
||
|
void __cdecl
|
||
|
ExtErr(PCSTR Format, ...)
|
||
|
{
|
||
|
va_list Args;
|
||
|
|
||
|
va_start(Args, Format);
|
||
|
g_ExtControl->OutputVaList(DEBUG_OUTPUT_ERROR, Format, Args);
|
||
|
va_end(Args);
|
||
|
}
|
||
|
|
||
|
void
|
||
|
ExtExec(PCSTR Command)
|
||
|
{
|
||
|
g_ExtControl->Execute(DEBUG_OUTCTL_ALL_CLIENTS, Command,
|
||
|
DEBUG_EXECUTE_DEFAULT);
|
||
|
}
|
||
|
|
||
|
extern "C" HRESULT CALLBACK
|
||
|
DebugExtensionInitialize(PULONG Version, PULONG Flags)
|
||
|
{
|
||
|
*Version = DEBUG_EXTENSION_VERSION(1, 0);
|
||
|
*Flags = 0;
|
||
|
return S_OK;
|
||
|
}
|