#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;
|
};
|
}
|
}
|