枚举已安装的设备接口

不得通过直接访问注册表项来枚举系统中的设备接口。 与任何注册表项一样,密钥的位置、名称或格式可能会在不同版本的 Windows 之间更改。

使用以下准则安全地枚举设备接口。

用户模式应用程序应遵循以下步骤:

  • 使用 配置管理器 函数:

    使用 CM_Get_Device_Interface_List 检索指定 InterfaceClassGuid 中的设备接口列表。 通过将 pDeviceID 参数设置为特定设备实例标识符,可以选择将列表限制为仅由特定设备公开的设备接口。

    若要仅包含系统中 (启用) 的设备接口,请在 ulFlags 参数中设置 CM_GET_DEVICE_INTERFACE_LIST_PRESENT 标志。

  • 使用 SetupApi 函数:

    1. 使用 SetupDiGetClassDevsSetupDiGetClassDevsExFlags 参数中设置DIGCF_DEVICEINTERFACE标志来检索指定设备接口类的设备接口。 你可以选择将 枚举器 参数设置为特定设备实例标识符,将列表限制为仅由特定设备公开的设备接口。

      若要仅包含系统中 (启用) 的设备接口,请在 Flags 参数中设置DIGCF_PRESENT标志。

    2. 使用 SetupDiEnumDeviceInterfaces 枚举上述调用返回的接口。

内核模式驱动程序应使用 IoGetDeviceInterfaces 检索指定 InterfaceClassGuid 中的设备接口列表。 可以选择通过设置 PhysicalDeviceObject 参数,将列表限制为仅由特定设备公开的设备接口。