* Replace Storage implementation with CrystalDiskInfo based implementation. * Formatting. * Code review. * Code review. * Increase space for attribute name in report. * Implement dynamic disk handling for usage sensor. Disable unused warnings. * Further cleanup in NativeMethods.txt and referenced.
1761 lines
91 KiB
C#
1761 lines
91 KiB
C#
// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
|
|
// If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
// Copyright (C) LibreHardwareMonitor and Contributors.
|
|
// Partial Copyright (C) Michael Möller <mmoeller@openhardwaremonitor.org> and Contributors.
|
|
// All Rights Reserved.
|
|
|
|
using System.Collections.Generic;
|
|
using DiskInfoToolkit.Interop.Enums;
|
|
|
|
namespace LibreHardwareMonitor.Hardware.Storage;
|
|
|
|
internal static class SmartAttributeTranslator
|
|
{
|
|
const int SensorChannelStartIndex = 30;
|
|
|
|
public static List<SmartAttribute> GetAttributesFor(DiskInfoToolkit.Storage storage)
|
|
{
|
|
switch (storage.SmartKey)
|
|
{
|
|
case SmartKey.Smart:
|
|
return GetSmart(storage);
|
|
case SmartKey.SSD:
|
|
return GetSSD(storage);
|
|
case SmartKey.Mtron:
|
|
return GetMtron(storage);
|
|
case SmartKey.Indilinx:
|
|
return GetIndilinx(storage);
|
|
case SmartKey.JMicron60x:
|
|
return GetJMicron60X(storage);
|
|
case SmartKey.Intel:
|
|
return GetIntel(storage);
|
|
case SmartKey.Samsung:
|
|
return GetSamsung(storage);
|
|
case SmartKey.SandForce:
|
|
return GetSandforce(storage);
|
|
case SmartKey.JMicron61x:
|
|
return GetJMicron61X(storage);
|
|
case SmartKey.Micron:
|
|
return GetMicron(storage);
|
|
case SmartKey.MicronMU02:
|
|
return GetMicronMU03(storage);
|
|
case SmartKey.Ocz:
|
|
return GetOcz(storage);
|
|
case SmartKey.Plextor:
|
|
return GetPlextor(storage);
|
|
case SmartKey.SanDisk:
|
|
return GetSandisk(storage);
|
|
case SmartKey.OczVector:
|
|
return GetOczVector(storage);
|
|
case SmartKey.Corsair:
|
|
return GetCorsair(storage);
|
|
case SmartKey.Toshiba:
|
|
return GetToshiba(storage);
|
|
case SmartKey.SanDiskGb:
|
|
return GetSandiskGB(storage);
|
|
case SmartKey.Kingston:
|
|
return GetKingston(storage);
|
|
case SmartKey.NVMe:
|
|
return GetNVME(storage);
|
|
case SmartKey.Realtek:
|
|
return GetRealtek(storage);
|
|
case SmartKey.SKhynix:
|
|
return GetSkhynix(storage);
|
|
case SmartKey.Kioxia:
|
|
return GetKioxia(storage);
|
|
case SmartKey.WDC:
|
|
return GetWdc(storage);
|
|
case SmartKey.KingstonSuv:
|
|
return GetKingstonSUV(storage);
|
|
case SmartKey.KingstonKC600:
|
|
return GetKingstonKC600(storage);
|
|
case SmartKey.KingstonDC500:
|
|
return GetKingstonDC500(storage);
|
|
case SmartKey.KingstonSA400:
|
|
return GetKingstonSA400(storage);
|
|
case SmartKey.Ssstc:
|
|
return GetSSSTC(storage);
|
|
case SmartKey.IntelDc:
|
|
return GetIntelDC(storage);
|
|
case SmartKey.Apacer:
|
|
return GetAPACER(storage);
|
|
case SmartKey.SiliconMotion:
|
|
return GetSiliconMotion(storage);
|
|
case SmartKey.JMicron66x:
|
|
return GetJMicron66X(storage);
|
|
case SmartKey.Phison:
|
|
return GetPhison(storage);
|
|
case SmartKey.Seagate:
|
|
return GetSeagate(storage);
|
|
case SmartKey.SeagateIronWolf:
|
|
return GetSeagateIronWolf(storage);
|
|
case SmartKey.Marvell:
|
|
return GetMarvell(storage);
|
|
case SmartKey.Maxiotek:
|
|
return GetMaxiotek(storage);
|
|
case SmartKey.SeagateBarraCuda:
|
|
return GetSeagateBarraCuda(storage);
|
|
case SmartKey.Ymtc:
|
|
return GetYMTC(storage);
|
|
case SmartKey.Scy:
|
|
return GetSCY(storage);
|
|
case SmartKey.Recadata:
|
|
return GetRecadata(storage);
|
|
case SmartKey.SanDiskHP:
|
|
return GetSandiskHP(storage);
|
|
case SmartKey.SanDiskHPVenus:
|
|
return GetSandiskHPVenus(storage);
|
|
case SmartKey.SanDiskDell:
|
|
return GetSandiskDell(storage);
|
|
case SmartKey.SanDiskLenovo:
|
|
return GetSandiskLenovo(storage);
|
|
case SmartKey.SanDiskLenovoHelenVenus:
|
|
return GetSandiskLenovoHelenVenus(storage);
|
|
case SmartKey.MicronMU03:
|
|
return GetMicronMU03(storage);
|
|
case SmartKey.SanDiskCloud:
|
|
return GetSandiskCloud(storage);
|
|
case SmartKey.SiliconMotionCVC:
|
|
return GetSiliconMotionCVC(storage);
|
|
case SmartKey.AdataIndustrial:
|
|
return GetAdataIndustrial(storage);
|
|
default:
|
|
return new();
|
|
}
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSmart(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ThroughputPerformance),
|
|
Get(storage, SmartAttributeType.SpinUpTime),
|
|
Get(storage, SmartAttributeType.StartStopCount),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.ReadChannelMargin),
|
|
Get(storage, SmartAttributeType.SeekErrorRate),
|
|
Get(storage, SmartAttributeType.SeekTimePerformance),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.SpinRetryCount),
|
|
Get(storage, SmartAttributeType.RecalibrationRetries),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SoftReadErrorRateStab),
|
|
Get(storage, SmartAttributeType.CurrentHeliumLevel),
|
|
Get(storage, SmartAttributeType.EndToEndError),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CommandTimeout),
|
|
Get(storage, SmartAttributeType.HighFlyWrites),
|
|
Get(storage, SmartAttributeType.AirflowTemperature),
|
|
Get(storage, SmartAttributeType.GSenseErrorRate),
|
|
Get(storage, SmartAttributeType.PowerOffRetractCount),
|
|
Get(storage, SmartAttributeType.LoadUnloadCycleCount),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.HardwareECCRecovered),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.PendingSectorCount),
|
|
Get(storage, SmartAttributeType.UncorrectableSectorCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.WriteErrorRate),
|
|
Get(storage, SmartAttributeType.SoftReadErrorRate),
|
|
Get(storage, SmartAttributeType.DataAddressMarkError),
|
|
Get(storage, SmartAttributeType.RunOutCancel),
|
|
Get(storage, SmartAttributeType.SoftECCCorrection),
|
|
Get(storage, SmartAttributeType.ThermalAsperityRate),
|
|
Get(storage, SmartAttributeType.FlyingHeight),
|
|
Get(storage, SmartAttributeType.SpinHighCurrent),
|
|
Get(storage, SmartAttributeType.SpinBuzz),
|
|
Get(storage, SmartAttributeType.OfflineSeekPerformance),
|
|
Get(storage, SmartAttributeType.VibrationDuringWrite),
|
|
Get(storage, SmartAttributeType.ShockDuringWrite),
|
|
Get(storage, SmartAttributeType.DiskShift),
|
|
Get(storage, SmartAttributeType.GSenseErrorRate),
|
|
Get(storage, SmartAttributeType.LoadedHours),
|
|
Get(storage, SmartAttributeType.LoadUnloadCycleCount),
|
|
Get(storage, SmartAttributeType.LoadFriction),
|
|
Get(storage, SmartAttributeType.LoadUnloadCycleCount),
|
|
Get(storage, SmartAttributeType.LoadInTime),
|
|
Get(storage, SmartAttributeType.TorqueAmplificationCount),
|
|
Get(storage, SmartAttributeType.PowerOffRetractCount),
|
|
Get(storage, SmartAttributeType.GMRHeadAmplitude),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.HeadFlyingHours),
|
|
Get(storage, SmartAttributeType.ReadErrorRetryRate),
|
|
Get(storage, SmartAttributeType.FreeFallProtection),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.HeliumConditionLower),
|
|
Get(storage, SmartAttributeType.HeliumConditionUpper),
|
|
Get(storage, SmartAttributeType.MAMRHealthMonitor),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSSD(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ThroughputPerformance),
|
|
Get(storage, SmartAttributeType.SpinUpTime),
|
|
Get(storage, SmartAttributeType.StartStopCount),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.ReadChannelMargin),
|
|
Get(storage, SmartAttributeType.SeekErrorRate),
|
|
Get(storage, SmartAttributeType.SeekTimePerformance),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.SpinRetryCount),
|
|
Get(storage, SmartAttributeType.RecalibrationRetries),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SoftReadErrorRateStab),
|
|
Get(storage, SmartAttributeType.UnsafeShutdownCount),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.PendingSectorCount),
|
|
Get(storage, SmartAttributeType.UncorrectableSectorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetMtron(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetIndilinx(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ProgramFailureBlockCount),
|
|
Get(storage, SmartAttributeType.EraseFailureBlockCount),
|
|
Get(storage, SmartAttributeType.ReadFailureBlockCount),
|
|
Get(storage, SmartAttributeType.TotalCountReadSectors),
|
|
Get(storage, SmartAttributeType.TotalCountWriteSectors),
|
|
Get(storage, SmartAttributeType.TotalCountReadCommands),
|
|
Get(storage, SmartAttributeType.TotalCountWriteCommands),
|
|
Get(storage, SmartAttributeType.TotalCountErrorBitsFromFlash),
|
|
Get(storage, SmartAttributeType.TotalCountReadSectorsWithCorrectableBitErrors),
|
|
Get(storage, SmartAttributeType.BadBlockFullFlag),
|
|
Get(storage, SmartAttributeType.MaximumPECountSpecification),
|
|
Get(storage, SmartAttributeType.MinimumEraseCount),
|
|
Get(storage, SmartAttributeType.MaximumEraseCount),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetIntel(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.SpinUpTime),
|
|
Get(storage, SmartAttributeType.StartStopCount),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.AvailableReservedSpace),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.PowerLossProtectionFailure),
|
|
Get(storage, SmartAttributeType.SATADownshiftCount),
|
|
Get(storage, SmartAttributeType.EndToEndError),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.UnsafeShutdownCount),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.PendingSectorCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.TimedWorkloadMediaWear),
|
|
Get(storage, SmartAttributeType.TimedWorkloadHostReadWriteRatio),
|
|
Get(storage, SmartAttributeType.TimedWorkloadTimer),
|
|
Get(storage, SmartAttributeType.AvailableReservedSpace),
|
|
Get(storage, SmartAttributeType.MediaWearoutIndicator),
|
|
Get(storage, SmartAttributeType.ThermalThrottleStatus),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSamsung(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.WearLevelingCount),
|
|
Get(storage, SmartAttributeType.UsedReservedBlockCount),
|
|
Get(storage, SmartAttributeType.UsedReservedBlockCount),
|
|
Get(storage, SmartAttributeType.UnusedReservedBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.RuntimeBadBlock),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.AirflowTemperature),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ECCErrorRate),
|
|
Get(storage, SmartAttributeType.OfflineUncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.SuperCapStatus),
|
|
Get(storage, SmartAttributeType.SSDModeStatus),
|
|
Get(storage, SmartAttributeType.PORRecoveryCount),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.UnusedReservedBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.WearLevelingCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.ErrorDetection),
|
|
Get(storage, SmartAttributeType.MediaWearoutIndicator),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSandforce(DiskInfoToolkit.Storage storage)
|
|
{
|
|
int sensorStart = SensorChannelStartIndex;
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.RetiredBlockCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SoftReadErrorRate),
|
|
Get(storage, SmartAttributeType.GigabytesErased),
|
|
Get(storage, SmartAttributeType.ReserveBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.WearRangeDelta),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.IOErrorDetectionCodeErrors),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.UncorrectableSectorCount),
|
|
Get(storage, SmartAttributeType.SATARErrors),
|
|
Get(storage, SmartAttributeType.SoftReadErrorRate),
|
|
Get(storage, SmartAttributeType.SoftECCCorrection),
|
|
Get(storage, SmartAttributeType.DriveLifeProtectionStatus),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.AvailableReservedSpace),
|
|
Get(storage, SmartAttributeType.NandDataWritten, SensorType.Data, sensorStart++),
|
|
Get(storage, SmartAttributeType.PowerFailBackupHealth),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetMicron(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocatedNANDBlocks),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SoftReadErrorRate),
|
|
Get(storage, SmartAttributeType.DeviceCapacity),
|
|
Get(storage, SmartAttributeType.UserCapacity),
|
|
Get(storage, SmartAttributeType.SpareBlocksAvailable),
|
|
Get(storage, SmartAttributeType.RemainingSpareBlocks),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.ReserveBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.UnusedReservedBlockCount),
|
|
Get(storage, SmartAttributeType.UnalignedAccessCount),
|
|
Get(storage, SmartAttributeType.SATADownshiftCount),
|
|
Get(storage, SmartAttributeType.ErrorCorrectionCount),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CommandTimeout),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ECCBitCorrectionCount),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.PendingSectorCount),
|
|
Get(storage, SmartAttributeType.OfflineUncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.LifetimeUsed),
|
|
Get(storage, SmartAttributeType.WriteErrorRate),
|
|
Get(storage, SmartAttributeType.SuccessfulRAINRecoveryCount),
|
|
Get(storage, SmartAttributeType.TotalBytesRead),
|
|
Get(storage, SmartAttributeType.WriteProtectProgress),
|
|
Get(storage, SmartAttributeType.ECCBitsCorrected),
|
|
Get(storage, SmartAttributeType.ECCCumulativeThresholdEvents),
|
|
Get(storage, SmartAttributeType.CumulativeProgramNANDPages),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostProgramPageCount),
|
|
Get(storage, SmartAttributeType.BackgroundProgramPageCount),
|
|
Get(storage, SmartAttributeType.TotalRefreshISPCount),
|
|
Get(storage, SmartAttributeType.TotalDoRefCalCount),
|
|
Get(storage, SmartAttributeType.TotalNANDReadPlaneCountLow),
|
|
Get(storage, SmartAttributeType.TotalNANDReadPlaneCountHigh),
|
|
Get(storage, SmartAttributeType.TotalBlockReMapPassCount),
|
|
Get(storage, SmartAttributeType.TotalBackgroundScanOverLimitCount),
|
|
Get(storage, SmartAttributeType.TotalBackgroundScan),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetOcz(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.SpinUpTime),
|
|
Get(storage, SmartAttributeType.StartStopCount),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.TotalCountWriteSectors),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.TotalBlocksErased),
|
|
Get(storage, SmartAttributeType.SSDProtectMode),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.TotalNumberCorrectedBits),
|
|
Get(storage, SmartAttributeType.MaxRatedPECounts),
|
|
Get(storage, SmartAttributeType.MinimumEraseCount),
|
|
Get(storage, SmartAttributeType.MaximumEraseCount),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.NandReadRetryCount),
|
|
Get(storage, SmartAttributeType.SimpleReadRetryAttempts),
|
|
Get(storage, SmartAttributeType.AdaptiveReadRetryAttempts),
|
|
Get(storage, SmartAttributeType.OfflineUncorrectableErrors),
|
|
Get(storage, SmartAttributeType.RAIDRecoveryCount),
|
|
Get(storage, SmartAttributeType.PowerLossProtectionFailure),
|
|
Get(storage, SmartAttributeType.NandDataRead),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSeagate(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.RetiredBlockCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SpareBlocksAvailable),
|
|
Get(storage, SmartAttributeType.RemainingSpareBlocks),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.WearRangeDelta),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.SoftReadErrorRate),
|
|
Get(storage, SmartAttributeType.SoftECCCorrection),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.ReadFailureBlockCount),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.NandDataRead),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetWdc(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocatedNANDBlocks),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.TotalNANDEraseCount),
|
|
Get(storage, SmartAttributeType.MinimumPECycles),
|
|
Get(storage, SmartAttributeType.MaximumBadBlocksPerDie),
|
|
Get(storage, SmartAttributeType.MaximumPECycles),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.GrownBadBlocks),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.AveragePECycles),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.EndToEndErrorsCorrected),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CommandTimeout),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.MediaWearoutIndicator),
|
|
Get(storage, SmartAttributeType.AvailableReservedSpace),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.MediaWearoutIndicator),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.ThermalThrottleStatus),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetPlextor(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.ProgramFailCountWorstCase),
|
|
Get(storage, SmartAttributeType.EraseFailCountWorstCase),
|
|
Get(storage, SmartAttributeType.WearLevelingCount),
|
|
Get(storage, SmartAttributeType.UsedReservedBlockCountWorstCase),
|
|
Get(storage, SmartAttributeType.UsedReservedBlockCount),
|
|
Get(storage, SmartAttributeType.UnusedReservedBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.SATADownshiftCount),
|
|
Get(storage, SmartAttributeType.EndToEndErrorsCorrected),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CommandTimeout),
|
|
Get(storage, SmartAttributeType.UnsafeShutdownCount),
|
|
Get(storage, SmartAttributeType.ECCErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.UncorrectableSectorCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.AvailableReservedSpace),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSandisk(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReallocatedNANDBlocks),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.ReserveBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.PercentOfTotalEraseCount),
|
|
Get(storage, SmartAttributeType.RemainingSpareBlocks),
|
|
Get(storage, SmartAttributeType.PercentOfTotalEraseCountBCBlocks),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetOczVector(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.RuntimeBadBlock),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SpareBlocksAvailable),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.TotalUncorrectableNANDReads),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.TotalReadFailures),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.TotalBlocksErased),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.TotalNumberCorrectedBits),
|
|
Get(storage, SmartAttributeType.MaxRatedPECounts),
|
|
Get(storage, SmartAttributeType.MinimumEraseCount),
|
|
Get(storage, SmartAttributeType.MaximumEraseCount),
|
|
Get(storage, SmartAttributeType.NandReadRetryCount),
|
|
Get(storage, SmartAttributeType.SimpleReadRetryAttempts),
|
|
Get(storage, SmartAttributeType.AdaptiveReadRetryAttempts),
|
|
Get(storage, SmartAttributeType.OfflineUncorrectableErrors),
|
|
Get(storage, SmartAttributeType.RAIDRecoveryCount),
|
|
Get(storage, SmartAttributeType.InWarranty),
|
|
Get(storage, SmartAttributeType.DASPolarity),
|
|
Get(storage, SmartAttributeType.PartialPfail),
|
|
Get(storage, SmartAttributeType.WriteThrottlingActivationFlag),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.NandDataRead),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetToshiba(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ThroughputPerformance),
|
|
Get(storage, SmartAttributeType.SpinUpTime),
|
|
Get(storage, SmartAttributeType.StartStopCount),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.SeekErrorRate),
|
|
Get(storage, SmartAttributeType.SeekTimePerformance),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.SpinRetryCount),
|
|
Get(storage, SmartAttributeType.RecalibrationRetries),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SSDProtectMode),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.PendingSectorCount),
|
|
Get(storage, SmartAttributeType.UncorrectableSectorCount),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetCorsair(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.RetiredBlockCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.ReserveBlockCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetKingston(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ThroughputPerformance),
|
|
Get(storage, SmartAttributeType.SpinUpTime),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.SeekErrorRate),
|
|
Get(storage, SmartAttributeType.SeekTimePerformance),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.SpinRetryCount),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.BadClusterTableCount),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.UnsafeShutdownCount),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.PendingSectorCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.WriteHead),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.MaximumEraseCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetMicronMU03(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocatedNANDBlocks),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.UnusedSpareNANDBlocks),
|
|
Get(storage, SmartAttributeType.Non4KAlignedAccess),
|
|
Get(storage, SmartAttributeType.SATADownshiftCount),
|
|
Get(storage, SmartAttributeType.ErrorCorrectionCount),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.ErrorCorrectionCount),
|
|
Get(storage, SmartAttributeType.OfflineUncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.WriteErrorRate),
|
|
Get(storage, SmartAttributeType.SuccessfulRAINRecoveryCount),
|
|
Get(storage, SmartAttributeType.HostProgramPageCount),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.HostProgramPageCount),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.CumulativeProgramNANDPages),
|
|
Get(storage, SmartAttributeType.CumulativeProgramNANDPages),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetNVME(DiskInfoToolkit.Storage storage)
|
|
{
|
|
int sensorStart = SensorChannelStartIndex;
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.CriticalWarning),
|
|
Get(storage, SmartAttributeType.CompositeTemperature),
|
|
Get(storage, SmartAttributeType.AvailableSpare, SensorType.Level, sensorStart++),
|
|
Get(storage, SmartAttributeType.AvailableSpareThreshold, SensorType.Level, sensorStart++),
|
|
Get(storage, SmartAttributeType.PercentageUsed, SensorType.Level, sensorStart++),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostReadCommands),
|
|
Get(storage, SmartAttributeType.HostWriteCommands),
|
|
Get(storage, SmartAttributeType.ControllerBusyTime),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.UnsafeShutdownCount),
|
|
Get(storage, SmartAttributeType.MediaAndDataIntegrityErrors),
|
|
Get(storage, SmartAttributeType.NumberOfErrorInformationLogEntries),
|
|
Get(storage, SmartAttributeType.WarningCompositeTemperatureTime),
|
|
Get(storage, SmartAttributeType.CriticalCompositeTemperatureTime),
|
|
Get(storage, SmartAttributeType.TemperatureSensor1),
|
|
Get(storage, SmartAttributeType.TemperatureSensor2),
|
|
Get(storage, SmartAttributeType.TemperatureSensor3),
|
|
Get(storage, SmartAttributeType.TemperatureSensor4),
|
|
Get(storage, SmartAttributeType.TemperatureSensor5),
|
|
Get(storage, SmartAttributeType.TemperatureSensor6),
|
|
Get(storage, SmartAttributeType.TemperatureSensor7),
|
|
Get(storage, SmartAttributeType.TemperatureSensor8),
|
|
Get(storage, SmartAttributeType.ThermalManagementTemperature1TransitionCount),
|
|
Get(storage, SmartAttributeType.ThermalManagementTemperature2TransitionCount),
|
|
Get(storage, SmartAttributeType.TotalTimeThermalManagementTemperature1),
|
|
Get(storage, SmartAttributeType.TotalTimeThermalManagementTemperature2),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetRealtek(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.RawDataErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.GDN),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.MaximumPECycles),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.SSDProtectMode),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.ECCFailRecord),
|
|
Get(storage, SmartAttributeType.UnalignedAccessCount),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ECCBitCorrectionCount),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.MinimumEraseCount),
|
|
Get(storage, SmartAttributeType.MaximumEraseCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.AvailableReservedSpace),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSkhynix(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.MinimumEraseCount),
|
|
Get(storage, SmartAttributeType.MaximumEraseCount),
|
|
Get(storage, SmartAttributeType.ReserveBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.ProgramFailCountWorstCase),
|
|
Get(storage, SmartAttributeType.EraseFailCountWorstCase),
|
|
Get(storage, SmartAttributeType.WearLevelingCount),
|
|
Get(storage, SmartAttributeType.UsedReservedBlockCountWorstCase),
|
|
Get(storage, SmartAttributeType.UsedReservedBlockCount),
|
|
Get(storage, SmartAttributeType.UnusedReservedBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.SATADownshiftCount),
|
|
Get(storage, SmartAttributeType.EndToEndError),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CommandTimeout),
|
|
Get(storage, SmartAttributeType.ShockEventCount),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ECCErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.UncorrectableSectorCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.UncorrectableSoftReadErrorRate),
|
|
Get(storage, SmartAttributeType.SoftECCCorrection),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.NandDataRead),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetKioxia(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SSDProtectMode),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSSSTC(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocatedNANDBlocks),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.AvailableReservedSpace),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.ProgramFailCountWorstCase),
|
|
Get(storage, SmartAttributeType.EraseFailCountWorstCase),
|
|
Get(storage, SmartAttributeType.WearLevelingCount),
|
|
Get(storage, SmartAttributeType.UsedReservedBlockCountWorstCase),
|
|
Get(storage, SmartAttributeType.UsedReservedBlockCount),
|
|
Get(storage, SmartAttributeType.UnusedReservedBlockCount),
|
|
Get(storage, SmartAttributeType.SATADownshiftCount),
|
|
Get(storage, SmartAttributeType.EndToEndError),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CommandTimeout),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ECCErrorRate),
|
|
Get(storage, SmartAttributeType.OfflineUncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.PowerLossProtectionFailure),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.AvailableReservedSpace),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetIntelDC(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocatedNANDBlocks),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.DeviceCapacity),
|
|
Get(storage, SmartAttributeType.UserCapacity),
|
|
Get(storage, SmartAttributeType.SpareBlocksAvailable),
|
|
Get(storage, SmartAttributeType.RemainingSpareBlocks),
|
|
Get(storage, SmartAttributeType.TotalBlockEraseFailure),
|
|
Get(storage, SmartAttributeType.MaximumEraseCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.PowerLossProtectionFailure),
|
|
Get(storage, SmartAttributeType.ProgramFailureBlockCount),
|
|
Get(storage, SmartAttributeType.EndToEndError),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.PendingSectorCount),
|
|
Get(storage, SmartAttributeType.OfflineUncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.LifetimeUsed),
|
|
Get(storage, SmartAttributeType.TimedWorkloadMediaWear),
|
|
Get(storage, SmartAttributeType.TimedWorkloadHostReadWriteRatio),
|
|
Get(storage, SmartAttributeType.TimedWorkloadTimer),
|
|
Get(storage, SmartAttributeType.ThermalThrottleStatus),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetAPACER(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.MaximumEraseCount),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.SSDProtectMode),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.BadClusterTableCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSiliconMotion(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SLCTotalEraseCount),
|
|
Get(storage, SmartAttributeType.SLCMaximumEraseCount),
|
|
Get(storage, SmartAttributeType.SLCMinimumEraseCount),
|
|
Get(storage, SmartAttributeType.SLCAverageEraseCount),
|
|
Get(storage, SmartAttributeType.DRAM1BitErrorCount),
|
|
Get(storage, SmartAttributeType.UncorrectableSectorCount),
|
|
Get(storage, SmartAttributeType.SpareBlocksAvailable),
|
|
Get(storage, SmartAttributeType.NumberOfCacheDataBlock),
|
|
Get(storage, SmartAttributeType.NumberOfInvalidBlocks),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.MaximumEraseCount),
|
|
Get(storage, SmartAttributeType.MinimumEraseCount),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.MaxEraseCountOfSpec),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.ProgramFailCountInWorstDie),
|
|
Get(storage, SmartAttributeType.EraseFailCountInWorstDie),
|
|
Get(storage, SmartAttributeType.WearLevelingCount),
|
|
Get(storage, SmartAttributeType.RuntimeBadBlock),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.PowerOffRetractCount),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.HardwareECCRecovered),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.PendingSectorCount),
|
|
Get(storage, SmartAttributeType.OfflineUncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.AvailableReservedSpace),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.TotalCountWriteSectors),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetPhison(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetMarvell(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.MaximumEraseCount),
|
|
Get(storage, SmartAttributeType.MinimumEraseCount),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.PowerOffRetractCount),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetMaxiotek(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SSDProtectMode),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.BadClusterTableCount),
|
|
Get(storage, SmartAttributeType.ReadErrorRetryRate),
|
|
Get(storage, SmartAttributeType.SpareBlocksAvailable),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.MinimumEraseCount),
|
|
Get(storage, SmartAttributeType.MaximumEraseCount),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.SLCMinimumEraseCount),
|
|
Get(storage, SmartAttributeType.SLCMaximumEraseCount),
|
|
Get(storage, SmartAttributeType.SLCAverageEraseCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.NandDataRead),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.BitErrorCount),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetYMTC(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.MaximumBadBlocksPerDie),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.BadClusterTableCount),
|
|
Get(storage, SmartAttributeType.SATADownshiftCount),
|
|
Get(storage, SmartAttributeType.EndToEndErrorsCorrected),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.MinimumEraseCount),
|
|
Get(storage, SmartAttributeType.MaximumEraseCount),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.SLCMinimumEraseCount),
|
|
Get(storage, SmartAttributeType.SLCMaximumEraseCount),
|
|
Get(storage, SmartAttributeType.SLCAverageEraseCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.NandDataRead),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.NANDTemperature),
|
|
Get(storage, SmartAttributeType.BitErrorCount),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSCY(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.SeekErrorRate),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.ReadErrorRetryRate),
|
|
Get(storage, SmartAttributeType.SpareBlocksAvailable),
|
|
Get(storage, SmartAttributeType.RuntimeBadBlock),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ECCBitCorrectionCount),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.PendingSectorCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetJMicron60X(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.HaltSystemIDFlashID),
|
|
Get(storage, SmartAttributeType.FirmwareVersion),
|
|
Get(storage, SmartAttributeType.ECCFailRecord),
|
|
Get(storage, SmartAttributeType.AverageEraseCountMaxEraseCount),
|
|
Get(storage, SmartAttributeType.GoodBlockCountSystemBlockCount),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetJMicron61X(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ThroughputPerformance),
|
|
Get(storage, SmartAttributeType.SpinUpTime),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.SeekErrorRate),
|
|
Get(storage, SmartAttributeType.SeekTimePerformance),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.SpinRetryCount),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.ECCFailRecord),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.PendingSectorCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetJMicron66X(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ThroughputPerformance),
|
|
Get(storage, SmartAttributeType.SpinUpTime),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.SeekErrorRate),
|
|
Get(storage, SmartAttributeType.SeekTimePerformance),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.SpinRetryCount),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SSDProtectMode),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.BadClusterTableCount),
|
|
Get(storage, SmartAttributeType.SpareBlocksAvailable),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.PendingSectorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.WriteHead),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSeagateIronWolf(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.GigabytesErased),
|
|
Get(storage, SmartAttributeType.LifetimePS4EntryCount),
|
|
Get(storage, SmartAttributeType.LifetimePS3EntryCount),
|
|
Get(storage, SmartAttributeType.GrownBadBlocks),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.WearRangeDelta),
|
|
Get(storage, SmartAttributeType.SATADownshiftCount),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.RAISEECCCorrectableCount),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.DriveLifeProtectionStatus),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.AvailableReservedSpace),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.FreeSpace),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSeagateBarraCuda(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.RetiredBlockCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SpareBlocksAvailable),
|
|
Get(storage, SmartAttributeType.RemainingSpareBlocks),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.WearRangeDelta),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.SoftReadErrorRate),
|
|
Get(storage, SmartAttributeType.SoftECCCorrection),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.ReadFailureBlockCount),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.NandDataRead),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSandiskGB(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocatedNANDBlocks),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.TotalBlocksErased),
|
|
Get(storage, SmartAttributeType.MinimumPECycles),
|
|
Get(storage, SmartAttributeType.MaximumBadBlocksPerDie),
|
|
Get(storage, SmartAttributeType.MaximumPECycles),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.GrownBadBlocks),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.PECycles),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.EndToEndErrorsCorrected),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CommandTimeout),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.MediaWearoutIndicator),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.AvailableReservedSpace),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.MediaWearoutIndicator),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.ThermalThrottleStatus),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetKingstonSUV(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.ReserveBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.ProgramFailCountInWorstDie),
|
|
Get(storage, SmartAttributeType.EraseFailCountInWorstDie),
|
|
Get(storage, SmartAttributeType.WearLevelingCount),
|
|
Get(storage, SmartAttributeType.UsedReservedBlockCountWorstDie),
|
|
Get(storage, SmartAttributeType.UnusedReservedBlockCount),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ECCErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.PendingSectorCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.SoftECCCorrection),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.NandDataRead),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetKingstonKC600(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocatedNANDBlocks),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.Reserved),
|
|
Get(storage, SmartAttributeType.Reserved),
|
|
Get(storage, SmartAttributeType.Reserved),
|
|
Get(storage, SmartAttributeType.SLCAverageEraseCount),
|
|
Get(storage, SmartAttributeType.DRAM1BitErrorCount),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.AvailableReservedSpace),
|
|
Get(storage, SmartAttributeType.Reserved),
|
|
Get(storage, SmartAttributeType.Reserved),
|
|
Get(storage, SmartAttributeType.Reserved),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.Reserved),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.Reserved),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.HardwareECCRecovered),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.UnusedReservedBlockCount),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetKingstonDC500(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SSDProtectMode),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.BadBlockFullFlag),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.ThermalThrottleStatus),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.TotalReadFailures),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.MaximumEraseCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetKingstonSA400(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.VendorUnique),
|
|
Get(storage, SmartAttributeType.VendorUnique),
|
|
Get(storage, SmartAttributeType.VendorUnique),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.VendorUnique),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.VendorUnique),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.VendorUnique),
|
|
Get(storage, SmartAttributeType.VendorUnique),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.WearLevelingCount),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.MaximumEraseCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetRecadata(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.SeekErrorRate),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.ReadErrorRetryRate),
|
|
Get(storage, SmartAttributeType.SpareBlocksAvailable),
|
|
Get(storage, SmartAttributeType.RuntimeBadBlock),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ECCBitCorrectionCount),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.PendingSectorCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSandiskDell(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.WearLevelingCount),
|
|
Get(storage, SmartAttributeType.UsedReservedBlockCountWorstCase),
|
|
Get(storage, SmartAttributeType.UsedReservedBlockCount),
|
|
Get(storage, SmartAttributeType.ReserveBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ECCErrorRate),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.MediaWearoutIndicator),
|
|
Get(storage, SmartAttributeType.MediaWearoutIndicator),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSandiskHP(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.ReserveBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.WearLevelingCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.ReserveBlockCount),
|
|
Get(storage, SmartAttributeType.SATADownshiftCount),
|
|
Get(storage, SmartAttributeType.EndToEndError),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CommandTimeout),
|
|
Get(storage, SmartAttributeType.AirflowTemperature),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.MediaWearoutIndicator),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.ThrottleStatistics),
|
|
Get(storage, SmartAttributeType.ThermalThrottleStatus),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSandiskHPVenus(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.ReserveBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.WearLevelingCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.ReserveBlockCount),
|
|
Get(storage, SmartAttributeType.SATADownshiftCount),
|
|
Get(storage, SmartAttributeType.EndToEndError),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CommandTimeout),
|
|
Get(storage, SmartAttributeType.AirflowTemperature),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ReallocationEventCount),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.MediaWearoutIndicator),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.ThermalThrottleStatus),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSandiskLenovo(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.MinimumPECycles),
|
|
Get(storage, SmartAttributeType.MaximumBadBlocksPerDie),
|
|
Get(storage, SmartAttributeType.MaximumPECycles),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.GrownBadBlocks),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.AveragePECycles),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.ReserveBlockCount),
|
|
Get(storage, SmartAttributeType.RemainingSpareBlocks),
|
|
Get(storage, SmartAttributeType.EndToEndErrorsCorrected),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CommandTimeout),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.MediaWearoutIndicator),
|
|
Get(storage, SmartAttributeType.AvailableReservedSpace),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.ThrottleStatistics),
|
|
Get(storage, SmartAttributeType.ThermalThrottleStatus),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSandiskLenovoHelenVenus(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.MinimumPECycles),
|
|
Get(storage, SmartAttributeType.MaximumBadBlocksPerDie),
|
|
Get(storage, SmartAttributeType.MaximumPECycles),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.GrownBadBlocks),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.AveragePECycles),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.UsedReservedBlockCount),
|
|
Get(storage, SmartAttributeType.ReserveBlockCount),
|
|
Get(storage, SmartAttributeType.EndToEndError),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CommandTimeout),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.AvailableReservedSpace),
|
|
Get(storage, SmartAttributeType.MediaWearoutIndicator),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.ThrottleStatistics),
|
|
Get(storage, SmartAttributeType.ThermalThrottleStatus),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSandiskCloud(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.RetiredBlockCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.WriteAmplificationMultipliedBy100),
|
|
Get(storage, SmartAttributeType.WriteAmplificationFactor),
|
|
Get(storage, SmartAttributeType.ReserveBlockCount),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.CleanShutdownCount),
|
|
Get(storage, SmartAttributeType.UnsafeShutdownCount),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.ReallocatedNANDBlocks),
|
|
Get(storage, SmartAttributeType.PercentOfTotalEraseCount),
|
|
Get(storage, SmartAttributeType.SpareBlocksAvailable),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.CapacitorHealth),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.ThermalThrottleStatus),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.SPITestsRemaining),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetSiliconMotionCVC(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.ReallocatedSectorsCount),
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SLCCache),
|
|
Get(storage, SmartAttributeType.GrownBadBlocks),
|
|
Get(storage, SmartAttributeType.ProgramFailCount),
|
|
Get(storage, SmartAttributeType.EraseFailCount),
|
|
Get(storage, SmartAttributeType.AverageEraseCount),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.ProgramFailCountWorstCase),
|
|
Get(storage, SmartAttributeType.SATADownshiftCount),
|
|
Get(storage, SmartAttributeType.EndToEndError),
|
|
Get(storage, SmartAttributeType.UncorrectableErrors),
|
|
Get(storage, SmartAttributeType.MaximumEraseCount),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.MinimumEraseCount),
|
|
Get(storage, SmartAttributeType.ReadErrorRate),
|
|
Get(storage, SmartAttributeType.OfflineUncorrectableErrors),
|
|
Get(storage, SmartAttributeType.CRCErrorCount),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.SpareBlocksAvailable),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataWritten),
|
|
Get(storage, SmartAttributeType.HostDataRead),
|
|
Get(storage, SmartAttributeType.RAIDEventCount),
|
|
Get(storage, SmartAttributeType.RAIDUncorrectableCount),
|
|
Get(storage, SmartAttributeType.SSDProtectMode),
|
|
Get(storage, SmartAttributeType.ReadErrorRetryRate),
|
|
Get(storage, SmartAttributeType.NandDataWritten),
|
|
];
|
|
}
|
|
|
|
private static List<SmartAttribute> GetAdataIndustrial(DiskInfoToolkit.Storage storage)
|
|
{
|
|
return
|
|
[
|
|
Get(storage, SmartAttributeType.PowerOnHours),
|
|
Get(storage, SmartAttributeType.PowerCycleCount),
|
|
Get(storage, SmartAttributeType.SSDProtectMode),
|
|
Get(storage, SmartAttributeType.SATAPhysicalErrorCount),
|
|
Get(storage, SmartAttributeType.BadBlockCount),
|
|
Get(storage, SmartAttributeType.TotalEraseCount),
|
|
Get(storage, SmartAttributeType.BadClusterTableCount),
|
|
Get(storage, SmartAttributeType.SpareBlocksAvailable),
|
|
Get(storage, SmartAttributeType.UnexpectedPowerLoss),
|
|
Get(storage, SmartAttributeType.Temperature),
|
|
Get(storage, SmartAttributeType.RemainingLife),
|
|
Get(storage, SmartAttributeType.FlashWriteSectorCount),
|
|
Get(storage, SmartAttributeType.FlashReadSectorCount),
|
|
Get(storage, SmartAttributeType.TotalCountWriteSectors),
|
|
Get(storage, SmartAttributeType.TotalCountReadSectors),
|
|
];
|
|
}
|
|
|
|
private static SmartAttribute Get(DiskInfoToolkit.Storage storage, SmartAttributeType smartAttributeType, SensorType? sensorType = null, int sensorChannel = 0, string sensorName = null)
|
|
{
|
|
var attr = storage.Smart.SmartAttributes.Find(sa => sa.Info.Type == smartAttributeType);
|
|
|
|
if (attr == null)
|
|
{
|
|
return null;
|
|
}
|
|
else
|
|
{
|
|
return new(attr, sensorType, sensorChannel, sensorName);
|
|
}
|
|
}
|
|
}
|