From 6a49ba6ea166c91e067bd50bd3bab76042927f06 Mon Sep 17 00:00:00 2001 From: Tobias Gomes Danzeglocke Date: Fri, 28 Jul 2017 16:36:44 +0200 Subject: [PATCH] First Day With WMI getting SMART-Data --- App.config | 6 + Program.cs | 184 ++++++++++++++++++ Properties/AssemblyInfo.cs | 36 ++++ RetrieveSMARTData.csproj | 61 ++++++ bin/Debug/RetrieveSMARTData.exe | Bin 0 -> 10240 bytes bin/Debug/RetrieveSMARTData.exe.config | 6 + bin/Debug/RetrieveSMARTData.pdb | Bin 0 -> 15872 bytes bin/Debug/RetrieveSMARTData.vshost.exe | Bin 0 -> 22696 bytes bin/Debug/RetrieveSMARTData.vshost.exe.config | 6 + .../RetrieveSMARTData.vshost.exe.manifest | 11 ++ ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 7015 bytes ...rieveSMARTData.csproj.FileListAbsolute.txt | 6 + ...TData.csprojResolveAssemblyReference.cache | Bin 0 -> 2076 bytes obj/Debug/RetrieveSMARTData.exe | Bin 0 -> 10240 bytes obj/Debug/RetrieveSMARTData.pdb | Bin 0 -> 15872 bytes ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 18 files changed, 316 insertions(+) create mode 100644 App.config create mode 100644 Program.cs create mode 100644 Properties/AssemblyInfo.cs create mode 100644 RetrieveSMARTData.csproj create mode 100644 bin/Debug/RetrieveSMARTData.exe create mode 100644 bin/Debug/RetrieveSMARTData.exe.config create mode 100644 bin/Debug/RetrieveSMARTData.pdb create mode 100644 bin/Debug/RetrieveSMARTData.vshost.exe create mode 100644 bin/Debug/RetrieveSMARTData.vshost.exe.config create mode 100644 bin/Debug/RetrieveSMARTData.vshost.exe.manifest create mode 100644 obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 obj/Debug/RetrieveSMARTData.csproj.FileListAbsolute.txt create mode 100644 obj/Debug/RetrieveSMARTData.csprojResolveAssemblyReference.cache create mode 100644 obj/Debug/RetrieveSMARTData.exe create mode 100644 obj/Debug/RetrieveSMARTData.pdb create mode 100644 obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs diff --git a/App.config b/App.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..0bdedc4 --- /dev/null +++ b/Program.cs @@ -0,0 +1,184 @@ +// (c) Microsoft Corporation +// Author: Clemens Vasters (clemensv@microsoft.com) +// Code subject to MS-PL: http://opensource.org/licenses/ms-pl.html +// SMART Attributes and Background: http://en.wikipedia.org/wiki/S.M.A.R.T. +// SMART Attributes Overview: http://www.t13.org/Documents/UploadedDocuments/docs2005/e05171r0-ACS-SMARTAttributes_Overview.pdf + +namespace SmartDataApp { + using System; + using System.Collections.Generic; + using System.Management; + using System.Runtime.InteropServices; + + public enum SmartAttributeType : byte { + Raw_Read_Error_Rate = 0x01, + Throughput_Performance = 0x02, + Spin_Up_Time = 0x03, + Start_Stop_Count = 0x04, + Reallocated_Sectors_Count = 0x05, + Read_Channel_Margin = 0x06, + Seek_Error_Rate = 0x07, + Seek_Time_Performance = 0x08, + Power_On_Hours = 0x09, + Spin_Retry_Count = 0x0A, + SSD_Program_Fail_Count = 0xAB, + SSD_Erase_Fail_Count = 0xAC, + SSD_Wear_Leveling_Count = 0xAD, + Calibration_Retry_Count = 0x0B, + Unused_Reserved_Block_Count_Total = 0xB4, + Power_Cycle_Count = 0x0C, + Soft_Read_Error_Rate = 0x0D, + SATA_Downshift_Error_Count = 0xB7, + End_to_End_error = 0xB8, + Head_Stability = 0xB9, + Induced_Op_Vibration_Detection = 0xBA, + Reported_Uncorrectable_Errors = 0xBB, + Command_Timeout = 0xBC, + High_Fly_Writes = 0xBD, + Airflow_Temperature_WDC = 0xBE, + Temperature_Difference_from_100 = 0xBE, + GSense_Error_Rate = 0xBF, + Poweroff_Retract_Count = 0xC0, + Load_Cycle_Count = 0xC1, + Temperature = 0xC2, + Hardware_ECC_Recovered = 0xC3, + Reallocation_Event_Count = 0xC4, + Current_Pending_Sector_Count = 0xC5, + Uncorrectable_Sector_Count = 0xC6, + Ultra_DMACRC_Error_Count = 0xC7, + Multi_Zone_Error_Rate = 0xC8, + Write_Error_Rate_Fujitsu = 0xC8, + Off_Track_Soft_Read_Error_Rate = 0xC9, + Data_Address_Markerrors = 0xCA, + Run_Out_Cancel = 0xCB, + Soft_ECC_Correction = 0xCC, + Thermal_Asperity_Rate_TAR = 0xCD, + Flying_Height = 0xCE, + Spin_High_Current = 0xCF, + Spin_Buzz = 0xD0, + Offline_Seek_Performance = 0xD1, + Vibration_During_Write = 0xD3, + Shock_During_Write = 0xD4, + Disk_Shift = 0xDC, + GSense_Error_Rate_Alt = 0xDD, + Loaded_Hours = 0xDE, + Load_Unload_Retry_Count = 0xDF, + Load_Friction = 0xE0, + Load_Unload_Cycle_Count = 0xE1, + Load_In_Time = 0xE2, + Torque_Amplification_Count = 0xE3, + Power_Off_Retract_Cycle = 0xE4, + GMR_Head_Amplitude = 0xE6, + Drive_Temperature = 0xE7, + Head_Flying_Hours = 0xF0, + Transfer_Error_Rate_Fujitsu = 0xF0, + Total_LBAs_Written = 0xF1, + Total_LBAs_Read = 0xF2, + Read_Error_Retry_Rate = 0xFA, + Free_Fall_Protection = 0xFE, + } + + public class SmartData { + readonly Dictionary attributes; + readonly ushort structureVersion; + + public SmartData(byte[] arrVendorSpecific) { + attributes = new Dictionary(); + for (int offset = 2; offset < arrVendorSpecific.Length;) { + var a = FromBytes(arrVendorSpecific, ref offset, 12); + // Attribute values 0x00, 0xfe, 0xff are invalid + if (a.AttributeType != 0x00 && (byte) a.AttributeType != 0xfe && (byte) a.AttributeType != 0xff) { + attributes[a.AttributeType] = a; + } + } + structureVersion = (ushort) (arrVendorSpecific[0] * 256 + arrVendorSpecific[1]); + } + + public ushort StructureVersion { + get { + return this.structureVersion; + } + } + + public SmartAttribute this[SmartAttributeType v] { + get { + return this.attributes[v]; + } + } + + public IEnumerable Attributes { + get { + return this.attributes.Values; + } + } + + static T FromBytes(byte[] bytearray, ref int offset, int count) { + IntPtr ptr = IntPtr.Zero; + + try { + ptr = Marshal.AllocHGlobal(count); + Marshal.Copy(bytearray, offset, ptr, count); + offset += count; + return (T) Marshal.PtrToStructure(ptr, typeof(T)); + } finally { + if (ptr != IntPtr.Zero) { + Marshal.FreeHGlobal(ptr); + } + } + } + } + + [StructLayout(LayoutKind.Sequential)] + public struct SmartAttribute { + public SmartAttributeType AttributeType; + public ushort Flags; + public byte Value; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] + public byte[] VendorData; + + public bool Advisory { + get { + return (Flags & 0x1) == 0x0; // Bit 0 unset? + } + } + public bool FailureImminent { + get { + return (Flags & 0x1) == 0x1; // Bit 0 set? + } + } + public bool OnlineDataCollection { + get { + return (Flags & 0x2) == 0x2; // Bit 0 set? + } + } + + } + + public class Program { + public static void Main() { + try { + var searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSStorageDriver_ATAPISmartData"); + + foreach (ManagementObject queryObj in searcher.Get()) { + Console.WriteLine("-----------------------------------"); + Console.WriteLine("MSStorageDriver_ATAPISmartData instance"); + Console.WriteLine("-----------------------------------"); + + var arrVendorSpecific = (byte[]) queryObj.GetPropertyValue("VendorSpecific"); + + // Create SMART data from 'vendor specific' array + var d = new SmartData(arrVendorSpecific); + foreach (var b in d.Attributes) { + Console.Write("{0}, {1}", b.AttributeType, b.VendorData[0]); + Console.WriteLine(); + } + + } + } catch (ManagementException e) { + Console.WriteLine("An error occurred while querying for WMI data: " + e.Message); + } + + Console.ReadLine(); + } + } +} \ No newline at end of file diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..73d87ee --- /dev/null +++ b/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. +[assembly: AssemblyTitle("RetrieveSMARTData")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RetrieveSMARTData")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar +// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von +// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("f4ecd273-5eb1-4095-8119-286d6b3f665d")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern +// übernehmen, indem Sie "*" eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RetrieveSMARTData.csproj b/RetrieveSMARTData.csproj new file mode 100644 index 0000000..c788334 --- /dev/null +++ b/RetrieveSMARTData.csproj @@ -0,0 +1,61 @@ + + + + + Debug + AnyCPU + {F4ECD273-5EB1-4095-8119-286D6B3F665D} + Exe + Properties + RetrieveSMARTData + RetrieveSMARTData + v4.5.2 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bin/Debug/RetrieveSMARTData.exe b/bin/Debug/RetrieveSMARTData.exe new file mode 100644 index 0000000000000000000000000000000000000000..04552775be10bf93ed96aa9fe91bf2030706f2fb GIT binary patch literal 10240 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 cx~9_O7x=}(#Q$YrLsfim0jb}Uen&mQ~&?~ literal 0 HcmV?d00001 diff --git a/bin/Debug/RetrieveSMARTData.exe.config b/bin/Debug/RetrieveSMARTData.exe.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/bin/Debug/RetrieveSMARTData.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/bin/Debug/RetrieveSMARTData.pdb b/bin/Debug/RetrieveSMARTData.pdb new file mode 100644 index 0000000000000000000000000000000000000000..f447e4fdcd4bf5b4051e9204d9bfe1f4faca8a6f GIT binary patch literal 15872 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 wj{B?PH3nCjG}491+ySfEVd + + + + + \ No newline at end of file diff --git a/bin/Debug/RetrieveSMARTData.vshost.exe.manifest b/bin/Debug/RetrieveSMARTData.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/bin/Debug/RetrieveSMARTData.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..031f96b949056da5b2898370ae95b3414a83d89c GIT binary patch literal 7015 zcmeHM+fo}x5S2iz5f}#%f-%_6I&o6AqiiHV=2FE2kx)#e9rtqX! zQ^p>bKC_F;x436yJ;(9ft=wi(-vc4J=dP!hj1+y6de*m^Acf?W9o(vLp3EyCM!6$r2Kt6+@=2&2HnmfP@^e1eOg zFx&P{z}k=!oT}a0JXPS*uH*#H&U$W**Yn(l8I!pdx0r(NOzM^MHQ%=Lf;n*FiR122 ziB)lI`pQ_|vn{muIdztpsDtV)EBaLlY6q3bm%Q$J0&-Ae=!z{@D%{`2?%Imq+&!tS zu08cJzg@+%8~vA8={DLa)wONrxBydmf`goFSc-`vFkv3(@HQ8^Wuhhsdfa z0d+2wXk9FbqhSijg>$IrvNJBB%v>AV_FR4p;>GRVIW8MEYZ2h}g`Gf~Z!g>xo(WQV zVgq;2721R$*I5Eq!FLsRptIzHYmXrr;g1$7~;V85bWG zdQ*!^aJQb+9cg;P=GBXP?El|l%gZcdX5OY(7ndNlvRX;rwU2wc)iC@}>91Swxw>d{ z5Tap3QSWXFL-{?AsXpI8g8&U9h6VxJuNP+}N<26|jAASvqvi++qyv%o0~Gi(N+M2T zjKnyKG3_DBh&F*DcUI^yr?nyy=@TZP+#|bXV`sC}TJ)Ingm_lpNH;blOIvVVFUFq0J!{&#sZv>zGUEL29ADI$e4D8ok}2nR@4F zk$ztaf}U5dhC{jSn2U)esk==tgpj1i-6v9_jf{z(R*dUh6Ze?uX%sJlZoK@u}Cn62z*h7_5DR;+Ie!@d+aB z0mir3h~=@68zllCu=>lJi4vo~(VHNOPgf$~m)Ou=p_o0(-db5c*Iwi3)Y&`kDyk(? zk#P%eo^$OD_RpP_ZZDg*&b9Awyg!*k5;aYn71#+8QYx&TYu{s6sI<7s-A*o%pcH{p zD9u0-&Y5aIpz2B};gV-2vyiJNf)oT{9t1H$0YumEUxP>9fBm;-@W|^`;Va|+0^1KA AWB>pF literal 0 HcmV?d00001 diff --git a/obj/Debug/RetrieveSMARTData.csproj.FileListAbsolute.txt b/obj/Debug/RetrieveSMARTData.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..35b901d --- /dev/null +++ b/obj/Debug/RetrieveSMARTData.csproj.FileListAbsolute.txt @@ -0,0 +1,6 @@ +c:\users\danzeglo\documents\visual studio 2015\Projects\RetrieveSMARTData\RetrieveSMARTData\bin\Debug\RetrieveSMARTData.exe.config +c:\users\danzeglo\documents\visual studio 2015\Projects\RetrieveSMARTData\RetrieveSMARTData\bin\Debug\RetrieveSMARTData.exe +c:\users\danzeglo\documents\visual studio 2015\Projects\RetrieveSMARTData\RetrieveSMARTData\bin\Debug\RetrieveSMARTData.pdb +c:\users\danzeglo\documents\visual studio 2015\Projects\RetrieveSMARTData\RetrieveSMARTData\obj\Debug\RetrieveSMARTData.csprojResolveAssemblyReference.cache +c:\users\danzeglo\documents\visual studio 2015\Projects\RetrieveSMARTData\RetrieveSMARTData\obj\Debug\RetrieveSMARTData.exe +c:\users\danzeglo\documents\visual studio 2015\Projects\RetrieveSMARTData\RetrieveSMARTData\obj\Debug\RetrieveSMARTData.pdb diff --git a/obj/Debug/RetrieveSMARTData.csprojResolveAssemblyReference.cache b/obj/Debug/RetrieveSMARTData.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..effd9bfda8818db2ccf15bd31609d88a23b38d6d GIT binary patch literal 2076 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 cx~9_O7x=}(#Q$YrLsfim0jb}Uen&mQ~&?~ literal 0 HcmV?d00001 diff --git a/obj/Debug/RetrieveSMARTData.pdb b/obj/Debug/RetrieveSMARTData.pdb new file mode 100644 index 0000000000000000000000000000000000000000..f447e4fdcd4bf5b4051e9204d9bfe1f4faca8a6f GIT binary patch literal 15872 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