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