/// <summary> /// Reads a .NET directory from an input stream. /// </summary> /// <param name="peFile">The PE file containing the .NET directory.</param> /// <param name="reader">The input stream.</param> /// <param name="metadataStreamReader"></param> /// <exception cref="ArgumentNullException">Occurs when any of the arguments are <c>null</c>.</exception> public SerializedDotNetDirectory(IPEFile peFile, IBinaryStreamReader reader, IMetadataStreamReader metadataStreamReader) { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } _peFile = peFile ?? throw new ArgumentNullException(nameof(peFile)); _metadataStreamReader = metadataStreamReader; Offset = reader.Offset; uint cb = reader.ReadUInt32(); MajorRuntimeVersion = reader.ReadUInt16(); MinorRuntimeVersion = reader.ReadUInt16(); _metadataDirectory = DataDirectory.FromReader(reader); Flags = (DotNetDirectoryFlags)reader.ReadUInt32(); Entrypoint = reader.ReadUInt32(); _resourcesDirectory = DataDirectory.FromReader(reader); _strongNameDirectory = DataDirectory.FromReader(reader); _codeManagerDirectory = DataDirectory.FromReader(reader); _vtableFixupsDirectory = DataDirectory.FromReader(reader); _exportsDirectory = DataDirectory.FromReader(reader); _nativeHeaderDirectory = DataDirectory.FromReader(reader); }
/// <summary> /// Reads a .NET directory from an input stream. /// </summary> /// <param name="context">The reader context.</param> /// <param name="reader">The input stream.</param> /// <exception cref="ArgumentNullException">Occurs when any of the arguments are <c>null</c>.</exception> public SerializedDotNetDirectory(PEReaderContext context, ref BinaryStreamReader reader) { _context = context ?? throw new ArgumentNullException(nameof(context)); Offset = reader.Offset; uint cb = reader.ReadUInt32(); MajorRuntimeVersion = reader.ReadUInt16(); MinorRuntimeVersion = reader.ReadUInt16(); _metadataDirectory = DataDirectory.FromReader(ref reader); Flags = (DotNetDirectoryFlags)reader.ReadUInt32(); Entrypoint = reader.ReadUInt32(); _resourcesDirectory = DataDirectory.FromReader(ref reader); _strongNameDirectory = DataDirectory.FromReader(ref reader); _codeManagerDirectory = DataDirectory.FromReader(ref reader); _vtableFixupsDirectory = DataDirectory.FromReader(ref reader); _exportsDirectory = DataDirectory.FromReader(ref reader); _nativeHeaderDirectory = DataDirectory.FromReader(ref reader); }