|
|
//----------------------------------------------------------------------------
//
// General utility functions.
//
// Copyright (C) Microsoft Corporation, 1997-2001.
//
//----------------------------------------------------------------------------
#ifndef _UTIL_H_
#define _UTIL_H_
extern PCSTR g_DefaultLogFileName; extern char g_OpenLogFileName[]; extern BOOL g_OpenLogFileAppended; extern int g_LogFile; extern BOOL g_DisableErrorPrint;
ULONG CheckUserInterrupt(void);
LONG MappingExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo);
void RemoveDelChar(PSTR pBuffer);
ULONGLONG HexValue(ULONG);
void HexList(PUCHAR, ULONG *, ULONG); void AsciiList(PSTR, ULONG *);
#define STRV_SPACE_IS_SEPARATOR 0x00000001
#define STRV_TRIM_TRAILING_SPACE 0x00000002
#define STRV_ALLOW_ESCAPED_CHARACTERS 0x00000004
#define STRV_COMPRESS_ESCAPED_CHARACTERS 0x00000008
#define STRV_ESCAPED_CHARACTERS \
(STRV_ALLOW_ESCAPED_CHARACTERS | STRV_COMPRESS_ESCAPED_CHARACTERS)
PSTR BufferStringValue(PSTR* Buf, ULONG Flags, PCHAR Save); PSTR StringValue(ULONG Flags, PCHAR Save); void CompressEscapes(PSTR Str);
void DECLSPEC_NORETURN ReportError(ULONG Code, PCSTR* Desc); #define error(Code) ReportError(Code, NULL)
void OpenLogFile(PCSTR File, BOOL Append); void fnLogOpen(BOOL Append); void fnLogClose(void); void lprintf(PCSTR Str);
PSTR PrepareImagePath(PSTR ImagePath);
CHAR* AddImage(PMODULE_INFO_ENTRY ModEntry, BOOL ForceSymbolLoad);
void DelImage( PPROCESS_INFO pProcess, PDEBUG_IMAGE_INFO pImage );
BOOL DelImageByName(PPROCESS_INFO Process, PCSTR Name, INAME Which); BOOL DelImageByBase(PPROCESS_INFO pProcess, ULONG64 Base); void DelImages(PPROCESS_INFO Process);
#define SYMADDR_FORCE 0x00000001
#define SYMADDR_LABEL 0x00000002
#define SYMADDR_SOURCE 0x00000004
void OutputSymAddr( ULONG64 Offset, ULONG Flags );
void OutputLineAddr( ULONG64 Offset, PCSTR Format );
LPSTR FormatMachineAddr64( MachineInfo* Machine, ULONG64 Addr ); #define FormatAddr64(Addr) FormatMachineAddr64(g_TargetMachine, Addr)
LPSTR FormatDisp64( ULONG64 addr );
//
// Output that can be displayed about the current register set.
//
void OutCurInfo(ULONG Flags, ULONG AllMask, ULONG RegMask);
// Items displayed if the flag is given.
// Display symbol nearest PC.
#define OCI_SYMBOL 0x00000001
// Display disassembly at PC.
#define OCI_DISASM 0x00000002
// Items which may be displayed if the flag is given. Other global
// settings ultimately control whether information is displayed or not;
// these flags indicate whether such output is allowed or not. Each
// of these flags also has a FORCE bit to force display regardless of
// the global settings.
// Allow registers to be displayed.
#define OCI_ALLOW_REG 0x00000004
// Allow display of source code and/or source line.
#define OCI_ALLOW_SOURCE 0x00000008
// Allow EA memory to be displayed during disasm.
#define OCI_ALLOW_EA 0x00000010
// Force all output to be shown regardless of global settings.
#define OCI_FORCE_ALL 0x80000000
// Force display of registers.
#define OCI_FORCE_REG 0x40000000
// Force source output.
#define OCI_FORCE_SOURCE 0x20000000
// Force display of EA memory during disasm.
#define OCI_FORCE_EA 0x10000000
// Don't check for running state.
#define OCI_IGNORE_STATE 0x08000000
BOOL __inline ConvertQwordsToDwords( PULONG64 Qwords, PULONG Dwords, ULONG Count ) { BOOL rval = TRUE; while (Count--) { rval = rval && (*Qwords >> 32) == 0; *Dwords++ = (ULONG)*Qwords++; } return rval; }
DWORD NetworkPathCheck( LPCSTR PathList );
#define ALL_ID_LIST 0xffffffff
ULONG GetIdList (void); HRESULT ChangePath(PSTR* Path, PCSTR New, BOOL Append, ULONG SymNotify); PSTR FindPathElement(PSTR Path, ULONG Element, PSTR* EltEnd); void CheckPath(PCSTR Path); HRESULT ChangeString(PSTR* Str, PULONG StrLen, PCSTR New);
BOOL LoadExecutableImageMemory(PDEBUG_IMAGE_INFO Image); BOOL UnloadExecutableImageMemory(PDEBUG_IMAGE_INFO Image);
void ExceptionRecordTo64(PEXCEPTION_RECORD Rec, PEXCEPTION_RECORD64 Rec64); void ExceptionRecord64To(PEXCEPTION_RECORD64 Rec64, PEXCEPTION_RECORD Rec); void MemoryBasicInformationTo64(PMEMORY_BASIC_INFORMATION Mbi, PMEMORY_BASIC_INFORMATION64 Mbi64); void MemoryBasicInformation32To64(PMEMORY_BASIC_INFORMATION32 Mbi32, PMEMORY_BASIC_INFORMATION64 Mbi64); void DebugEvent32To64(LPDEBUG_EVENT32 Event32, LPDEBUG_EVENT64 Event64);
LPSTR TimeToStr(ULONG TimeDateStamp);
PCSTR PathTail(PCSTR Path); BOOL MatchPathTails(PCSTR Path1, PCSTR Path2);
#endif // #ifndef _UTIL_H_
|