SetupDiSetDeviceProperty 函数设置设备实例属性。
语法
WINSETUPAPI BOOL SetupDiSetDevicePropertyW(
  [in]           HDEVINFO         DeviceInfoSet,
  [in]           PSP_DEVINFO_DATA DeviceInfoData,
  [in]           const DEVPROPKEY *PropertyKey,
  [in]           DEVPROPTYPE      PropertyType,
  [in, optional] const PBYTE      PropertyBuffer,
  [in]           DWORD            PropertyBufferSize,
  [in]           DWORD            Flags
);
参数
[in] DeviceInfoSet
设备信息集的句柄。 此设备信息集包含一个设备信息元素,该元素表示要为其设置设备实例属性的设备实例。
[in] DeviceInfoData
指向 SP_DEVINFO_DATA 结构的指针,该结构标识要为其设置设备实例属性的设备实例。
[in] PropertyKey
指向 DEVPROPKEY 结构的指针,该结构表示要设置的设备实例属性的设备属性键。
[in] PropertyType
一个 DEVPROPTYPE 类型的值,表示设备实例属性的属性数据类型标识符。 有关详细信息,请参阅本主题后面的 “备注 ”部分。
[in, optional] PropertyBuffer
指向包含设备实例属性值的缓冲区的指针。 如果删除属性或将其设置为 NULL 值,则此指针必须为 NULL, 并且 PropertyBufferSize 必须设置为零。
[in] PropertyBufferSize
PropertyBuffer 缓冲区的大小(以字节为单位)。 如果 PropertyBuffer 为 NULL,则必须将 PropertyBufferSize 设置为零。
[in] Flags
该参数必须设置为零。
返回值
如果成功,函数将返回 TRUE 。 否则,它将返回 FALSE,并且可以通过调用 GetLastError 来检索记录的错误。
下表包含此函数可能记录的一些更常见的错误代码。
| 返回代码 | 说明 | 
|---|---|
| 
 | Flags 的值不为零。 | 
| 
 | DevInfoSet 指定的设备信息集无效。 | 
| 
 | 提供的参数无效。 一种可能性是设备信息元素无效。 | 
| 
 | PropertyKey 提供的属性键无效或属性不可写。 | 
| 
 | PropertyType 提供的属性数据类型标识符或 PropertyBuffer 提供的属性值无效。 | 
| 
 | 用户缓冲区无效。 一种可能性是 PropertyBuffer 为 NULL, PropertyBufferSize 不为零。 | 
| 
 | DevInfoData 指定的设备实例不存在。 | 
| 
 | 传递给系统调用的内部数据缓冲区太小。 | 
| 
 | 系统内存不足,无法完成操作。 | 
| 
 | 找不到未指定的内部元素。 一种可能性是要删除的属性不存在。 | 
| 
 | 调用方没有管理员权限。 | 
注解
SetupDiSetDeviceProperty 是 统一设备属性模型的一部分。
SetupAPI 仅支持 SetupDiSetDeviceProperty 的 Unicode 版本。
SetupDiSetDeviceProperty 的调用方必须是 Administrators 组的成员才能设置设备实例属性。
SetupDiSetDeviceProperty 强制要求属性数据类型标识符和属性值。
若要获取为设备设置的实例设备属性的设备属性键,请调用 SetupDiGetDevicePropertyKeys。
若要检索设备实例属性,请调用 SetupDiGetDeviceProperty。
要求
| 最低受支持的客户端 | 在 Windows Vista 和更高版本的 Windows 中可用。 | 
| 目标平台 | 桌面对于通用,请调用 CM_Set_DevNode_Property | 
| 标头 | setupapi.h (包括 Setupapi.h) | 
| Library | Setupapi.lib |