public unsafe PeDebugDirectory GetDebugDirectory() {
ImageDebugDirectory debugDir = new ImageDebugDirectory();
uint pcData = 0;
this.SymWriter.GetDebugInfo(ref debugDir, 0, out pcData, IntPtr.Zero);
byte[] data = new byte[pcData];
fixed (byte* pb = data) {
this.SymWriter.GetDebugInfo(ref debugDir, pcData, out pcData, (IntPtr)pb);
}
PeDebugDirectory result = new PeDebugDirectory();
result.AddressOfRawData = (uint)debugDir.AddressOfRawData;
result.Characteristics = (uint)debugDir.Characteristics;
result.Data = data;
result.MajorVersion = (ushort)debugDir.MajorVersion;
result.MinorVersion = (ushort)debugDir.MinorVersion;
result.PointerToRawData = (uint)debugDir.PointerToRawData;
result.SizeOfData = (uint)debugDir.SizeOfData;
result.TimeDateStamp = (uint)debugDir.TimeDateStamp;
result.Type = (uint)debugDir.Type;
return result;
}