title: Cannot get S.M.A.R.T. information for external drives
body: <p>I am trying to get SMART information for external USB drives. I am using the following query to get the temperature of the drive, however the query always return a single object in the collection which is my internal HDD. </p>
  
  <pre><code>ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI",
  "SELECT * FROM MSStorageDriver_ATAPISmartData");
  
  foreach (ManagementObject queryObj in searcher.Get())
  {
     if (queryObj["VendorSpecific"] != null)
     {
         byte[] arrVendorSpecific = (byte[])(queryObj["VendorSpecific"]);
         string temp = arrVendorSpecific[115].ToString();
      }
   }
  </code></pre>
  
  <p>So far I have tried 3 different drives from different vendors but all my attempts at getting the information failed.</p>
  
  <p>What am I doing wrong and how can I get the SMART information for external drives through WMI?</p>
  
  <p>EDIT: I tried <a href="http://www.passmark.com/products/diskcheckup.htm" rel="nofollow">PassMarks's DiskCheckup</a> and it is able to get the SMART information for all drives.</p>
  
  <p>EDIT2: </p>
  
  <p>Digging deeper I found this paragraph in <a href="http://www.smartmontools.org/" rel="nofollow">SmartMonTools</a> INSTALL file under Windows: </p>
  
  <blockquote>
    <p>SCSI and USB devices are accessed through <strong>SPTI</strong>. Special driver support
        is not required.</p>
  </blockquote>
  
  <p>Now I think all I need is to put that into an WMI query, can someone help?</p>