访问设备驱动程序属性

在 Windows Vista 和更高版本的 Windows 中, 统一设备属性模型 包括用于描述设备驱动程序特征的设备驱动程序属性。 统一设备属性模型使用 属性键 来表示这些属性。

Windows Server 2003、Windows XP 和 Windows 2000 也支持其中大多数设备驱动程序属性。 但是,这些早期版本的 Windows 不支持统一设备属性模型的属性键。 相反,这些版本的 Windows 使用以下机制来表示和访问相应的属性信息:

为了保持与这些早期版本的 Windows 的兼容性,Windows Vista 和更高版本还支持这两种方法来访问有关设备接口的信息。 但是,你应该使用属性键在 Windows Vista 和更高版本上访问这些属性。 有关如何使用属性键访问 Windows Vista 及更高版本上的设备驱动程序属性的信息,请参阅 访问 Windows Vista 和更高版本 (设备实例属性)

访问具有相应注册表项值的设备驱动程序属性

若要访问 Windows Server 2003、Windows XP 和 Windows 2000 上的设备驱动程序属性,请执行以下步骤:

  1. 通过使用 ulFlags CM_REGISTRY_SOFTWARE 或 SetupDiOpenDevRegKey范围为 DICS_FLAG_GLOBAL 且 KeyTypeDIREG_DRV)调用 CM_Open_DevNode_Key 来检索设备实例的软件密钥句柄。

  2. 在调用 RegQueryValueExRegSetValueEx 时提供句柄,以检索或设置与设备实例驱动程序属性对应的注册表项值。

  3. 调用 RegCloseKey 函数以在不再需要访问密钥后关闭软件注册表项。

设备软件密钥中统一设备属性模型属性及其相应注册表值的表是:

统一属性模型属性 (regstr.h) 中定义的软件密钥注册表值名称
DEVPKEY_Device_DriverDate REGSTR_VAL_DRIVERDATEDATA
DEVPKEY_Device_DriverVersion REGSTR_VAL_DRIVERVERSION
DEVPKEY_Device_DriverDesc REGSTR_VAL_DRVDESC
DEVPKEY_Device_DriverInfPath REGSTR_VAL_INFPATH
DEVPKEY_Device_DriverInfSection REGSTR_VAL_INFSECTION
DEVPKEY_Device_DriverInfSectionExt REGSTR_VAL_INFSECTIONEXT
DEVPKEY_Device_DriverProvider REGSTR_VAL_PROVIDER_NAME

使用 SetupDiGetDriverInstallParams 检索驱动程序排名

在 Windows Server 2003、Windows XP 和 Windows 2000 上,可以通过调用 SetupDiGetDriverInstallParams 检索当前为设备安装的驱动程序的排名。 SetupDiGetDriverInstallParams 检索指向输出参数 DriverInstallParams 中驱动程序的SP_DRVINSTALL_PARAMS结构的指针。 检索到的 SP_DRVINSTALL_PARAMS 结构的 Rank 成员包含驱动程序排名。