title: Extracting HDD interface type with using DeviceIoControl()
body: <p>I need to extract HDD interface type: in the result I need to get, for example, SATA-II.
  I tried to use <code>DeviceIoControl()</code> and <code>IOCTL_STORAGE_QUERY_PROPERTY</code> with <code>STORAGE_DEVICE_DESCRIPTOR -&gt; BusType</code>:</p>
  
  <pre><code>typedef enum _STORAGE_BUS_TYPE {
  BusTypeUnknown = 0x00,
  BusTypeScsi = 0x1,
  BusTypeAtapi = 0x2,
  BusTypeAta = 0x3,
  BusType1394 = 0x4,
  BusTypeSsa = 0x5,
  BusTypeFibre = 0x6,
  BusTypeUsb = 0x7,
  BusTypeRAID = 0x8,
  BusTypeiScsi = 0x9,
  BusTypeSas = 0xA,
  BusTypeSata = 0xB,
  BusTypeSd = 0xC,
  BusTypeMmc = 0xD,
  BusTypeVirtual = 0xE,
  BusTypeFileBackedVirtual = 0xF,
  BusTypeMax = 0x10,
  BusTypeMaxReserved = 0x7F
  } STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE;
  </code></pre>
  
  <p>but in this case I got <code>BusTypeAta</code> value, however, the interface type of the installed hard disk there is <strong>SATA-II</strong>.
  Which structures and control codes for <code>DeviceIoControl()</code> should I use to get HDD interface type? (WMI do not offer)
  Thanks!</p>