Skip to content

ReadyToRunInfo

Namespace: Dotsider.Core.Analysis.Models

Assembly: Dotsider.Core.dll

The parsed facts about a PE image’s crossgen2 ReadyToRun header. Present whenever an image claims to be ReadyToRun (a managed native header directory or an RTR_HEADER export); Status says whether it is usable, so a corrupt or unsupported image surfaces its diagnostic rather than masquerading as plain managed.

public sealed record ReadyToRunInfo : IEquatable<ReadyToRunInfo>

ObjectReadyToRunInfo

ReadyToRunInfo(uint, int, int, uint, bool, bool, bool, int, int, ReadyToRunStatus, string?, NativeArchitecture, string?, IReadOnlyList<ReadyToRunSectionEntry>, IReadOnlyList<ReadyToRunComponent>, int, int)

Section titled “ReadyToRunInfo(uint, int, int, uint, bool, bool, bool, int, int, ReadyToRunStatus, string?, NativeArchitecture, string?, IReadOnlyList<ReadyToRunSectionEntry>, IReadOnlyList<ReadyToRunComponent>, int, int)”

The parsed facts about a PE image’s crossgen2 ReadyToRun header. Present whenever an image claims to be ReadyToRun (a managed native header directory or an RTR_HEADER export); Status says whether it is usable, so a corrupt or unsupported image surfaces its diagnostic rather than masquerading as plain managed.

Parameters:

  • Signature (UInt32): The header signature dword (expected 0x00525452, “RTR\0”).
  • MajorVersion (Int32): The ReadyToRun major version.
  • MinorVersion (Int32): The ReadyToRun minor version.
  • Flags (UInt32): The raw ReadyToRunFlags bitmask.
  • IsComposite (Boolean): Whether this image is a composite (its native code covers several component assemblies).
  • IsComponent (Boolean): Whether this image is a composite component (READYTORUN_FLAG_COMPONENT).
  • IsPartialImage (Boolean): Whether not every method is precompiled (READYTORUN_FLAG_PARTIAL) — a coverage flag, distinct from Status.
  • HeaderRva (Int32): The RVA the header was located at.
  • SectionCount (Int32): The number of rows in the section table.
  • Status (ReadyToRunStatus): The parse status.
  • Diagnostic (String): A human-readable explanation when the status is not Valid, otherwise null.
  • Architecture (NativeArchitecture): The image’s real machine architecture.
  • OwnerCompositeExecutable (String): For a component image, the filename of the composite that holds its native code, otherwise null.
  • Sections (IReadOnlyList<ReadyToRunSectionEntry>): The section table rows.
  • Components (IReadOnlyList<ReadyToRunComponent>): The composite component assemblies, empty for a non-composite image.
  • MethodCount (Int32): The number of MethodDef entry points.
  • InstanceMethodCount (Int32): The number of instantiated-generic entry points.
public ReadyToRunInfo(uint Signature, int MajorVersion, int MinorVersion, uint Flags, bool IsComposite, bool IsComponent, bool IsPartialImage, int HeaderRva, int SectionCount, ReadyToRunStatus Status, string? Diagnostic, NativeArchitecture Architecture, string? OwnerCompositeExecutable, IReadOnlyList<ReadyToRunSectionEntry> Sections, IReadOnlyList<ReadyToRunComponent> Components, int MethodCount, int InstanceMethodCount)

The image’s real machine architecture.

Returns: NativeArchitecture

public NativeArchitecture Architecture { get; init; }

The composite component assemblies, empty for a non-composite image.

Returns: IReadOnlyList<ReadyToRunComponent>

public IReadOnlyList<ReadyToRunComponent> Components { get; init; }

A human-readable explanation when the status is not Valid, otherwise null.

Returns: String

public string? Diagnostic { get; init; }

The raw ReadyToRunFlags bitmask.

Returns: UInt32

public uint Flags { get; init; }

The RVA the header was located at.

Returns: Int32

public int HeaderRva { get; init; }

The number of instantiated-generic entry points.

Returns: Int32

public int InstanceMethodCount { get; init; }

Whether this image is a composite component (READYTORUN_FLAG_COMPONENT).

Returns: Boolean

public bool IsComponent { get; init; }

Whether this image is a composite (its native code covers several component assemblies).

Returns: Boolean

public bool IsComposite { get; init; }

Whether not every method is precompiled (READYTORUN_FLAG_PARTIAL) — a coverage flag, distinct from Status.

Returns: Boolean

public bool IsPartialImage { get; init; }

The ReadyToRun major version.

Returns: Int32

public int MajorVersion { get; init; }

The number of MethodDef entry points.

Returns: Int32

public int MethodCount { get; init; }

The ReadyToRun minor version.

Returns: Int32

public int MinorVersion { get; init; }

For a component image, the filename of the composite that holds its native code, otherwise null.

Returns: String

public string? OwnerCompositeExecutable { get; init; }

The number of rows in the section table.

Returns: Int32

public int SectionCount { get; init; }

The section table rows.

Returns: IReadOnlyList<ReadyToRunSectionEntry>

public IReadOnlyList<ReadyToRunSectionEntry> Sections { get; init; }

The header signature dword (expected 0x00525452, “RTR\0”).

Returns: UInt32

public uint Signature { get; init; }

The parse status.

Returns: ReadyToRunStatus

public ReadyToRunStatus Status { get; init; }

Deconstruct(out uint, out int, out int, out uint, out bool, out bool, out bool, out int, out int, out ReadyToRunStatus, out string?, out NativeArchitecture, out string?, out IReadOnlyList<ReadyToRunSectionEntry>, out IReadOnlyList<ReadyToRunComponent>, out int, out int)

Section titled “Deconstruct(out uint, out int, out int, out uint, out bool, out bool, out bool, out int, out int, out ReadyToRunStatus, out string?, out NativeArchitecture, out string?, out IReadOnlyList<ReadyToRunSectionEntry>, out IReadOnlyList<ReadyToRunComponent>, out int, out int)”

Parameters:

public void Deconstruct(out uint Signature, out int MajorVersion, out int MinorVersion, out uint Flags, out bool IsComposite, out bool IsComponent, out bool IsPartialImage, out int HeaderRva, out int SectionCount, out ReadyToRunStatus Status, out string? Diagnostic, out NativeArchitecture Architecture, out string? OwnerCompositeExecutable, out IReadOnlyList<ReadyToRunSectionEntry> Sections, out IReadOnlyList<ReadyToRunComponent> Components, out int MethodCount, out int InstanceMethodCount)

Parameters:

Returns: Boolean

public override bool Equals(object? obj)

Parameters:

Returns: Boolean

public bool Equals(ReadyToRunInfo? other)

Returns: Int32

public override int GetHashCode()

Returns: String

public override string ToString()

operator !=(ReadyToRunInfo?, ReadyToRunInfo?)

Section titled “operator !=(ReadyToRunInfo?, ReadyToRunInfo?)”

Parameters:

Returns: Boolean

public static bool operator !=(ReadyToRunInfo? left, ReadyToRunInfo? right)

operator ==(ReadyToRunInfo?, ReadyToRunInfo?)

Section titled “operator ==(ReadyToRunInfo?, ReadyToRunInfo?)”

Parameters:

Returns: Boolean

public static bool operator ==(ReadyToRunInfo? left, ReadyToRunInfo? right)