SetupDiGetDeviceInterfacePropertyKeys 函数检索设备属性键数组,这些键表示为设备接口设置的设备属性。
语法
WINSETUPAPI BOOL SetupDiGetDeviceInterfacePropertyKeys(
  [in]            HDEVINFO                  DeviceInfoSet,
  [in]            PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,
  [out, optional] DEVPROPKEY                *PropertyKeyArray,
  [in]            DWORD                     PropertyKeyCount,
  [out, optional] PDWORD                    RequiredPropertyKeyCount,
  [in]            DWORD                     Flags
);
参数
[in] DeviceInfoSet
设备信息集的句柄。 此设备信息集包含一个设备接口,可检索设备属性键数组,这些键表示为设备接口设置的设备属性。
[in] DeviceInterfaceData
指向 SP_DEVICE_INTERFACE_DATA 结构的指针,该结构表示要为其检索所请求的设备属性键数组的设备接口。
[out, optional] PropertyKeyArray
指向接收 DEVPROPKEY 类型值数组的缓冲区的指针,其中每个值都是为设备接口设置的设备属性的设备属性键。 指针是可选的,可以为 NULL。 有关详细信息,请参阅本主题后面的 “备注 ”部分。
[in] PropertyKeyCount
PropertyKeyArray 缓冲区的大小(以 DEVPROPKEY 类型元素为单位)。 如果 PropertyKeyArray 为 NULL,则必须将 PropertyKeyCount 设置为零。
[out, optional] RequiredPropertyKeyCount
指向接收所请求设备属性键数的 DWORD 类型变量的指针。 指针是可选的,可以设置为 NULL。
[in] Flags
该参数必须设置为零。
返回值
如果成功,函数将返回 TRUE 。 否则,它将返回 FALSE,并且可以通过调用 GetLastError 来检索记录的错误。
下表包含此函数可能记录的一些更常见的错误代码。
| 返回代码 | 说明 | 
|---|---|
| 
 | Flags 的值不为零。 | 
| 
 | DevInfoSet 指定的设备信息集无效。 | 
| 
 | 内部数据值无效。 | 
| 
 | 参数无效。 一种可能性是 DevInterfaceData 指定的设备接口无效。 | 
| 
 | 用户缓冲区无效。 一种可能性是 PropertyKeyArray 为 NULL, 而 PropertKeyCount 不为零。 . | 
| 
 | 由 DeviceInterfaceData 指定的设备接口不存在。 | 
| 
 | PropertyKeyArray 缓冲区不够大,无法容纳所有请求的属性键。 | 
| 
 | 系统内存不足,无法完成操作。 | 
注解
SetupDiGetDeviceInterfacePropertyKeys 是 统一设备属性模型的一部分。
如果 PropertyKeyArray 缓冲区的大小不足以容纳所有请求的属性键, 则 SetupDiGetDeviceInterfacePropertyKeys 不会检索任何属性键并返回ERROR_INSUFFICIENT_BUFFER。 如果调用方提供了 RequiredPropertyKeyCount 指针, 则 SetupDiGetDeviceInterfacePropertyKeys 会将 *RequiredPropertyKeyCount 的值设置为 PropertyKeyArray 缓冲区的 DEVPROPKEY 类型化值所需的大小。
若要检索设备接口属性,请调用 SetupDiGetDeviceInterfaceProperty, 若要设置设备接口属性,请调用 SetupDiSetDeviceInterfaceProperty。
要求
| 要求 | 值 | 
|---|---|
| 最低受支持的客户端 | 在 Windows Vista 和更高版本的 Windows 中可用。 | 
| 目标平台 | 桌面对于通用,请调用 CM_Get_Device_Interface_Property_Keys | 
| 标头 | setupapi.h (包括 Setupapi.h) | 
| Library | Setupapi.lib | 
| DLL | Setupapi.dll |