protected override void GetReport(StringBuilder r) { if (Smart.IsValid) { Kernel32.SMART_ATTRIBUTE[] values = Smart.ReadSmartData(); Kernel32.SMART_THRESHOLD[] thresholds = Smart.ReadSmartThresholds(); if (values.Length > 0) { r.AppendFormat(CultureInfo.InvariantCulture, " {0}{1}{2}{3}{4}{5}{6}{7}", "Id".PadRight(3), "Description".PadRight(35), "Raw Value".PadRight(13), "Worst".PadRight(6), "Value".PadRight(6), "Threshold".PadRight(6), "Physical".PadRight(8), Environment.NewLine); foreach (Kernel32.SMART_ATTRIBUTE value in values) { if (value.Id == 0x00) { break; } byte?threshold = null; foreach (Kernel32.SMART_THRESHOLD t in thresholds) { if (t.Id == value.Id) { threshold = t.Threshold; } } string description = "Unknown"; float? physical = null; foreach (SmartAttribute a in SmartAttributes) { if (a.Id == value.Id) { description = a.Name; if (a.HasRawValueConversion | a.SensorType.HasValue) { physical = a.ConvertValue(value, null); } else { physical = null; } } } string raw = BitConverter.ToString(value.RawValue); r.AppendFormat(CultureInfo.InvariantCulture, " {0}{1}{2}{3}{4}{5}{6}{7}", value.Id.ToString("X2").PadRight(3), description.PadRight(35), raw.Replace("-", string.Empty).PadRight(13), value.WorstValue.ToString(CultureInfo.InvariantCulture).PadRight(6), value.CurrentValue.ToString(CultureInfo.InvariantCulture).PadRight(6), (threshold.HasValue ? threshold.Value.ToString(CultureInfo.InvariantCulture) : "-").PadRight(6), (physical.HasValue ? physical.Value.ToString(CultureInfo.InvariantCulture) : "-").PadRight(8), Environment.NewLine); } r.AppendLine(); } } }