1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-07 19:18:19 +02:00
Beef/IDEHelper/DbgMiniDump.h
2022-07-26 13:27:03 -04:00

62 lines
1.3 KiB
C++

#pragma once
#include "DebugCommon.h"
#include "BeefySysLib/util/MappedFile.h"
#include "Beef/BfCommon.h"
NS_BF_BEGIN
enum DbgMiniDumpStreamType : uint32
{
DbgMiniDumpStreamType_ThreadList = 3,
DbgMiniDumpStreamType_ModuleList = 4,
DbgMiniDumpStreamType_MemoryLists = 5,
DbgMiniDumpStreamType_Exception = 6,
DbgMiniDumpStreamType_SystemInfo = 7,
DbgMiniDumpStreamType_ThreadEx = 8,
DbgMiniDumpStreamType_Memory64List = 9,
DbgMiniDumpStreamType_CommentA = 10,
DbgMiniDumpStreamType_CommentW = 11,
DbgMiniDumpStreamType_HandleData = 12,
DbgMiniDumpStreamType_FunctionTable = 13,
DbgMiniDumpStreamType_UnloadedModuleList = 14,
DbgMiniDumpStreamType_MiscInfo = 15,
DbgMiniDumpStreamType_MemoryInfoList = 16,
DbgMiniDumpStreamType_ThreadInfoList = 17,
DbgMiniDumpStreamType_HandleOperationList = 18
};
//MINIDUMP_SYSTEM_INFO
struct StreamDirectoryEntry
{
DbgMiniDumpStreamType mStreamType;
uint32 mDataSize;
uint32 mDataRVA;
};
class DbgMiniDump
{
public:
MappedFile mMF;
BfSizedArray<StreamDirectoryEntry> mDirectory;
public:
bool StartLoad(const StringImpl& path);
int GetTargetBitCount();
template <typename T>
T& GetStreamData(const StreamDirectoryEntry& entry)
{
return *(T*)((uint8*)mMF.mData + entry.mDataRVA);
}
template <typename T>
T& GetData(uint32 rva)
{
return *(T*)((uint8*)mMF.mData + rva);
}
};
NS_BF_END