Поделиться через


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

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

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

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

    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 для получения уникального идентификатора экземпляра устройства .