デバイスが USB (リムーバブル ハード ドライブ) 経由で接続されているか、SATA (内蔵ハード ドライブ) 経由で接続されているかを知りたいです。それが私がデバイスのリストを取得する方法です
SP_DEVINFO_DATA volumeData;
volumeData.cbSize = sizeof (SP_DEVINFO_DATA);
SP_DEVICE_INTERFACE_DATA volumeInterfaceData;
volumeInterfaceData.cbSize = sizeof (SP_DEVICE_INTERFACE_DATA);
wchar_t buffer[1024];
PSP_DEVICE_INTERFACE_DETAIL_DATA volumeInterfaceDetail;
volumeInterfaceDetail = (PSP_DEVICE_INTERFACE_DETAIL_DATA)buffer;
volumeInterfaceDetail->cbSize = sizeof (SP_DEVICE_INTERFACE_DETAIL_DATA);
for (int j = 0; SetupDiEnumDeviceInterfaces (hVolumeInfo, 0, &GUID_DEVINTERFACE_VOLUME, j, &volumeInterfaceData); j++) {
DWORD bufferPathSize = offsetof (SP_DEVICE_INTERFACE_DETAIL_DATA, DevicePath) + sizeof(TCHAR);
SetupDiGetDeviceInterfaceDetail (
hVolumeInfo,
&volumeInterfaceData,
volumeInterfaceDetail,
bufferPathSize,
&bufferPathSize,
&volumeData
));
<some actions here>
}
このような操作の後、接続されたボリュームごとに次のような結果が得られます。
volumeInterfaceDetail->DevicePath: "\\\\?\\storage#volume#{3ec3ba03-2789-11e4-8251-806e6f6e6963}#0000000015f00000#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}"
検討中のデバイスが接続されているインターフェイス (USB、SATA) を検出するにはどうすればよいですか? または、WinAPI を使用して外部 HDD と内部 HDD を区別する他の方法はありますか?