我正在尝试编写C ++ / Win32代码,这些代码可以确定给定的文件路径是否指向固定磁盘。 (我绝对不能将WMI用于此任务。)
我最好的选择-至少from this thread-似乎是SetupDiXXXX函数。这就是我正在尝试的。
我已经使用SetupDiGetClassDevs成功枚举了磁盘设备,并验证它们是否已修复。
// Get all devices classes of type "DISKDRIVE"
const auto hDevInfo = SetupDiGetClassDevs(
&GUID_DEVCLASS_DISKDRIVE,
nullptr,
nullptr,
DIGCF_PRESENT);
但是要将设备链接回给定的磁盘路径,我会出现(from that thread I mentioned),我还需要枚举设备 接口 。 According to the documentation,这意味着我必须将DIGCF_DEVICEINTERFACE标志提供给SetupDiGetClassDevs。 这意味着我还必须为同一函数提供“枚举器”参数。这使我想到了我的问题。
我可以用于SetupDiGetClassDevs和GUID_DEVCLASS_DISKDRIVE的有效枚举器的列表在哪里?有清单吗?
我已经知道一个:“ SCSI”。但是此代码需要在任何人的机器上工作。那我还应该检查什么?是否有头文件列出了所有文件?我可以调用一个函数来枚举它们吗?
(如果可以的话,我会使用DeviceIoControl进行此操作,但根据我的阅读,该信息不会出现,这将为我提供有关驱动器是否已固定的真正可靠的信息)< / p>