Перечисление установленных устройств

Не следует перечислять устройства напрямую с помощью ключей реестра. Разделы реестра не содержат необходимые сведения для перечисления устройств, установленных в системе. Эти сведения, такие как наличие устройства на самом деле или фантомного устройства (которое не подключено), хранятся менеджером Plug and Play (PnP). Диспетчер PnP также выполняет дополнительную фильтрацию сведений о реестре.

Чтобы безопасно перечислить установленные устройства, выполните следующие действия.

  • Использование функций диспетчера конфигурации:

    1. Используйте CM_Get_Device_ID_List для получения списка уникальных строк идентификатора экземпляра устройства . Чтобы получить сведения только для устройств, присутствующих в системе, задайте CM_GETIDLIST_FILTER_PRESENT в параметре ulFlags .

    2. Вы можете использовать уникальный идентификатор экземпляра устройства с CM_Locate_DevNode для извлечения DEVINST, представляющего устройство для использования с другими API Configuration Manager.

  • Использование функций SetupAPI:

    1. Используйте SetupDiGetClassDevs для получения сведений для набора устройств. Чтобы получить сведения только для устройств, присутствующих в системе, задайте DIGCF_PRESENT в параметре Flags .

    2. Используйте SetupDiEnumDeviceInfo для перечисления устройств в наборе.

    3. Вы можете использовать SP_DEVINFO_DATA , возвращенные SetupDiEnumDeviceInfo , с другими API SetupApi или использовать SetupDiGetDeviceInstanceId для получения уникального идентификатора экземпляра устройства (ID) для устройства.