コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
            }
        }