如何确定通过SetupDiGetClassDevs枚举Windows磁盘设备时使用的枚举数

时间:2019-01-08 19:37:43

标签: c++ winapi setupapi

我正在尝试编写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>

0 个答案:

没有答案