📄 jclmetadata.pas
字号:
private
function GetRow(const Idx: Integer): TJclClrTableConstantRow;
protected
class function TableRowClass: TJclClrTableRowClass; override;
public
property Rows[const Idx: Integer]: TJclClrTableConstantRow read GetRow; default;
end;
TJclClrTableCustomAttributeRow = class(TJclClrTableRow)
private
FParentIdx: DWORD;
FTypeIdx: DWORD;
FValueOffset: DWORD;
function GetValue: TJclClrBlobRecord;
function GetParent: TJclClrTableRow;
function GetMethod: TJclClrTableRow;
protected
constructor Create(const ATable: TJclClrTable); override;
public
function DumpIL: string; override;
property ParentIdx: DWORD read FParentIdx;
property TypeIdx: DWORD read FTypeIdx;
property ValueOffset: DWORD read FValueOffset;
property Parent: TJclClrTableRow read GetParent;
property Method: TJclClrTableRow read GetMethod;
property Value: TJclClrBlobRecord read GetValue;
end;
TJclClrTableCustomAttribute = class(TJclClrTable)
private
function GetRow(const Idx: Integer): TJclClrTableCustomAttributeRow;
protected
class function TableRowClass: TJclClrTableRowClass; override;
public
property Rows[const Idx: Integer]: TJclClrTableCustomAttributeRow read GetRow; default;
end;
TJclClrTableDeclSecurityRow = class(TJclClrTableRow)
private
FPermissionSetOffset: DWORD;
FParentIdx: DWORD;
FAction: Word;
protected
constructor Create(const ATable: TJclClrTable); override;
public
property Action: Word read FAction;
property ParentIdx: DWORD read FParentIdx;
property PermissionSetOffset: DWORD read FPermissionSetOffset;
end;
TJclClrTableDeclSecurity = class(TJclClrTable)
private
function GetRow(const Idx: Integer): TJclClrTableDeclSecurityRow;
protected
class function TableRowClass: TJclClrTableRowClass; override;
public
property Rows[const Idx: Integer]: TJclClrTableDeclSecurityRow read GetRow; default;
end;
TJclClrTableEventMapRow = class(TJclClrTableRow)
private
FEventListIdx: DWORD;
FParentIdx: DWORD;
protected
constructor Create(const ATable: TJclClrTable); override;
public
property ParentIdx: DWORD read FParentIdx;
property EventListIdx: DWORD read FEventListIdx;
end;
TJclClrTableEventMap = class(TJclClrTable)
private
function GetRow(const Idx: Integer): TJclClrTableEventMapRow;
protected
class function TableRowClass: TJclClrTableRowClass; override;
public
property Rows[const Idx: Integer]: TJclClrTableEventMapRow read GetRow; default;
end;
TJclClrTableEventFlag = (efSpecialName, efRTSpecialName);
TJclClrTableEventFlags = set of TJclClrTableEventFlag;
TJclClrTableEventDefRow = class(TJclClrTableRow)
private
FNameOffset: DWORD;
FEventTypeIdx: DWORD;
FEventFlags: Word;
function GetName: WideString;
protected
constructor Create(const ATable: TJclClrTable); override;
public
property EventFlags: Word read FEventFlags;
property NameOffset: DWORD read FNameOffset;
property EventTypeIdx: DWORD read FEventTypeIdx;
property Name: WideString read GetName;
end;
TJclClrTableEventDef = class(TJclClrTable)
private
function GetRow(const Idx: Integer): TJclClrTableEventDefRow;
protected
class function TableRowClass: TJclClrTableRowClass; override;
public
property Rows[const Idx: Integer]: TJclClrTableEventDefRow read GetRow; default;
end;
TJclClrTableExportedTypeRow = class(TJclClrTableRow)
private
FTypeDefIdx: DWORD;
FFlags: DWORD;
FImplementationIdx: DWORD;
FTypeNamespaceOffset: DWORD;
FTypeNameOffset: DWORD;
function GetTypeName: WideString;
function GetTypeNamespace: WideString;
protected
constructor Create(const ATable: TJclClrTable); override;
public
property Flags: DWORD read FFlags;
property TypeDefIdx: DWORD read FTypeDefIdx;
property TypeNameOffset: DWORD read FTypeNameOffset;
property TypeNamespaceOffset: DWORD read FTypeNamespaceOffset;
property ImplementationIdx: DWORD read FImplementationIdx;
property TypeName: WideString read GetTypeName;
property TypeNamespace: WideString read GetTypeNamespace;
end;
TJclClrTableEventPtrRow = class(TJclClrTableRow)
private
FEventIdx: DWORD;
function GetEvent: TJclClrTableEventDefRow;
protected
constructor Create(const ATable: TJclClrTable); override;
public
property EventIdx: DWORD read FEventIdx;
property Event: TJclClrTableEventDefRow read GetEvent;
end;
TJclClrTableEventPtr = class(TJclClrTable)
private
function GetRow(const Idx: Integer): TJclClrTableEventPtrRow;
protected
class function TableRowClass: TJclClrTableRowClass; override;
public
property Rows[const Idx: Integer]: TJclClrTableEventPtrRow read GetRow; default;
end;
TJclClrTableExportedType = class(TJclClrTable)
private
function GetRow(const Idx: Integer): TJclClrTableExportedTypeRow;
protected
class function TableRowClass: TJclClrTableRowClass; override;
public
property Rows[const Idx: Integer]: TJclClrTableExportedTypeRow read GetRow; default;
end;
TJclClrTableTypeDefRow = class;
TJclClrTableFieldDefVisibility =
(fvPrivateScope, fvPrivate, fvFamANDAssem,
fvAssembly, fvFamily, fvFamORAssem, fvPublic);
TJclClrTableFieldDefFlag =
(ffStatic, ffInitOnly, ffLiteral, ffNotSerialized,
ffSpecialName, ffPinvokeImpl, ffRTSpecialName,
ffHasFieldMarshal, ffHasDefault, ffHasFieldRVA);
TJclClrTableFieldDefFlags = set of TJclClrTableFieldDefFlag;
TJclClrTableFieldDefRow = class(TJclClrTableRow)
private
FFlags: Word;
FNameOffset: DWORD;
FSignatureOffset: DWORD;
FParentToken: TJclClrTableTypeDefRow;
function GetName: WideString;
function GetSignature: TJclClrBlobRecord;
function GetFlag: TJclClrTableFieldDefFlags;
function GetVisibility: TJclClrTableFieldDefVisibility;
protected
constructor Create(const ATable: TJclClrTable); override;
procedure SetParentToken(const ARow: TJclClrTableTypeDefRow);
public
function DumpIL: string; override;
property RawFlags: Word read FFlags;
property NameOffset: DWORD read FNameOffset;
property SignatureOffset: DWORD read FSignatureOffset;
property Name: WideString read GetName;
property Signature: TJclClrBlobRecord read GetSignature;
property ParentToken: TJclClrTableTypeDefRow read FParentToken;
property Visibility: TJclClrTableFieldDefVisibility read GetVisibility;
property Flags: TJclClrTableFieldDefFlags read GetFlag;
end;
TJclClrTableFieldDef = class(TJclClrTable)
private
function GetRow(const Idx: Integer): TJclClrTableFieldDefRow;
protected
class function TableRowClass: TJclClrTableRowClass; override;
public
property Rows[const Idx: Integer]: TJclClrTableFieldDefRow read GetRow; default;
end;
TJclClrTableFieldPtrRow = class(TJclClrTableRow)
private
FFieldIdx: DWORD;
function GetField: TJclClrTableFieldDefRow;
protected
constructor Create(const ATable: TJclClrTable); override;
public
property FieldIdx: DWORD read FFieldIdx;
property Field: TJclClrTableFieldDefRow read GetField;
end;
TJclClrTableFieldPtr = class(TJclClrTable)
private
function GetRow(const Idx: Integer): TJclClrTableFieldPtrRow;
protected
class function TableRowClass: TJclClrTableRowClass; override;
public
property Rows[const Idx: Integer]: TJclClrTableFieldPtrRow read GetRow; default;
end;
TJclClrTableFieldLayoutRow = class(TJclClrTableRow)
private
FOffset: DWORD;
FFieldIdx: DWORD;
protected
constructor Create(const ATable: TJclClrTable); override;
public
property Offset: DWORD read FOffset;
property FieldIdx: DWORD read FFieldIdx;
end;
TJclClrTableFieldLayout = class(TJclClrTable)
private
function GetRow(const Idx: Integer): TJclClrTableFieldLayoutRow;
protected
class function TableRowClass: TJclClrTableRowClass; override;
public
property Rows[const Idx: Integer]: TJclClrTableFieldLayoutRow read GetRow; default;
end;
TJclClrTableFieldMarshalRow = class(TJclClrTableRow)
private
FParentIdx: DWORD;
FNativeTypeOffset: DWORD;
protected
constructor Create(const ATable: TJclClrTable); override;
public
property ParentIdx: DWORD read FParentIdx;
property NativeTypeOffset: DWORD read FNativeTypeOffset;
end;
TJclClrTableFieldMarshal = class(TJclClrTable)
private
function GetRow(const Idx: Integer): TJclClrTableFieldMarshalRow;
protected
class function TableRowClass: TJclClrTableRowClass; override;
public
property Rows[const Idx: Integer]: TJclClrTableFieldMarshalRow read GetRow; default;
end;
TJclClrTableFieldRVARow = class(TJclClrTableRow)
private
FRVA: DWORD;
FFieldIdx: DWORD;
protected
constructor Create(const ATable: TJclClrTable); override;
public
property RVA: DWORD read FRVA;
property FieldIdx: DWORD read FFieldIdx;
end;
TJclClrTableFieldRVA = class(TJclClrTable)
private
function GetRow(const Idx: Integer): TJclClrTableFieldRVARow;
protected
class function TableRowClass: TJclClrTableRowClass; override;
public
property Rows[const Idx: Integer]: TJclClrTableFieldRVARow read GetRow; default;
end;
TJclClrTableFileRow = class(TJclClrTableRow)
private
FHashValueOffset: DWORD;
FNameOffset: DWORD;
FFlags: DWORD;
function GetName: WideString;
function GetHashValue: TJclClrBlobRecord;
function GetContainsMetadata: Boolean;
protected
constructor Create(const ATable: TJclClrTable); override;
public
function DumpIL: string; override;
property Flags: DWORD read FFlags;
property NameOffset: DWORD read FNameOffset;
property HashValueOffset: DWORD read FHashValueOffset;
property Name: WideString read GetName;
property HashValue: TJclClrBlobRecord read GetHashValue;
property ContainsMetadata: Boolean read GetContainsMetadata;
end;
TJclClrTableFile = class(TJclClrTable, ITableCanDumpIL)
private
function GetRow(const Idx: Integer): TJclClrTableFileRow;
protected
class function TableRowClass: TJclClrTableRowClass; override;
public
property Rows[const Idx: Integer]: TJclClrTableFileRow read GetRow; default;
end;
TJclClrTableImplMapRow = class(TJclClrTableRow)
private
FImportNameOffset: DWORD;
FMemberForwardedIdx: DWORD;
FImportScopeIdx: DWORD;
FMappingFlags: Word;
function GetImportName: WideString;
protected
constructor Create(const ATable: TJclClrTable); override;
public
property MappingFlags: Word read FMappingFlags;
property MemberForwardedIdx: DWORD read FMemberForwardedIdx;
property ImportNameOffset: DWORD read FImportNameOffset;
property ImportScopeIdx: DWORD read FImportScopeIdx;
property ImportName: WideString read GetImportName;
end;
TJclClrTableImplMap = class(TJclClrTable)
private
function GetRow(const Idx: Integer): TJclClrTableImplMapRow;
protected
class function TableRowClass: TJclClrTableRowClass; override;
public
property Rows[const Idx: Integer]: TJclClrTableImplMapRow read GetRow; default;
end;
TJclClrTableInterfaceImplRow = class(TJclClrTableRow)
private
FInterfaceIdx: DWORD;
FClassIdx: DWORD;
function GetImplClass: TJclClrTableRow;
function GetImplInterface: TJclClrTableRow;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -