// dnlib: See LICENSE.txt for more info using dnlib.IO; namespace dnlib.DotNet.MD { /// /// #Pdb stream /// public sealed class PdbStream : HeapStream { /// /// Gets the PDB id /// public byte[] Id { get; private set; } /// /// Gets the entry point token or 0 /// public MDToken EntryPoint { get; private set; } /// /// Gets the referenced type system tables in the PE metadata file /// public ulong ReferencedTypeSystemTables { get; private set; } /// /// Gets all type system table rows. This array has exactly 64 elements. /// public uint[] TypeSystemTableRows { get; private set; } /// public PdbStream(DataReaderFactory mdReaderFactory, uint metadataBaseOffset, StreamHeader streamHeader) : base(mdReaderFactory, metadataBaseOffset, streamHeader) { var reader = CreateReader(); Id = reader.ReadBytes(20); EntryPoint = new MDToken(reader.ReadUInt32()); var tables = reader.ReadUInt64(); ReferencedTypeSystemTables = tables; var rows = new uint[64]; for (int i = 0; i < rows.Length; i++, tables >>= 1) { if (((uint)tables & 1) != 0) rows[i] = reader.ReadUInt32(); } TypeSystemTableRows = rows; } } }