#ifndef _UMDH_MISCELLANEOUS_H_ #define _UMDH_MISCELLANEOUS_H_ PVOID Xalloc ( PCHAR File, ULONG Line, SIZE_T Size ); VOID Xfree ( PVOID Object ); PVOID Xrealloc ( PCHAR File, ULONG Line, PVOID Object, SIZE_T Size ); #define XALLOC(sz) Xalloc(__FILE__, __LINE__, (sz)) #define XREALLOC(ob, sz) Xrealloc(__FILE__, __LINE__, (ob), (sz)) #define XFREE(ob) Xfree(ob); VOID ReportStatistics ( ); VOID Info ( PCHAR Format, ... ); VOID Comment ( PCHAR Format, ... ); VOID Warning ( PCHAR File, ULONG Line, PCHAR Format, ... ); VOID Debug ( PCHAR File, ULONG Line, PCHAR Format, ... ); VOID Error ( PCHAR File, ULONG Line, PCHAR Format, ... ); BOOL UmdhReadAtVa( IN PCHAR File, IN ULONG Line, IN HANDLE Process, IN PVOID Address, IN PVOID Data, IN SIZE_T Size ); #define READVM(Addr, Buf, Sz) UmdhReadAtVa(__FILE__, __LINE__, (Globals.Target), (Addr), (Buf), (Sz)) typedef struct _GLOBALS { SIZE_T MaximumHeapUsage; SIZE_T CurrentHeapUsage; ULONG InfoLevel; PCHAR Version; // // Verbose (debug) mode active? // BOOL Verbose; // // Load and print file and line number information? // BOOL LineInfo; // // Do we print just a raw dump of the trace database? // BOOL RawDump; USHORT RawIndex; // // File name for the binary dump of trace database // PCHAR DumpFileName; // // Output and error files. // FILE * OutFile; FILE * ErrorFile; // // Complain about unresolved symbols? // BOOL ComplainAboutUnresolvedSymbols; // // Handle of the process from which we are retrieving information. // HANDLE Target; BOOL TargetSuspended; // // Page heap was enabled for the process. // BOOL PageHeapActive; BOOL LightPageHeapActive; // // Address of the copy kept in umdh of the entire trace database // of the target process. // PVOID Database; // // Symbols heap (support for persistent allocations) // PCHAR SymbolsHeapBase; PCHAR SymbolsHeapLimit; PCHAR SymbolsHeapFree; // // Suspend the process while doing dump // BOOL Suspend; // // Display Heap Fragmentation Statistics // BOOL HeapStatistics; // // Enable Garbage Collection // BOOL GarbageCollection; } GLOBALS, * PGLOBALS; extern GLOBALS Globals; BOOL SetSymbolsPath ( ); #endif