Files
T

117 lines
2.2 KiB
C++
Raw Normal View History

2026-07-17 14:03:00 +08:00
#pragma once
#include "../CommonDef.h"
namespace hybridclr
{
namespace metadata
{
struct PEHeader
{
uint16_t matchine;
uint16_t sections;
uint32_t timestamp;
uint32_t ptrSymbolTable;
uint32_t numSymbols;
uint16_t optionalHeadersize;
uint16_t characteristics;
};
struct PEDirEntry
{
uint32_t rva;
uint32_t size;
};
struct CLIHeader
{
uint32_t cb;
uint16_t majorRuntimeVersion;
uint16_t minorRuntimeVersion;
PEDirEntry metaData;
uint32_t flags;
uint32_t entryPointToken;
PEDirEntry resources;
uint64_t strongNameSignature;
uint64_t codeManagerTable;
uint64_t vTableFixups;
uint64_t exportAddressTableJumps;
uint64_t managedNativeHeader;
};
struct PESectionHeader
{
char name[8];
uint32_t virtualSize;
uint32_t virtualAddress;
uint32_t sizeOfRawData;
uint32_t ptrRawData;
uint32_t ptrRelocations;
uint32_t ptrLineNumbers;
uint16_t numRelocation;
uint16_t numLineNumber;
uint32_t characteristics;
};
struct MetadataRootPartial
{
uint32_t signature;
uint16_t majorVersion;
uint16_t minorVersion;
uint32_t reserved;
uint32_t length;
byte versionFirstByte;
};
struct StreamHeader
{
uint32_t offset;
uint32_t size;
char name[1];
};
struct TableStreamHeader
{
uint32_t reserved;
uint8_t majorVersion;
uint8_t minorVersion;
uint8_t heapSizes;
uint8_t reserved2;
uint64_t valid;
uint64_t sorted;
uint32_t rows[1];
// tables;
};
struct CliStream
{
const char* name;
const byte* data;
uint32_t size;
};
struct UserString
{
const char* data;
uint32_t size;
uint8_t flags;
};
struct Blob
{
const byte* data;
uint32_t size;
};
struct Table
{
const byte* data;
uint32_t rowMetaDataSize;
uint32_t rowNum;
bool vaild;
bool sorted;
};
}
}