SetupDiGetDeviceProperty 函数检索设备实例属性。
语法
WINSETUPAPI BOOL SetupDiGetDevicePropertyW(
  [in]            HDEVINFO         DeviceInfoSet,
  [in]            PSP_DEVINFO_DATA DeviceInfoData,
  [in]            const DEVPROPKEY *PropertyKey,
  [out]           DEVPROPTYPE      *PropertyType,
  [out, optional] PBYTE            PropertyBuffer,
  [in]            DWORD            PropertyBufferSize,
  [out, optional] PDWORD           RequiredSize,
  [in]            DWORD            Flags
);
参数
[in] DeviceInfoSet
包含要检索设备实例属性的设备实例的设备信息集的句柄。
[in] DeviceInfoData
指向 SP_DEVINFO_DATA 结构的指针,该结构表示要为其检索设备实例属性的设备实例。
[in] PropertyKey
指向 DEVPROPKEY 结构的指针,该结构表示所请求的设备实例属性的设备属性键。
[out] PropertyType
指向 DEVPROPTYPE 类型变量的指针,该变量接收请求的设备实例属性的 property-data-type 标识符,其中 property-data-type 标识符是基数据类型标识符与 base-data 类型修饰符之间的按位 OR。
[out, optional] PropertyBuffer
指向接收请求的设备实例属性的缓冲区的指针。 仅当缓冲区大到足以保存所有属性值数据时,SetupDiGetDeviceProperty 才检索请求的属性。 指针可以为 NULL。 如果指针设置为 NULL 并提供 RequiredSize , 则 SetupDiGetDeviceProperty 将在 *RequiredSize 中返回属性的大小(以字节为单位)。
[in] PropertyBufferSize
PropertyBuffer 缓冲区的大小(以字节为单位)。 如果 PropertyBuffer 设置为 NULL, 则 PropertyBufferSize 必须设置为零。
[out, optional] RequiredSize
指向 DWORD 类型变量的指针,该变量接收设备实例属性(如果检索到属性)的大小(以字节为单位),如果缓冲区不够大,则接收所需的缓冲区大小。 此指针可以设置为 NULL。
[in] Flags
该参数必须设置为零。
返回值
SetupDiGetDeviceProperty 如果成功,则返回 TRUE 。 否则,它将返回 FALSE,并且可以通过调用 GetLastError 来检索记录的错误。
下表包含此函数可能记录的一些更常见的错误代码。
| 返回代码 | 说明 | 
|---|---|
| 
 | Flags 的值不为零。 | 
| 
 | DevInfoSet 指定的设备信息集无效。 | 
| 
 | 提供的参数无效。 一种可能性是设备信息元素无效。 | 
| 
 | PropertyKey 提供的属性键无效。 | 
| 
 | 未指定的内部数据值无效。 | 
| 
 | 用户缓冲区无效。 一种可能性是 PropertyBuffer 为 NULL , 而 PropertBufferSize 不为零。 | 
| 
 | DevInfoData 指定的设备实例不存在。 | 
| 
 | PropertyBuffer 缓冲区太小,无法容纳请求的属性值,或者传递给系统调用的内部数据缓冲区太小。 | 
| 
 | 系统内存不足,无法完成操作。 | 
| 
 | 请求的设备属性不存在。 | 
| 
 | 调用方没有管理员权限。 | 
注解
SetupDiGetDeviceProperty 是 统一设备属性模型的一部分。
SetupAPI 仅支持 SetupDiGetDeviceProperty 的 Unicode 版本。
若要获取表示为设备实例设置的设备属性的设备属性键,请调用 SetupDiGetDevicePropertyKeys。
若要设置设备实例属性,请调用 SetupDiSetDeviceProperty。
要求
| 要求 | 值 | 
|---|---|
| 最低受支持的客户端 | 在 Windows Vista 和更高版本的 Windows 中可用。 | 
| 目标平台 | Desktop 要通用,请调用 CM_Get_DevNode_Property | 
| 标头 | setupapi.h (包括 SetupAPI.h) | 
| Library | SetupAPI.lib | 
| DLL | SetupAPI.dll | 
| API 集 | 在 Windows 8) 中引入的 ext-ms-win-setupapi-classinstallers-l1-1-0 ( |