|
|
/******************************Module*Header*******************************\
* Module Name: trace.cxx * * Copyright (c) 2000 Microsoft Corporation * \**************************************************************************/
#include "precomp.hxx"
DECLARE_API( trace ) { OutputControl OutCtl(Client);
OutCtl.Output("trace is not fully supported yet.\n");
HRESULT hr = E_INVALIDARG; PDEBUG_SYMBOLS Symbols; ULONG64 Module; ULONG TypeId;
// Interpret command line
while (isspace(*args)) args++;
if (*args != '\0') { OutCtl.Output("trace [-cdels] [Name]\n"); return S_OK; }
if (Client == NULL || (hr = Client->QueryInterface(__uuidof(IDebugSymbols), (void **)&Symbols)) != S_OK) { return hr; }
BEGIN_API( trace );
if (GDIKM_Module.Base == 0) { OutCtl.OutErr("Error: win32k.sys module isn't available.\n"); } Module = GDIKM_Module.Base;
if (Module != 0) { // Make sure tracing is enabled in GDI
hr = Symbols->GetTypeId(Module, "GDITraceEntryType", &TypeId);
if (hr != S_OK) { OutCtl.OutErr("Error: GDI Tracing is not enabled.\n" " Rebuild " GDIModule() " with DBG_TRACE enabled.\n"); } else { OutCtl.OutWarn("no implementation yet.\n");
CHAR TypeName[200]; ULONG NameSize;
for (TypeId = 0; Symbols->GetTypeName(Module, TypeId, NULL, 0, NULL) == E_FAIL; TypeId++) { if (TypeId > 255) break; }
for (;//TypeId = 0;
(hr = Symbols->GetTypeName(Module, TypeId, TypeName, sizeof(TypeName), &NameSize)) != E_FAIL; TypeId++) { if ((NameSize > 11 && strncmp(TypeName, "enum_GDITE_", 11) == 0) || (NameSize > 6 && strncmp(TypeName, "GDITE_", 6) == 0)) { OutCtl.Output(" %lx ", TypeId); hr = Symbols->OutputTypedDataVirtual(DEBUG_OUTCTL_AMBIENT, 0, Module, TypeId, DEBUG_OUTTYPE_COMPACT_OUTPUT); if (hr != S_OK) { OutCtl.Output("%s = Unknown Value (HRESULT %s)\n", TypeName, pszHRESULT(hr)); } } }
OutCtl.Output("GetTypeName(,%lx,) returned %s.\n", TypeId, pszHRESULT(hr)); } }
Symbols->Release();
return hr; }
|