diff --git a/data/Memory-ng.xml b/data/Memory-ng.xml index 537e2a2da..b348abc33 100644 --- a/data/Memory-ng.xml +++ b/data/Memory-ng.xml @@ -2329,6 +2329,12 @@ + + + + + + diff --git a/library/VersionInfoFactory.cpp b/library/VersionInfoFactory.cpp index 3aa3d924c..e41923f4a 100644 --- a/library/VersionInfoFactory.cpp +++ b/library/VersionInfoFactory.cpp @@ -172,8 +172,6 @@ void VersionInfoFactory::ParseOffsets(TiXmlElement * parent, VersionInfo* target TiXmlElement* pEntry; // we get the , look at the children pEntry = parent->FirstChildElement(); - if(!pEntry) - return; const char *cstr_invalid = parent->Attribute("valid"); INVAL_TYPE parent_inval = NOT_SET; if(cstr_invalid) @@ -185,6 +183,11 @@ void VersionInfoFactory::ParseOffsets(TiXmlElement * parent, VersionInfo* target } OffsetGroup * currentGroup = reinterpret_cast (target); currentGroup->setInvalid(parent_inval); + + // we end here if there are no child tags. + if(!pEntry) + return; + breadcrumbs.push_back(groupTriple(pEntry,currentGroup, parent_inval)); } diff --git a/library/private/Internal.h b/library/private/Internal.h index 4c913f8fe..8a6ad69b0 100644 --- a/library/private/Internal.h +++ b/library/private/Internal.h @@ -82,54 +82,54 @@ using namespace std; #include #include #include - #pragma comment(lib,"ntdll.lib") - #pragma comment(lib,"psapi.lib") - typedef LONG NTSTATUS; - #define STATUS_SUCCESS ((NTSTATUS)0x00000000L) - - typedef struct _DEBUG_BUFFER { - HANDLE SectionHandle; - PVOID SectionBase; - PVOID RemoteSectionBase; - ULONG SectionBaseDelta; - HANDLE EventPairHandle; - ULONG Unknown[2]; - HANDLE RemoteThreadHandle; - ULONG InfoClassMask; - ULONG SizeOfInfo; - ULONG AllocatedSize; - ULONG SectionSize; - PVOID ModuleInformation; - PVOID BackTraceInformation; - PVOID HeapInformation; - PVOID LockInformation; - PVOID Reserved[8]; - } DEBUG_BUFFER, *PDEBUG_BUFFER; - - typedef struct _DEBUG_HEAP_INFORMATION - { - ULONG Base; // 0×00 - ULONG Flags; // 0×04 - USHORT Granularity; // 0×08 - USHORT Unknown; // 0x0A - ULONG Allocated; // 0x0C - ULONG Committed; // 0×10 - ULONG TagCount; // 0×14 - ULONG BlockCount; // 0×18 - ULONG Reserved[7]; // 0x1C - PVOID Tags; // 0×38 - PVOID Blocks; // 0x3C - } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION; - - // RtlQueryProcessDebugInformation.DebugInfoClassMask constants - #define PDI_MODULES 0x01 - #define PDI_BACKTRACE 0x02 - #define PDI_HEAPS 0x04 - #define PDI_HEAP_TAGS 0x08 - #define PDI_HEAP_BLOCKS 0x10 - #define PDI_LOCKS 0x20 - - extern "C" __declspec(dllimport) NTSTATUS __stdcall RtlQueryProcessDebugInformation( IN ULONG ProcessId, IN ULONG DebugInfoClassMask, IN OUT PDEBUG_BUFFER DebugBuffer); + typedef LONG NTSTATUS; + #define STATUS_SUCCESS ((NTSTATUS)0x00000000L) + + // FIXME: it is uncertain how these map to 64bit + typedef struct _DEBUG_BUFFER + { + HANDLE SectionHandle; + PVOID SectionBase; + PVOID RemoteSectionBase; + ULONG SectionBaseDelta; + HANDLE EventPairHandle; + ULONG Unknown[2]; + HANDLE RemoteThreadHandle; + ULONG InfoClassMask; + ULONG SizeOfInfo; + ULONG AllocatedSize; + ULONG SectionSize; + PVOID ModuleInformation; + PVOID BackTraceInformation; + PVOID HeapInformation; + PVOID LockInformation; + PVOID Reserved[8]; + } DEBUG_BUFFER, *PDEBUG_BUFFER; + + typedef struct _DEBUG_HEAP_INFORMATION + { + ULONG Base; // 0×00 + ULONG Flags; // 0×04 + USHORT Granularity; // 0×08 + USHORT Unknown; // 0x0A + ULONG Allocated; // 0x0C + ULONG Committed; // 0×10 + ULONG TagCount; // 0×14 + ULONG BlockCount; // 0×18 + ULONG Reserved[7]; // 0x1C + PVOID Tags; // 0×38 + PVOID Blocks; // 0x3C + } DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION; + + // RtlQueryProcessDebugInformation.DebugInfoClassMask constants + #define PDI_MODULES 0x01 + #define PDI_BACKTRACE 0x02 + #define PDI_HEAPS 0x04 + #define PDI_HEAP_TAGS 0x08 + #define PDI_HEAP_BLOCKS 0x10 + #define PDI_LOCKS 0x20 + + extern "C" __declspec(dllimport) NTSTATUS __stdcall RtlQueryProcessDebugInformation( IN ULONG ProcessId, IN ULONG DebugInfoClassMask, IN OUT PDEBUG_BUFFER DebugBuffer); extern "C" __declspec(dllimport) PDEBUG_BUFFER __stdcall RtlCreateQueryDebugBuffer( IN ULONG Size, IN BOOLEAN EventPair); extern "C" __declspec(dllimport) NTSTATUS __stdcall RtlDestroyQueryDebugBuffer( IN PDEBUG_BUFFER DebugBuffer); #endif