|
|
/*++
Copyright (c) 1998-1999 Microsoft Corporation All rights reserved.
Module Name:
dbgimage.hxx
Abstract:
Debug imagehlp header file.
Author:
Steve Kiraly (SteveKi) 17-May-1998
Revision History:
--*/ #ifndef _DBGIMAGE_HXX_
#define _DBGIMAGE_HXX_
DEBUG_NS_BEGIN
class TDebugImagehlp {
public:
enum EDecoration { kDecorateName, kUnDecorateName, };
TDebugImagehlp:: TDebugImagehlp( VOID );
TDebugImagehlp:: ~TDebugImagehlp( VOID );
BOOL TDebugImagehlp:: bValid( VOID );
BOOL TDebugImagehlp:: bCaptureBacktrace( IN UINT cFramesToSkipped, IN ULONG uMaxBacktraceDepth, OUT VOID **apvBacktrace, OUT ULONG *pulHash );
BOOL TDebugImagehlp:: ResolveAddressToSymbol( IN PVOID pvAddress, IN LPTSTR pszName, IN UINT cchNameLength, IN EDecoration eDecorateType );
BOOL TDebugImagehlp:: GetSymbolPath( IN TDebugString &strSymbolPath ) const;
BOOL TDebugImagehlp:: SetSymbolPath( IN LPCTSTR pszSymbolPath );
private:
enum Constants { kMaxSymbolNameLength = 512, };
typedef BOOL (WINAPI *pfSymGetModuleInfo)( IN HANDLE hProcess, IN DWORD_PTR dwAddr, OUT PIMAGEHLP_MODULE ModuleInfo );
typedef LPVOID (WINAPI *pfSymFunctionTableAccess)( IN HANDLE hProcess, IN DWORD_PTR AddrBase );
typedef DWORD_PTR (WINAPI *pfSymGetModuleBase)( IN HANDLE hProcess, IN DWORD_PTR dwAddr );
typedef BOOL (WINAPI *pfStackWalk)( IN DWORD MachineType, IN HANDLE hProcess, IN HANDLE hThread, IN LPSTACKFRAME StackFrame, IN LPVOID ContextRecord, IN PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine, IN PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine, IN PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine, IN PTRANSLATE_ADDRESS_ROUTINE TranslateAddress );
typedef BOOL (WINAPI *pfSymInitialize)( IN HANDLE hProcess, IN LPSTR UserSearchPath, IN BOOL fInvadeProcess );
typedef DWORD (WINAPI *pfSymSetOptions)( IN DWORD SymOptions );
typedef BOOL (WINAPI *pfSymGetSymFromAddr)( IN HANDLE hProcess, IN DWORD_PTR dwAddr, OUT PDWORD pdwDisplacement, OUT PIMAGEHLP_SYMBOL Symbol );
typedef BOOL (WINAPI *pfSymUnDName)( IN PIMAGEHLP_SYMBOL sym, OUT LPSTR UnDecName, IN DWORD UnDecNameLength );
typedef BOOL (WINAPI *pfSymGetSearchPath)( IN HANDLE hProcess, OUT PSTR SearchPath, IN DWORD SearchPathLength );
typedef BOOL (WINAPI *pfSymSetSearchPath)( IN HANDLE hProcess, IN PSTR SearchPath );
//
// Copying and assignment are not defined.
//
TDebugImagehlp:: TDebugImagehlp( const TDebugImagehlp &rhs );
const TDebugImagehlp & TDebugImagehlp:: operator=( const TDebugImagehlp &rhs );
pfSymGetModuleInfo _pfSymGetModuleInfo; pfSymFunctionTableAccess _pfSymFunctionTableAccess; pfSymGetModuleBase _pfSymGetModuleBase; pfStackWalk _pfStackWalk; pfSymInitialize _pfSymInitialize; pfSymSetOptions _pfSymSetOptions; pfSymGetSymFromAddr _pfSymGetSymFromAddr; pfSymUnDName _pfSymUnDName; pfSymGetSearchPath _pfSymGetSearchPath; pfSymSetSearchPath _pfSymSetSearchPath;
TDebugLibrary _ImageHlp; BOOL _bValid; LPTSTR _pszSymbolFormatSpecifier;
};
DEBUG_NS_END
#endif
|