public static MINIDUMP_SYSTEM_INFO Parse(BinaryReader fileBinaryReader) { MINIDUMP_SYSTEM_INFO msi = new MINIDUMP_SYSTEM_INFO(); //msi.ProcessorArchitecture = Helpers.ReadUInt16(fileBinaryReader); msi.ProcessorArchitecture = (PROCESSOR_ARCHITECTURE)Enum.Parse(typeof(PROCESSOR_ARCHITECTURE), Enum.GetName(typeof(PROCESSOR_ARCHITECTURE), (int)Helpers.ReadUInt16(fileBinaryReader))); msi.ProcessorLevel = Helpers.ReadUInt16(fileBinaryReader); msi.ProcessorRevision = Helpers.ReadUInt16(fileBinaryReader); //the below field is present in the documentation from MSDN, however is not present in the actual dump //msi.Reserved0 = int.from_bytes(buff.read(2), byteorder = 'little', signed = False) msi.NumberOfProcessors = Helpers.ReadInt8(fileBinaryReader); //msi.ProductType = Helpers.ReadUInt8(fileBinaryReader); msi.ProductType = (PRODUCT_TYPE)Enum.Parse(typeof(PRODUCT_TYPE), Enum.GetName(typeof(PRODUCT_TYPE), (int)Helpers.ReadInt8(fileBinaryReader))); msi.MajorVersion = Helpers.ReadUInt32(fileBinaryReader); msi.MinorVersion = Helpers.ReadUInt32(fileBinaryReader); msi.BuildNumber = Helpers.ReadUInt32(fileBinaryReader); //msi.PlatformId = Helpers.ReadUInt32(fileBinaryReader); msi.PlatformId = (PLATFORM_ID)Enum.Parse(typeof(PLATFORM_ID), Enum.GetName(typeof(PLATFORM_ID), (int)Helpers.ReadUInt32(fileBinaryReader))); msi.CSDVersionRva = Helpers.ReadUInt32(fileBinaryReader); ////msi.Reserved1 = int.from_bytes(buff.read(4), byteorder = 'little', signed = False) ////msi.SuiteMask = Helpers.ReadUInt16(fileBinaryReader); int sm = Helpers.ReadUInt16(fileBinaryReader); try { msi.SuiteMask = (SUITE_MASK)Enum.Parse(typeof(SUITE_MASK), Enum.GetName(typeof(SUITE_MASK), sm)); } catch (Exception e) { } msi.Reserved2 = Helpers.ReadUInt16(fileBinaryReader); if (msi.ProcessorArchitecture == PROCESSOR_ARCHITECTURE.INTEL) { foreach (var _ in Enumerable.Range(0, 3)) { msi.VendorId.Add(Helpers.ReadUInt32(fileBinaryReader)); } msi.VersionInformation = Helpers.ReadUInt32(fileBinaryReader); msi.FeatureInformation = Helpers.ReadUInt32(fileBinaryReader); msi.AMDExtendedCpuFeatures = Helpers.ReadUInt32(fileBinaryReader); } else { foreach (var _ in Enumerable.Range(0, 2)) { //fix this //msi.ProcessorFeatures.Add(Helpers.ReadUInt64(fileBinaryReader)); } } return(msi); }
public static MINIDUMP_SYSTEM_INFO parse(Directory.MINIDUMP_DIRECTORY dir, Program.MiniDump minidump) { minidump.fileBinaryReader.BaseStream.Seek(dir.Offset, 0); byte[] chunk = minidump.fileBinaryReader.ReadBytes((int)dir.Size); using (BinaryReader ChunkReader = new BinaryReader(new MemoryStream(chunk))) { MINIDUMP_SYSTEM_INFO si = Parse(ChunkReader); si.OS = guess_os(si.MajorVersion, si.MinorVersion, si.ProductType); return(si); } }
internal MiniDumpSystemInfoStream(MINIDUMP_SYSTEM_INFO systemInfo, MiniDumpFile owner) { _systemInfo = systemInfo; _owner = owner; if (this.ProcessorArchitecture == MiniDumpProcessorArchitecture.PROCESSOR_ARCHITECTURE_INTEL) { this._x86CpuInfo = new X86CpuInfo(_systemInfo.Cpu); } else { this._otherCpuInfo = new OtherCpuInfo(_systemInfo.Cpu); } }