Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

183 lines
4.7 KiB

//----------------------------------------------------------------------------
//
// 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_