/// <summary> /// Converts Portable PDB to Windows PDB. /// </summary> /// <param name="peReader">PE reader.</param> /// <param name="pdbReader">Portable PDB reader.</param> /// <param name="targetPdbStream">Target stream of Windows PDB data. Must be writable.</param> /// <param name="options">Conversion options.</param> /// <exception cref="ArgumentNullException"><paramref name="peReader"/>, <paramref name="pdbReader"/>, or <paramref name="targetPdbStream"/> is null.</exception> /// <exception cref="ArgumentException"><paramref name="targetPdbStream"/> does not support writing.</exception> /// <exception cref="BadImageFormatException">The format of the PE image or the source PDB image is invalid.</exception> /// <exception cref="InvalidDataException">The PDB doesn't match the CodeView Debug Directory record in the PE image.</exception> /// <exception cref="IOException">IO error while reading from or writing to a stream.</exception> /// <exception cref="ObjectDisposedException">Stream has been disposed while reading/writing.</exception> public void ConvertPortableToWindows(PEReader peReader, MetadataReader pdbReader, Stream targetPdbStream, PdbConversionOptions options = default(PdbConversionOptions)) { if (pdbReader == null) { throw new ArgumentNullException(nameof(pdbReader)); } StreamUtilities.ValidateStream(targetPdbStream, nameof(targetPdbStream), writeRequired: true); using (var pdbWriter = new SymUnmanagedWriter(peReader.GetMetadataReader())) { ConvertPortableToWindows(peReader, pdbReader, pdbWriter, options); pdbWriter.WriteTo(targetPdbStream); } }
/// <summary> /// Converts Portable PDB stream to Windows PDB. /// </summary> /// <param name="peReader">PE reader.</param> /// <param name="pdbReader">Portable PDB reader.</param> /// <param name="pdbWriter">PDB writer.</param> /// <param name="options">Conversion options.</param> /// <exception cref="ArgumentNullException"><paramref name="peReader"/>, <paramref name="pdbReader"/>, or <paramref name="pdbWriter"/> is null.</exception> /// <exception cref="BadImageFormatException">The format of the PE image or the source PDB image is invalid.</exception> /// <exception cref="InvalidDataException">The PDB doesn't match the CodeView Debug Directory record in the PE image.</exception> /// <exception cref="IOException">IO error while reading from or writing to a stream.</exception> public void ConvertPortableToWindows(PEReader peReader, MetadataReader pdbReader, SymUnmanagedWriter pdbWriter, PortablePdbConversionOptions options = null) { new PdbConverterPortableToWindows(_diagnosticReporterOpt).Convert( peReader ?? throw new ArgumentNullException(nameof(peReader)), pdbReader ?? throw new ArgumentNullException(nameof(pdbReader)), pdbWriter ?? throw new ArgumentNullException(nameof(pdbWriter)), options ?? PortablePdbConversionOptions.Default); }
public DelegatingSymUnmanagedWriter(SymUnmanagedWriter target) { _target = target; }