Leaked source code of windows server 2003
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.
 
 
 
 
 
 

89 lines
2.5 KiB

//----------------------------------------------------------------------------
//
// 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;
}