SetupDiGetDevicePropertyKeys 函数 (setupapi.h)

SetupDiGetDevicePropertyKeys 函数检索设备属性键数组,这些键表示为设备实例设置的设备属性。

语法

WINSETUPAPI BOOL SetupDiGetDevicePropertyKeys(
  [in]            HDEVINFO         DeviceInfoSet,
  [in]            PSP_DEVINFO_DATA DeviceInfoData,
  [out, optional] DEVPROPKEY       *PropertyKeyArray,
  [in]            DWORD            PropertyKeyCount,
  [out, optional] PDWORD           RequiredPropertyKeyCount,
  [in]            DWORD            Flags
);

参数

[in] DeviceInfoSet

设备信息集的句柄。 此设备信息集包含此函数检索设备属性键数组的设备实例。 属性键表示为设备实例设置的设备属性。

[in] DeviceInfoData

指向 SP_DEVINFO_DATA 结构的指针,该结构表示要为其检索所请求的设备属性键数组的设备实例。

[out, optional] PropertyKeyArray

指向接收 DEVPROPKEY 类型值数组的缓冲区的指针,其中每个值都是表示为设备实例设置的设备属性的设备属性键。 指针是可选的,可以为 NULL。 有关详细信息,请参阅本主题后面的 “备注 ”部分。

[in] PropertyKeyCount

PropertyKeyArray 缓冲区的大小(以 DEVPROPKEY 类型值表示)。 如果 PropertyKeyArray 设置为 NULL,则必须将 PropertyKeyCount 设置为零。

[out, optional] RequiredPropertyKeyCount

指向接收所请求设备属性键数的 DWORD 类型变量的指针。 指针是可选的,可以设置为 NULL

[in] Flags

该参数必须设置为零。

返回值

如果成功,SetupDiGetDevicePropertyKeys 将返回 TRUE 。 否则,它将返回 FALSE,并且可以通过调用 GetLastError 来检索记录的错误。

下表包含此函数可能记录的一些更常见的错误代码。

返回代码 说明
ERROR_INVALID_FLAGS
Flags 的值不为零。
ERROR_INVALID_HANDLE
DevInfoSet 指定的设备信息集无效。
ERROR_INVALID_PARAMETER
提供的参数无效。 一种可能性是设备信息元素无效。
ERROR_INVALID_DATA
内部数据值无效。
ERROR_INVALID_USER_BUFFER
用户缓冲区无效。 一种可能性是 PropertyKeyArrayNULL而 PropertKeyCount 不为零。
ERROR_NO_SUCH_DEVINST
DevInfoData 指定的设备实例不存在。
ERROR_INSUFFICIENT_BUFFER
PropertyKeyArray 缓冲区太小,无法容纳所有请求的属性键。
ERROR_NOT_ENOUGH_MEMORY
系统内存不足,无法完成操作。

注解

SetupDiGetDevicePropertyKeys统一设备属性模型的一部分。

如果 ProperKeyArray 缓冲区不够大,无法容纳所有请求的属性键, 则 SetupDiGetDevicePropertyKeys 不会检索任何属性键并返回ERROR_INSUFFICIENT_BUFFER。 如果调用方提供了 RequiredPropertyKeyCount 指针, 则 SetupDiGetDevicePropertyKeys 会将 *RequiredPropertyKeyCount 的值设置为 PropertyKeyArray 缓冲区的所需大小(以 DEVPROPKEY 类型值为单位)。

若要检索设备实例属性,请调用 SetupDiGetDeviceProperty,若要设置设备实例属性,请调用 SetupDiSetDeviceProperty

要求

   
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 中可用。
目标平台 桌面对于通用,请调用 CM_Get_DevNode_Property_Keys
标头 setupapi.h (包括 Setupapi.h)
Library Setupapi.lib
DLL Setupapi.dll

另请参阅

SetupDiGetDeviceProperty

SetupDiSetDeviceProperty