blob: 64477df96ff63dbea9df43d08b55e1ab3d83b2c7 [file] [log] [blame]
/**
* ...
*
* Copyright: Copyright Benjamin Thaut 2010 - 2011.
* License: Distributed under the
* $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0).
* (See accompanying file LICENSE)
* Authors: Benjamin Thaut, Sean Kelly
* Source: $(DRUNTIMESRC core/sys/windows/_dbghelp_types.d)
*/
module core.sys.windows.dbghelp_types;
version (Windows):
@system:
version (ANSI) {} else version = Unicode;
import core.sys.windows.windef;
import core.sys.windows.imagehlp /+: ADDRESS_MODE+/;
public import core.sys.windows.winnt : TCHAR;
/*
enum ADDRESS_MODE : DWORD
{
AddrMode1616 = 0,
AddrMode1632 = 1,
AddrModeReal = 2,
AddrModeFlat = 3,
}
*/
enum : DWORD
{
SYMOPT_DEFERRED_LOAD = 0x00000004,
SYMOPT_FAIL_CRITICAL_ERRORS = 0x00000200,
SYMOPT_LOAD_LINES = 0x00000010,
SYMOPT_DEBUG = 0x80000000,
}
enum : ULONG
{
CBA_READ_MEMORY = 0x00000006,
CBA_DEBUG_INFO = 0x10000000,
}
public import core.sys.windows.basetyps : GUID;
struct ADDRESS64
{
DWORD64 Offset;
WORD Segment;
ADDRESS_MODE Mode;
}
struct KDHELP64
{
DWORD64 Thread;
DWORD ThCallbackStack;
DWORD ThCallbackBStore;
DWORD NextCallback;
DWORD FramePointer;
DWORD64 KiCallUserMode;
DWORD64 KeUserCallbackDispatcher;
DWORD64 SystemRangeStart;
DWORD64 KiUserExceptionDispatcher;
DWORD64 StackBase;
DWORD64 StackLimit;
DWORD64[5] Reserved;
}
struct STACKFRAME64
{
ADDRESS64 AddrPC;
ADDRESS64 AddrReturn;
ADDRESS64 AddrFrame;
ADDRESS64 AddrStack;
ADDRESS64 AddrBStore;
PVOID FuncTableEntry;
DWORD64[4] Params;
BOOL Far;
BOOL Virtual;
DWORD64[3] Reserved;
KDHELP64 KdHelp;
}
public import core.sys.windows.winnt : IMAGE_FILE_MACHINE_I386, IMAGE_FILE_MACHINE_IA64, IMAGE_FILE_MACHINE_AMD64;
struct IMAGEHLP_LINEA64
{
DWORD SizeOfStruct;
PVOID Key;
DWORD LineNumber;
PCSTR FileName;
DWORD64 Address;
}
struct IMAGEHLP_LINEW64
{
DWORD SizeOfStruct;
PVOID Key;
DWORD LineNumber;
PWSTR FileName;
DWORD64 Address;
}
enum SYM_TYPE : int
{
SymNone = 0,
SymCoff,
SymCv,
SymPdb,
SymExport,
SymDeferred,
SymSym,
SymDia,
SymVirtual,
NumSymTypes,
}
struct IMAGEHLP_MODULEA64
{
DWORD SizeOfStruct;
DWORD64 BaseOfImage;
DWORD ImageSize;
DWORD TimeDateStamp;
DWORD CheckSum;
DWORD NumSyms;
SYM_TYPE SymType;
CHAR[32] ModuleName = 0;
CHAR[256] ImageName = 0;
CHAR[256] LoadedImageName = 0;
// new elements: 07-Jun-2002
version (none)
{
CHAR[256] LoadedPdbName = 0;
DWORD CVSig;
CHAR[MAX_PATH*3] CVData = 0;
DWORD PdbSig;
GUID PdbSig70;
DWORD PdbAge;
BOOL PdbUnmatched;
BOOL DbgUnmachted;
BOOL LineNumbers;
BOOL GlobalSymbols;
BOOL TypeInfo;
}
// new elements: 17-Dec-2003
version (none)
{
BOOL SourceIndexed;
BOOL Publics;
}
}
struct IMAGEHLP_MODULEW64
{
DWORD SizeOfStruct;
DWORD64 BaseOfImage;
DWORD ImageSize;
DWORD TimeDateStamp;
DWORD CheckSum;
DWORD NumSyms;
SYM_TYPE SymType;
WCHAR[32] ModuleName = 0;
WCHAR[256] ImageName = 0;
WCHAR[256] LoadedImageName = 0;
// new elements: 07-Jun-2002
version (none)
{
WCHAR[256] LoadedPdbName = 0;
DWORD CVSig;
WCHAR[MAX_PATH*3] CVData = 0;
DWORD PdbSig;
GUID PdbSig70;
DWORD PdbAge;
BOOL PdbUnmatched;
BOOL DbgUnmachted;
BOOL LineNumbers;
BOOL GlobalSymbols;
BOOL TypeInfo;
}
// new elements: 17-Dec-2003
version (none)
{
BOOL SourceIndexed;
BOOL Publics;
}
}
struct IMAGEHLP_SYMBOLA64
{
DWORD SizeOfStruct;
DWORD64 Address;
DWORD Size;
DWORD Flags;
DWORD MaxNameLength;
CHAR[1] Name = 0;
}
struct IMAGEHLP_SYMBOLW64
{
DWORD SizeOfStruct;
DWORD64 Address;
DWORD Size;
DWORD Flags;
DWORD MaxNameLength;
WCHAR[1] Name = 0;
}
struct IMAGEHLP_CBA_READ_MEMORY
{
DWORD64 addr;
PVOID buf;
DWORD bytes;
DWORD *bytesread;
}
struct API_VERSION
{
USHORT MajorVersion;
USHORT MinorVersion;
USHORT Revision;
USHORT Reserved;
}
version (Unicode)
{
alias IMAGEHLP_LINEW64 IMAGEHLP_LINE64;
alias IMAGEHLP_MODULEW64 IMAGEHLP_MODULE64;
alias IMAGEHLP_SYMBOLW64 IMAGEHLP_SYMBOL64;
}
else
{
alias IMAGEHLP_LINEA64 IMAGEHLP_LINE64;
alias IMAGEHLP_MODULEA64 IMAGEHLP_MODULE64;
alias IMAGEHLP_SYMBOLA64 IMAGEHLP_SYMBOL64;
}