Я пытаюсь написать код 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, если бы мог, но из того, что я прочитал, не видно, что он даст мне действительно достоверную информацию о том, исправлен или нет диск)