예제 #1
0
 /// <inheritdoc />
 /// <summary>
 /// Populates the property collection for this structure.
 /// </summary>
 /// <param name="properties">Collection of properties of this structure.</param>
 protected override void PopulateProperties(SmbiosPropertiesTable properties)
 {
     properties.Add(SmbiosProperty.ManagementDeviceComponent.Description, Description);
     properties.Add(SmbiosProperty.ManagementDeviceComponent.ManagementDeviceHandle, ManagementDeviceHandle);
     properties.Add(SmbiosProperty.ManagementDeviceComponent.ComponentHandle, ComponentHandle);
     properties.Add(SmbiosProperty.ManagementDeviceComponent.ThresholdHandle, ThresholdHandle);
 }
예제 #2
0
        /// <inheritdoc />
        /// <summary>
        /// Gets the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void Parse(SmbiosPropertiesTable properties)
        {
            #region validate parameter/s
            SentinelHelper.ArgumentNull(properties);
            #endregion

            #region versions
            var tpmCapabilityVendorIdEntry = GetTpmCapabilityVendorId(RawVendorId);
            properties.Add(DmiProperty.TpmDevice.VendorId, tpmCapabilityVendorIdEntry.ASCII);
            properties.Add(DmiProperty.TpmDevice.VendorIdDescription, tpmCapabilityVendorIdEntry.Description);
            properties.Add(DmiProperty.TpmDevice.MajorSpecVersion, MajorSpecVersion);
            properties.Add(DmiProperty.TpmDevice.MinorSpecVersion, MinorSpecVersion);

            var firmwareVersion = TpmFirmwareVersion.Unknown;
            if (MajorSpecVersion >= 0x01 && MajorSpecVersion <= 0x02)
            {
                firmwareVersion =
                    MajorSpecVersion == 0x01
                        ? TpmFirmwareVersion.Parse(RawFirmwareVersion1)
                        : new TpmFirmwareVersion {
                    MajorVersion = GetDoubleWord(0x0a), MinorVersion = GetDoubleWord(0x0e)
                };
            }

            properties.Add(DmiProperty.TpmDevice.FirmwareVersion, firmwareVersion);
            properties.Add(DmiProperty.TpmDevice.Description, DescriptionVersion2);
            properties.Add(DmiProperty.TpmDevice.Characteristics, GetTpmCharacteristics(Characteristics));
            properties.Add(DmiProperty.TpmDevice.OemDefined, OemDefined);
            #endregion
        }
        /// <inheritdoc />
        /// <summary>
        /// Gets the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void Parse(SmbiosPropertiesTable properties)
        {
            #region validate parameter/s
            SentinelHelper.ArgumentNull(properties);
            #endregion

            #region values
            properties.Add(DmiProperty.BitMemoryErrorInformation64.ErrorType, GetErrorType(ErrorType));
            properties.Add(DmiProperty.BitMemoryErrorInformation64.ErrorGranularity, GetErrorGranularity(ErrorGranularity));
            properties.Add(DmiProperty.BitMemoryErrorInformation64.ErrorOperation, GetErrorOperation(ErrorOperation));

            if (CrcData != 0x00000000)
            {
                properties.Add(DmiProperty.BitMemoryErrorInformation64.VendorSyndrome, CrcData);
            }

            if (MemoryArrayErrorAddress != 0x8000000000000000)
            {
                properties.Add(DmiProperty.BitMemoryErrorInformation64.BusErrorAddress, MemoryArrayErrorAddress);
            }

            if (DeviceErrorAddress != 0x8000000000000000)
            {
                properties.Add(DmiProperty.BitMemoryErrorInformation64.DeviceErrorAddress, DeviceErrorAddress);
            }

            if (ErrorResolution != 0x80000000)
            {
                properties.Add(DmiProperty.BitMemoryErrorInformation64.ErrorResolution, ErrorResolution);
            }
            #endregion
        }
예제 #4
0
 /// <inheritdoc/>
 /// <summary>
 /// Populates the property collection for this structure.
 /// </summary>
 /// <param name="properties">Collection of properties of this structure.</param>
 protected override void PopulateProperties(SmbiosPropertiesTable properties)
 {
     properties.Add(SmbiosProperty.Chassis.Elements.Min, Min);
     properties.Add(SmbiosProperty.Chassis.Elements.Max, Max);
     properties.Add(SmbiosProperty.Chassis.Elements.TypeSelect, TypeSelect);
     properties.Add(SmbiosProperty.Chassis.Elements.ItemType, ItemType);
 }
예제 #5
0
        /// <inheritdoc />
        /// <summary>
        /// Gets the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void Parse(SmbiosPropertiesTable properties)
        {
            #region validate parameter/s
            SentinelHelper.ArgumentNull(properties);
            #endregion

            #region values
            properties.Add(DmiProperty.PhysicalMemoryArray.Location, GetLocation(Location));
            properties.Add(DmiProperty.PhysicalMemoryArray.Use, GetUse(Use));
            properties.Add(DmiProperty.PhysicalMemoryArray.MemoryErrorCorrection, GetErrorCorrectionTypes(ErrorCorrection));
            properties.Add(DmiProperty.PhysicalMemoryArray.MemoryErrorInformationHandle, GetErrorHandle(ErrorInformationHandle));
            properties.Add(DmiProperty.PhysicalMemoryArray.NumberOfMemoryDevices, NumberOfMemoryDevices);

            var maximumCapacity = MaximumCapacity;
            if (maximumCapacity != 0x08000000)
            {
                properties.Add(DmiProperty.PhysicalMemoryArray.MaximumCapacity, maximumCapacity);
            }
            else
            {
                if (HeaderInfo.Length == 0x17)
                {
                    properties.Add(DmiProperty.PhysicalMemoryArray.MaximumCapacity, ExtendedMaximumCapacity);
                }
            }
            #endregion
        }
        /// <inheritdoc />
        /// <summary>
        /// Populates the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void PopulateProperties(SmbiosPropertiesTable properties)
        {
            if (StartingAddress == 0xffffffff)
            {
                if (StructureInfo.Length >= 0x14)
                {
                    ulong extendedStartingAddress = ExtendedStartingAddress;
                    properties.Add(SmbiosProperty.MemoryDeviceMappedAddress.StartingAddress, extendedStartingAddress);
                }
            }
            else
            {
                properties.Add(SmbiosProperty.MemoryDeviceMappedAddress.StartingAddress, StartingAddress);
            }

            if (EndingAddress == 0xffffffff)
            {
                if (StructureInfo.Length >= 0x1c)
                {
                    ulong extendedEndingAddress = ExtendedEndingAddress;
                    properties.Add(SmbiosProperty.MemoryDeviceMappedAddress.EndingAddress, extendedEndingAddress);
                }
            }
            else
            {
                properties.Add(SmbiosProperty.MemoryDeviceMappedAddress.EndingAddress, EndingAddress);
            }

            properties.Add(SmbiosProperty.MemoryDeviceMappedAddress.MemoryDeviceHandle, MemoryDeviceHandle);
            properties.Add(SmbiosProperty.MemoryDeviceMappedAddress.MemoryArrayMappedAddressHandle, MappedAddressHandle);
            properties.Add(SmbiosProperty.MemoryDeviceMappedAddress.PartitionRowPosition, PartitionRowPosition);
            properties.Add(SmbiosProperty.MemoryDeviceMappedAddress.InterleavePosition, InterleavePosition);
            properties.Add(SmbiosProperty.MemoryDeviceMappedAddress.InterleavedDataDepth, InterleavedDataDepth);
        }
예제 #7
0
        /// <inheritdoc/>
        /// <summary>
        /// Populates the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void PopulateProperties(SmbiosPropertiesTable properties)
        {
            #region 2.0+
            if (StructureInfo.StructureVersion >= SmbiosStructureVersion.v20)
            {
                properties.Add(SmbiosProperty.System.Manufacturer, Manufacturer);
                properties.Add(SmbiosProperty.System.ProductName, ProductName);
                properties.Add(SmbiosProperty.System.Version, Version);
                properties.Add(SmbiosProperty.System.SerialNumber, SerialNumber);
            }
            #endregion

            #region 2.1+
            if (StructureInfo.StructureVersion >= SmbiosStructureVersion.v21)
            {
                properties.Add(SmbiosProperty.System.WakeUpType, GetWakeUpType(WakeUpType));

                byte[] uuid = StructureInfo.RawData.Extract(0x08, 0x10);
                properties.Add(SmbiosProperty.System.UUID, GetUuid(uuid, SmbiosVersion));
            }
            #endregion

            #region 2.4+
            if (StructureInfo.StructureVersion >= SmbiosStructureVersion.v24)
            {
                properties.Add(SmbiosProperty.System.SkuNumber, Sku);
                properties.Add(SmbiosProperty.System.Family, Family);
            }
            #endregion
        }
 /// <inheritdoc />
 /// <summary>
 /// Populates the property collection for this structure.
 /// </summary>
 /// <param name="properties">Collection of properties of this structure.</param>
 protected override void PopulateProperties(SmbiosPropertiesTable properties)
 {
     properties.Add(SmbiosProperty.ManagementDevice.Description, Description);
     properties.Add(SmbiosProperty.ManagementDevice.Type, GetDeviceType(Type));
     properties.Add(SmbiosProperty.ManagementDevice.Address, Address);
     properties.Add(SmbiosProperty.ManagementDevice.AddressType, GetDeviceAddressType(AddressType));
 }
예제 #9
0
        /// <inheritdoc />
        /// <summary>
        /// Populates the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void PopulateProperties(SmbiosPropertiesTable properties)
        {
            #region 2.0+
            if (StructureInfo.Length >= 0x0c)
            {
                properties.Add(SmbiosProperty.SystemSlots.SlotDesignation, SlotDesignation);
                properties.Add(SmbiosProperty.SystemSlots.SlotType, GetSlotType(SlotType));
                properties.Add(SmbiosProperty.SystemSlots.SlotDataBusWidth, GetDataBusWidth(DataWidth));
                properties.Add(SmbiosProperty.SystemSlots.CurrentUsage, GetCurrentUsage(CurrentUsage));
                properties.Add(SmbiosProperty.SystemSlots.SlotLength, GetLength(Length));
                properties.Add(SmbiosProperty.SystemSlots.SlotId, GetId(SlotType, Adapter, Socket));
                properties.Add(SmbiosProperty.SystemSlots.Characteristics, GetCharacteristics(Characteristics1, 0xff));
            }
            #endregion

            #region 2.1+
            if (StructureInfo.Length >= 0x0d)
            {
                properties[SmbiosProperty.SystemSlots.Characteristics] = GetCharacteristics(Characteristics1, Characteristics2);
            }
            #endregion

            #region 2.6+
            if (StructureInfo.Length >= 0x11)
            {
                properties.Add(SmbiosProperty.SystemSlots.SegmentBusFunction, GetSegmentBusFunction(SegmentBusFunction));
                properties.Add(SmbiosProperty.SystemSlots.BusDeviceFunction, GetBusDeviceFunction(Bus, Device, Function));
            }
            #endregion
        }
예제 #10
0
        /// <inheritdoc />
        /// <summary>
        /// Gets the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void Parse(SmbiosPropertiesTable properties)
        {
            #region validate parameter/s
            SentinelHelper.ArgumentNull(properties);
            #endregion

            #region values
            properties.Add(DmiProperty.SystemReset.Capabilities.Status, Status);
            properties.Add(DmiProperty.SystemReset.Capabilities.BootOption, GetBootOption(BootOption));
            properties.Add(DmiProperty.SystemReset.Capabilities.BootOptionOnLimit, GetBootOption(BootOptionOnLimit));
            properties.Add(DmiProperty.SystemReset.Capabilities.WatchdogTimer, WatchdogTimer);

            if (ResetCount != 0xffff)
            {
                properties.Add(DmiProperty.SystemReset.ResetCount, ResetCount);
            }

            if (ResetLimit != 0xffff)
            {
                properties.Add(DmiProperty.SystemReset.ResetLimit, ResetLimit);
            }

            if (TimerInterval != 0xffff)
            {
                properties.Add(DmiProperty.SystemReset.TimerInterval, TimerInterval);
            }

            if (TimeOut != 0xffff)
            {
                properties.Add(DmiProperty.SystemReset.Timeout, TimeOut);
            }
            #endregion
        }
 /// <inheritdoc />
 /// <summary>
 /// Populates the property collection for this structure.
 /// </summary>
 /// <param name="properties">Collection of properties of this structure.</param>
 protected override void PopulateProperties(SmbiosPropertiesTable properties)
 {
     properties.Add(SmbiosProperty.HardwareSecurity.HardwareSecuritySettings.FrontPanelResetStatus, GetSettings(FrontPanelResetStatus));
     properties.Add(SmbiosProperty.HardwareSecurity.HardwareSecuritySettings.AdministratorPasswordStatus, GetSettings(AdministratorPasswordStatus));
     properties.Add(SmbiosProperty.HardwareSecurity.HardwareSecuritySettings.KeyboardPasswordStatus, GetSettings(KeyboardPasswordStatus));
     properties.Add(SmbiosProperty.HardwareSecurity.HardwareSecuritySettings.PowerOnPasswordStatus, GetSettings(PowerOnPasswordStatus));
 }
        /// <inheritdoc/>
        /// <summary>
        /// Populates the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void PopulateProperties(SmbiosPropertiesTable properties)
        {
            if (StructureInfo.StructureVersion < SmbiosStructureVersion.Latest)
            {
                return;
            }

            properties.Add(SmbiosProperty.IpmiDevice.InterfaceType, GetInterfaceType(InterfaceType));
            properties.Add(SmbiosProperty.IpmiDevice.SpecificationRevision, SpecificationRevision);
            properties.Add(SmbiosProperty.IpmiDevice.I2CSlaveAddress, I2CSlaveAddress);
            properties.Add(SmbiosProperty.IpmiDevice.NVStorageDeviceAddress, NVStorageDeviceAddress);
            properties.Add(SmbiosProperty.IpmiDevice.BaseAddress, BaseAddress);

            if (StructureInfo.Length >= 0x11)
            {
                if (BaseAddressModifier != 0x00)
                {
                    properties.Add(SmbiosProperty.IpmiDevice.BaseAdressModifier.RegisterSpacing, GetRegisterSpacing(RegisterSpacing));
                    properties.Add(SmbiosProperty.IpmiDevice.BaseAdressModifier.LsBit, LsBit);

                    properties.Add(SmbiosProperty.IpmiDevice.Interrupt.SpecifiedInfo, SpecifiedInfo);
                    properties.Add(SmbiosProperty.IpmiDevice.Interrupt.Polarity, Polarity);
                    properties.Add(SmbiosProperty.IpmiDevice.Interrupt.TriggerMode, TriggerMode);
                }
            }

            if (StructureInfo.Length >= 0x12)
            {
                properties.Add(SmbiosProperty.IpmiDevice.InterruptNumber, InterruptNumber);
            }
        }
예제 #13
0
        /// <inheritdoc />
        /// <summary>
        /// Gets the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void Parse(SmbiosPropertiesTable properties)
        {
            #region validate parameter/s
            SentinelHelper.ArgumentNull(properties);
            #endregion

            #region versions

            #region 2.0+
            if (HeaderInfo.Length >= 0x0f)
            {
                properties.Add(DmiProperty.Cache.SocketDesignation, SocketDesignation);
                properties.Add(DmiProperty.Cache.CacheConfiguration.OperationalMode, GetOperationalMode(OperationalMode));
                properties.Add(DmiProperty.Cache.CacheConfiguration.CacheEnabled, Enabled);
                properties.Add(DmiProperty.Cache.CacheConfiguration.Location, GetLocation(Location));
                properties.Add(DmiProperty.Cache.CacheConfiguration.CacheSocketed, CacheSocketed);
                properties.Add(DmiProperty.Cache.CacheConfiguration.Level, CacheLevel);
                properties.Add(DmiProperty.Cache.MaximumCacheSize, GetSize(MaximumCacheSize));

                if (InstalledSize != 0x00)
                {
                    properties.Add(DmiProperty.Cache.InstalledCacheSize, (int?)GetSize(InstalledSize));
                }

                properties.Add(DmiProperty.Cache.SupportedSramTypes, GetTypes(SupportedSramType));

                ReadOnlyCollection <string> types = GetTypes(CurrentSramType);
                string currentType = types[0];
                properties.Add(DmiProperty.Cache.CurrentSramType, currentType);
            }
            #endregion

            #region 2.1+
            if (HeaderInfo.Length >= 0x10)
            {
                if (CacheSpeed != 0x00)
                {
                    properties.Add(DmiProperty.Cache.CacheSpeed, CacheSpeed);
                }

                properties.Add(DmiProperty.Cache.ErrorCorrectionType, GetErrorCorrection(ErrorCorrectionType));
                properties.Add(DmiProperty.Cache.SystemCacheType, GetSystemCacheType(SystemCacheType));
                properties.Add(DmiProperty.Cache.Associativity, GetAssociativity(Associativity));
            }
            #endregion

            #region 3.1.0+
            if (HeaderInfo.Length >= 0x14)
            {
                properties.Add(DmiProperty.Cache.MaximumCacheSize2, GetSize(MaximumCacheSize2));

                if (InstalledCacheSize2 != 0x00)
                {
                    properties.Add(DmiProperty.Cache.InstalledCacheSize2, (int?)GetSize(InstalledCacheSize2));
                }
            }
            #endregion

            #endregion
        }
        /// <inheritdoc/>
        /// <summary>
        /// Populates the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void PopulateProperties(SmbiosPropertiesTable properties)
        {
            #region 2.0+
            if (StructureInfo.StructureVersion >= SmbiosStructureVersion.v20)
            {
                properties.Add(SmbiosProperty.Bios.Vendor, Vendor);
                properties.Add(SmbiosProperty.Bios.BiosVersion, BiosVersion);
                properties.Add(SmbiosProperty.Bios.BiosStartSegment, BiosStartSegment);
                properties.Add(SmbiosProperty.Bios.BiosReleaseDate, BiosReleaseDate);
                properties.Add(SmbiosProperty.Bios.BiosRomSize, RomSize);
                properties.Add(SmbiosProperty.Bios.Characteristics, GetCharacteristics(Characteristics));
            }
            #endregion

            #region 2.4+
            if (StructureInfo.StructureVersion >= SmbiosStructureVersion.v24)
            {
                properties.Add(SmbiosProperty.Bios.CharacteristicsExtensionByte1, GetExtensionByte1(ExtensionByte1));
                properties.Add(SmbiosProperty.Bios.CharacteristicsExtensionByte2, GetExtensionByte2(ExtensionByte2));
                properties.Add(SmbiosProperty.Bios.SystemBiosMajorRelease, SystemBiosMajorRelease);
                properties.Add(SmbiosProperty.Bios.SystemBiosMinorRelease, SystemBiosMinorRelease);
                properties.Add(SmbiosProperty.Bios.FirmwareMajorRelease, FirmwareMajorRelease);
                properties.Add(SmbiosProperty.Bios.FirmwareMinorRelease, FirmwareMinorRelease);
            }
            #endregion

            #region 3.1+
            if (StructureInfo.StructureVersion >= SmbiosStructureVersion.v31)
            {
                properties.Add(SmbiosProperty.Bios.ExtendedBiosRomSize, ExtendedBiosRomSize);
                properties.Add(SmbiosProperty.Bios.BiosRomSizeUnit, ExtendedBiosRomSizeUnits);
            }
            #endregion
        }
예제 #15
0
        /// <inheritdoc/>
        /// <summary>
        /// Populates the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void PopulateProperties(SmbiosPropertiesTable properties)
        {
            if (StructureInfo.StructureVersion < SmbiosStructureVersion.Latest)
            {
                return;
            }

            TpmCapabilityVendorId tpmCapabilityVendorIdEntry = GetTpmCapabilityVendorId(RawVendorId);

            properties.Add(SmbiosProperty.TpmDevice.VendorId, tpmCapabilityVendorIdEntry.ASCII);
            properties.Add(SmbiosProperty.TpmDevice.VendorIdDescription, tpmCapabilityVendorIdEntry.Description);
            properties.Add(SmbiosProperty.TpmDevice.MajorSpecVersion, MajorSpecVersion);
            properties.Add(SmbiosProperty.TpmDevice.MinorSpecVersion, MinorSpecVersion);

            var firmwareVersion = TpmFirmwareVersion.Unknown;

            if (MajorSpecVersion >= 0x01 && MajorSpecVersion <= 0x02)
            {
                firmwareVersion =
                    MajorSpecVersion == 0x01
                        ? TpmFirmwareVersion.Parse(RawFirmwareVersion1)
                        : new TpmFirmwareVersion
                {
                    MajorVersion = (int)Reader.GetDoubleWord(0x0a),
                    MinorVersion = (int)Reader.GetDoubleWord(0x0e)
                };
            }

            properties.Add(SmbiosProperty.TpmDevice.FirmwareVersion, firmwareVersion);
            properties.Add(SmbiosProperty.TpmDevice.Description, DescriptionVersion2);
            properties.Add(SmbiosProperty.TpmDevice.Characteristics, GetTpmCharacteristics(Characteristics));
            properties.Add(SmbiosProperty.TpmDevice.OemDefined, OemDefined);
        }
예제 #16
0
        /// <inheritdoc />
        /// <summary>
        /// Populates the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void PopulateProperties(SmbiosPropertiesTable properties)
        {
            properties.Add(SmbiosProperty.MemoryController.ErrorDetectingMethod, GetErrorDetectingMethod(ErrorDetectingMethod));
            properties.Add(SmbiosProperty.MemoryController.ErrorCorrectingCapabilities, GetErrorCorrectingCapability(ErrorCorrectingCapabilities));
            properties.Add(SmbiosProperty.MemoryController.SupportedInterleave, GetControllerInterleave(SupportedInterleave));
            properties.Add(SmbiosProperty.MemoryController.CurrentInterleave, GetControllerInterleave(CurrentInterleave));
            properties.Add(SmbiosProperty.MemoryController.MaximumMemoryModuleSize, MaximumMemoryModuleSize);
            properties.Add(SmbiosProperty.MemoryController.SupportedSpeeds, GetControllerSupportedSpeeds(SupportedSpeeds));
            properties.Add(SmbiosProperty.MemoryController.SupportedMemoryTypes, GetControllerSupportedTypes(SupportedMemoryTypes));
            properties.Add(SmbiosProperty.MemoryController.MemoryModuleVoltages, GetControllerModuleVoltages(MemoryModuleVoltages));

            byte n = NumberMemorySlots;

            properties.Add(SmbiosProperty.MemoryController.NumberMemorySlots, n);

            if (n == 0x00)
            {
                return;
            }

            int m = n << 1;

            byte[]            containedElementsArray = StructureInfo.RawData.Extract(0x0f, m);
            IEnumerable <int> containedElements      = GetContainedMemoryModules(containedElementsArray);

            properties.Add(SmbiosProperty.MemoryController.ContainedMemoryModules, new MemoryControllerContainedElementCollection(containedElements));

            if (StructureInfo.Length >= 0x10 + m)
            {
                properties.Add(SmbiosProperty.MemoryController.EnabledErrorCorrectingCapabilities, GetErrorCorrectingCapability(StructureInfo.RawData[0x0f + m]));
            }
        }
        /// <inheritdoc />
        /// <summary>
        /// Gets the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void Parse(SmbiosPropertiesTable properties)
        {
            #region validate parameter/s
            SentinelHelper.ArgumentNull(properties);
            #endregion

            #region values
            properties.Add(DmiProperty.MemoryChannel.ChannelType, GetChannelType(ChannelType));
            properties.Add(DmiProperty.MemoryChannel.MaximunChannelLoad, MaximunChannelLoad);

            byte n = Count;
            if (n != 0x00)
            {
                if (HeaderInfo.Length >= 0x08)
                {
                    byte[] containedElementsArray = new byte[n * 3];
                    Array.Copy(HeaderInfo.RawData, 0x07, containedElementsArray, 0, n * 3);

                    IEnumerable <MemoryChannelElement> containedElements = GetContainedElements(containedElementsArray, n);
                    properties.Add(DmiProperty.MemoryChannel.Devices, new MemoryChannelElementCollection(containedElements));
                }
            }

            #endregion
        }
        /// <inheritdoc />
        /// <summary>
        /// Populates the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void PopulateProperties(SmbiosPropertiesTable properties)
        {
            if (StartingAddress == 0xffffffff)
            {
                if (StructureInfo.Length >= 0x10)
                {
                    ulong extendedStartingAddress = ExtendedStartingAddress;
                    properties.Add(SmbiosProperty.MemoryArrayMappedAddress.ExtendedStartingAddress, extendedStartingAddress);
                }
            }
            else
            {
                properties.Add(SmbiosProperty.MemoryArrayMappedAddress.ExtendedStartingAddress, StartingAddress);
            }

            if (EndingAddress == 0xffffffff)
            {
                if (StructureInfo.Length >= 0x18)
                {
                    ulong extendedEndingAddress = ExtendedEndingAddress;
                    properties.Add(SmbiosProperty.MemoryArrayMappedAddress.ExtendedEndingAddress, extendedEndingAddress);
                }
            }
            else
            {
                properties.Add(SmbiosProperty.MemoryArrayMappedAddress.ExtendedEndingAddress, EndingAddress);
            }

            properties.Add(SmbiosProperty.MemoryArrayMappedAddress.MemoryArrayHandle, MemoryArrayHandle);
            properties.Add(SmbiosProperty.MemoryArrayMappedAddress.PartitionWidth, PartitionWidth);
        }
예제 #19
0
        /// <inheritdoc />
        /// <summary>
        /// Populates the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void PopulateProperties(SmbiosPropertiesTable properties)
        {
            properties.Add(SmbiosProperty.SystemPowerSupply.IsRedundant, IsRedundant);

            properties.Add(SmbiosProperty.SystemPowerSupply.Location, Location);
            properties.Add(SmbiosProperty.SystemPowerSupply.DeviceName, DeviceName);
            properties.Add(SmbiosProperty.SystemPowerSupply.Manufacturer, Manufacturer);
            properties.Add(SmbiosProperty.SystemPowerSupply.SerialNumber, SerialNumber);
            properties.Add(SmbiosProperty.SystemPowerSupply.AssetTagNumber, AssetTagNumber);
            properties.Add(SmbiosProperty.SystemPowerSupply.ModelPartNumber, ModelPartNumber);
            properties.Add(SmbiosProperty.SystemPowerSupply.RevisionLevel, RevisionLevel);
            properties.Add(SmbiosProperty.SystemPowerSupply.MaxPowerCapacity, MaxPowerCapacity);

            properties.Add(SmbiosProperty.SystemPowerSupply.Characteristics.SupplyType, GetSupplyType(SupplyType));
            properties.Add(SmbiosProperty.SystemPowerSupply.Characteristics.Status, GetStatus(Status));
            properties.Add(SmbiosProperty.SystemPowerSupply.Characteristics.InputVoltageRange, GetInputVoltageRange(InputVoltageRange));
            properties.Add(SmbiosProperty.SystemPowerSupply.Characteristics.IsPlugged, IsPlugged);
            properties.Add(SmbiosProperty.SystemPowerSupply.Characteristics.IsPresent, IsPresent);
            properties.Add(SmbiosProperty.SystemPowerSupply.Characteristics.IsHotReplaceable, IsHotReplaceable);

            if (StructureInfo.Length >= 0x11)
            {
                properties.Add(SmbiosProperty.SystemPowerSupply.InputVoltageProbeHandle, InputVoltageProbeHandle);
            }

            if (StructureInfo.Length >= 0x13)
            {
                properties.Add(SmbiosProperty.SystemPowerSupply.CoolingDeviceHandle, CoolingDeviceHandle);
            }

            if (StructureInfo.Length >= 0x15)
            {
                properties.Add(SmbiosProperty.SystemPowerSupply.InputCurrentProbeHandle, InputCurrentProbeHandle);
            }
        }
        /// <inheritdoc />
        /// <summary>
        /// Gets the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void Parse(SmbiosPropertiesTable properties)
        {
            #region validate parameter/s
            SentinelHelper.ArgumentNull(properties);
            #endregion

            #region versions

            #region 2.0+ - 3.1.1
            properties.Add(DmiProperty.ManagementControllerHostInterface.InterfaceType, GetInterfaceType(InterfaceType));
            #endregion

            #region 3.2+
            if (HeaderInfo.Length >= 0x07)
            {
                properties.Add(DmiProperty.ManagementControllerHostInterface.InterfaceTypeSpecificData, InterfaceTypeSpecificData);
            }

            if (HeaderInfo.Length >= 0x08 + InterfaceTypeSpecificDataLenght)
            {
                properties.Add(DmiProperty.ManagementControllerHostInterface.Protocols, new ManagementControllerHostInterfaceProtocolRecordsCollection(GetProtocolRecords()));
            }
            #endregion

            #endregion
        }
        /// <inheritdoc />
        /// <summary>
        /// Populates the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void PopulateProperties(SmbiosPropertiesTable properties)
        {
            if (StructureInfo.Length >= 0x05)
            {
                properties.Add(SmbiosProperty.CoolingDevice.TemperatureProbeHandle, TemperatureProbeHandle);
            }

            if (StructureInfo.Length >= 0x07)
            {
                properties.Add(SmbiosProperty.CoolingDevice.DeviceTypeAndStatus.Status, GetStatus(Status));
                properties.Add(SmbiosProperty.CoolingDevice.DeviceTypeAndStatus.DeviceType, GetDeviceType(DeviceType));
            }

            if (StructureInfo.Length >= 0x08)
            {
                properties.Add(SmbiosProperty.CoolingDevice.CoolingUnitGroup, CoolingUnitGroup);
            }

            if (StructureInfo.Length >= 0x09)
            {
                properties.Add(SmbiosProperty.CoolingDevice.OemDefined, OemDefined);
            }

            if (StructureInfo.Length >= 0x0d)
            {
                properties.Add(SmbiosProperty.CoolingDevice.NominalSpeed, NominalSpeed);
            }

            if (StructureInfo.Length >= 0x0f)
            {
                properties.Add(SmbiosProperty.CoolingDevice.Description, Description);
            }
        }
        /// <inheritdoc />
        /// <summary>
        /// Gets the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void Parse(SmbiosPropertiesTable properties)
        {
            #region validate parameter/s
            SentinelHelper.ArgumentNull(properties);
            #endregion

            #region values
            properties.Add(DmiProperty.MemoryController.ErrorDetectingMethod, GetErrorDetectingMethod(ErrorDetectingMethod));
            properties.Add(DmiProperty.MemoryController.ErrorCorrectingCapabilities, GetErrorCorrectingCapability(ErrorCorrectingCapabilities));
            properties.Add(DmiProperty.MemoryController.SupportedInterleave, GetControllerInterleave(SupportedInterleave));
            properties.Add(DmiProperty.MemoryController.CurrentInterleave, GetControllerInterleave(CurrentInterleave));
            properties.Add(DmiProperty.MemoryController.MaximumMemoryModuleSize, MaximumMemoryModuleSize);
            properties.Add(DmiProperty.MemoryController.SupportedSpeeds, GetControllerSupportedSpeeds(SupportedSpeeds));
            properties.Add(DmiProperty.MemoryController.SupportedMemoryTypes, GetControllerSupportedTypes(SupportedMemoryTypes));
            properties.Add(DmiProperty.MemoryController.MemoryModuleVoltages, GetControllerModuleVoltages(MemoryModuleVoltages));

            byte n = NumberMemorySlots;
            properties.Add(DmiProperty.MemoryController.NumberMemorySlots, n);

            if (n != 0x00)
            {
                int    m = n << 1;
                byte[] containedElementsArray = new byte[m];
                Array.Copy(HeaderInfo.RawData, 0x0f, containedElementsArray, 0, m);

                IEnumerable <int> containedElements = GetContainedMemoryModules(containedElementsArray);
                properties.Add(DmiProperty.MemoryController.ContainedMemoryModules, new MemoryControllerContainedElementCollection(containedElements));

                if (HeaderInfo.Length >= 0x10 + m)
                {
                    properties.Add(DmiProperty.MemoryController.EnabledErrorCorrectingCapabilities, GetErrorCorrectingCapability(HeaderInfo.RawData[0x0f + m]));
                }
            }
            #endregion
        }
예제 #23
0
 /// <inheritdoc />
 /// <summary>
 /// Populates the property collection for this structure.
 /// </summary>
 /// <param name="properties">Collection of properties of this structure.</param>
 protected override void PopulateProperties(SmbiosPropertiesTable properties)
 {
     properties.Add(SmbiosProperty.PortConnector.InternalReferenceDesignator, InternalReference);
     properties.Add(SmbiosProperty.PortConnector.InternalConnectorType, GetConnectorType(InternalConnectorType));
     properties.Add(SmbiosProperty.PortConnector.ExternalReferenceDesignator, ExternalReference);
     properties.Add(SmbiosProperty.PortConnector.ExternalConnectorType, GetConnectorType(ExternalConnectorType));
     properties.Add(SmbiosProperty.PortConnector.PortType, GetPortType(PortType));
 }
 /// <inheritdoc />
 /// <summary>
 /// Populates the property collection for this structure.
 /// </summary>
 /// <param name="properties">Collection of properties of this structure.</param>
 protected override void PopulateProperties(SmbiosPropertiesTable properties)
 {
     properties.Add(SmbiosProperty.SystemPowerControls.Month, Month);
     properties.Add(SmbiosProperty.SystemPowerControls.Day, Day);
     properties.Add(SmbiosProperty.SystemPowerControls.Hour, Hour);
     properties.Add(SmbiosProperty.SystemPowerControls.Minute, Minute);
     properties.Add(SmbiosProperty.SystemPowerControls.Second, Second);
 }
예제 #25
0
 /// <inheritdoc/>
 /// <summary>
 /// Populates the property collection for this structure.
 /// </summary>
 /// <param name="properties">Collection of properties of this structure.</param>
 protected override void PopulateProperties(SmbiosPropertiesTable properties)
 {
     properties.Add(SmbiosProperty.AdditionalInformation.Entry.EntryLength, EntryLength);
     properties.Add(SmbiosProperty.AdditionalInformation.Entry.ReferencedHandle, ReferencedHandle);
     properties.Add(SmbiosProperty.AdditionalInformation.Entry.ReferencedOffset, ReferencedOffset);
     properties.Add(SmbiosProperty.AdditionalInformation.Entry.StringValue, StringValue);
     properties.Add(SmbiosProperty.AdditionalInformation.Entry.Value, Value);
 }
        /// <inheritdoc />
        /// <summary>
        /// Gets the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void Parse(SmbiosPropertiesTable properties)
        {
            #region validate parameter/s
            SentinelHelper.ArgumentNull(properties);
            #endregion

            #region values
            properties.Add(DmiProperty.BaseBoard.Manufacturer, Manufacturer);
            properties.Add(DmiProperty.BaseBoard.Product, Product);
            properties.Add(DmiProperty.BaseBoard.Version, Version);
            properties.Add(DmiProperty.BaseBoard.SerialNumber, SerialNumber);

            if (HeaderInfo.Length >= 0x09)
            {
                properties.Add(DmiProperty.BaseBoard.AssetTag, AssetTag);
            }

            if (HeaderInfo.Length >= 0x0a)
            {
                properties.Add(DmiProperty.BaseBoard.Features.IsHotSwappable, IsHotSwappable);
                properties.Add(DmiProperty.BaseBoard.Features.IsReplaceable, IsReplaceable);
                properties.Add(DmiProperty.BaseBoard.Features.IsRemovable, IsRemovable);
                properties.Add(DmiProperty.BaseBoard.Features.RequiredDaughterBoard, RequiredDaughterBoard);
                properties.Add(DmiProperty.BaseBoard.Features.IsHostingBoard, IsHostingBoard);
            }

            if (HeaderInfo.Length >= 0x0b)
            {
                properties.Add(DmiProperty.BaseBoard.LocationInChassis, LocationInChassis);
            }

            if (HeaderInfo.Length >= 0x0c)
            {
                properties.Add(DmiProperty.BaseBoard.ChassisHandle, ChassisHandle);
            }

            if (HeaderInfo.Length >= 0x0d)
            {
                properties.Add(DmiProperty.BaseBoard.BoardType, GetBoardType(BoardType));
            }

            if (HeaderInfo.Length >= 0x0e)
            {
                byte n = NumberOfContainedObjectHandles;
                properties.Add(DmiProperty.BaseBoard.NumberOfContainedObjectHandles, n);

                if (n != 0x00 && HeaderInfo.Length >= 0x0f)
                {
                    var containedElementsArray = new byte[n];
                    Array.Copy(HeaderInfo.RawData, 0x0f, containedElementsArray, 0, n);

                    IEnumerable <SmbiosStructure> containedElements = GetContainedElements(containedElementsArray);
                    properties.Add(DmiProperty.BaseBoard.ContainedElements, new BaseBoardContainedElementCollection(containedElements));
                }
            }
            #endregion
        }
예제 #27
0
        /// <inheritdoc/>
        /// <summary>
        /// Populates the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void PopulateProperties(SmbiosPropertiesTable properties)
        {
            if (StructureInfo.StructureVersion < SmbiosStructureVersion.Latest)
            {
                return;
            }

            properties.Add(SmbiosProperty.SystemBoot.BootStatus, GetBootStatus(BootStatus));
        }
예제 #28
0
        /// <inheritdoc />
        /// <summary>
        /// Populates the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void PopulateProperties(SmbiosPropertiesTable properties)
        {
            int count = Count;

            if (count != 0)
            {
                properties.Add(SmbiosProperty.OemStrings.Values, GetValues(count));
            }
        }
예제 #29
0
 /// <inheritdoc />
 /// <summary>
 /// Populates the property collection for this structure.
 /// </summary>
 /// <param name="properties">Collection of properties of this structure.</param>
 protected override void PopulateProperties(SmbiosPropertiesTable properties)
 {
     properties.Add(SmbiosProperty.ManagementDeviceThresholdData.LowerNonCritical, LowerNonCritical);
     properties.Add(SmbiosProperty.ManagementDeviceThresholdData.UpperNonCritical, UpperNonCritical);
     properties.Add(SmbiosProperty.ManagementDeviceThresholdData.LowerCritical, LowerCritical);
     properties.Add(SmbiosProperty.ManagementDeviceThresholdData.UpperCritical, UpperCritical);
     properties.Add(SmbiosProperty.ManagementDeviceThresholdData.LowerNonRecoverable, LowerNonRecoverable);
     properties.Add(SmbiosProperty.ManagementDeviceThresholdData.UpperNonRecoverable, UpperNonRecoverable);
 }
        /// <inheritdoc />
        /// <summary>
        /// Populates the property collection for this structure.
        /// </summary>
        /// <param name="properties">Collection of properties of this structure.</param>
        protected override void PopulateProperties(SmbiosPropertiesTable properties)
        {
            int count = Count;

            if (count != 0)
            {
                properties.Add(SmbiosProperty.SystemConfigurationOptions.Values, GetValues(count));
            }
        }