SetupDiSetClassPropertyExW 函数 (setupapi.h)

SetupDiSetClassPropertyEx 函数为本地或远程计算机上的设备安装类设备接口类设置设备属性。

语法

WINSETUPAPI BOOL SetupDiSetClassPropertyExW(
  [in]           const GUID       *ClassGuid,
  [in]           const DEVPROPKEY *PropertyKey,
  [in]           DEVPROPTYPE      PropertyType,
  [in, optional] const PBYTE      PropertyBuffer,
  [in]           DWORD            PropertyBufferSize,
  [in]           DWORD            Flags,
  [in, optional] PCWSTR           MachineName,
                 PVOID            Reserved
);

参数

[in] ClassGuid

指向 GUID 的指针,该 GUID 标识要为其设置设备属性的设备设置类或设备接口类。 有关如何指定类类型的信息,请参阅 Flags 参数。

[in] PropertyKey

指向 DEVPROPKEY 结构的指针,该结构表示要设置的设备类属性的设备属性键。

[in] PropertyType

一个 DEVPROPTYPE 类型的值,表示类属性的属性数据类型标识符。 有关 property-data-type 标识符的详细信息,请参阅本主题后面的 “备注 ”部分。

[in, optional] PropertyBuffer

指向包含类属性值的缓冲区的指针。 如果删除属性或属性值,则必须将此指针设置为 NULL,并且 PropertyBufferSize 必须设置为零。 有关属性值要求的详细信息,请参阅本主题后面的 “备注 ”部分。

[in] PropertyBufferSize

PropertyBuffer 缓冲区的大小(以字节为单位)。 属性缓冲区大小必须与 PropertyType 提供的属性数据类型标识符保持一致。 如果 PropertyBuffer 设置为 NULL则 PropertyBufferSize 必须设置为零。

[in] Flags

以下值之一,指定类是设备安装类还是设备接口类:

DICLASSPROP_INSTALLER

ClassGuid 指定设备安装类。 此标志不能与 DICLASSPROP_INTERFACE 一起使用。

DICLASSPROP_INTERFACE

ClassGuid 指定设备接口类。 此标志不能与 DICLASSPROP_INSTALLER 一起使用。

[in, optional] MachineName

指向以 NULL 结尾的 Unicode 字符串的指针,该字符串包含计算机的 UNC 名称(包括“\”前缀)。 此指针可以设置为 NULL。 如果指针为 NULL则 SetupDiSetClassPropertyEx 将设置本地计算机上安装的类的类属性。

注意

从Windows 8和Windows Server 2012开始,不支持使用此函数访问远程计算机,因为此功能已被删除。

Reserved

此参数必须设置为 NULL

返回值

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

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

返回代码 说明
ERROR_INVALID_FLAGS
Flags 的值无效。
ERROR_INVALID_CLASS
由 ClassGuid 指定的设备安装类无效。 仅当指定了DICLASSPROP_INSTALLER标志时,才会发生此错误。
ERROR_INVALID_REFERENCE_STRING
设备接口引用字符串无效。 仅当指定了DICLASSPROP_INTERFACE标志时,才会发生此错误。
ERROR_INVALID_REG_PROPERTY
PropertyKey 提供的属性键无效。
ERROR_INVALID_DATA
未指定的内部数据值无效。 如果 ClassGuid 值不是有效的 GUID,或者属性值与 PropertyType 指定的属性类型不匹配,则可能会记录此错误。
ERROR_INVALID_USER_BUFFER
用户缓冲区无效。 一种可能性是 PropertyBufferNULL,PropertyBufferSize 不是零。
ERROR_INVALID_MACHINENAME
MachineName 指定的计算机名称无效。
ERROR_NO_SUCH_INTERFACE_CLASS
ClassGuid 指定的设备接口类不存在。 仅当指定了DICLASSPROP_INTERFACE标志时,才会发生此错误。
ERROR_INSUFFICIENT_BUFFER
传递给系统调用的内部数据缓冲区太小。
ERROR_NOT_ENOUGH_MEMORY
系统内存不足,无法完成操作。
ERROR_NOT_FOUND
找不到未指定的项。 一种可能性是要删除的属性不存在。
ERROR_ACCESS_DENIED
调用方没有管理员权限。

注解

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

SetupAPI 仅支持 SetupDiSetClassPropertyEx 的 Unicode 版本。

SetupDiSetClassPropertyEx 的调用方必须是管理员组的成员才能设置设备接口属性。

SetupDiSetClassPropertyEx 对属性数据类型标识符和属性值强制执行要求。

若要获取表示远程计算机上为设备类设置的设备属性的设备属性键,请调用 SetupDiGetClassPropertyKeysEx

若要检索本地计算机上的设备类属性,请调用 SetupDiGetClassProperty 若要检索远程计算机上的设备类属性,请调用 SetupDiGetClassPropertyEx

若要在本地计算机上设置设备类属性,请调用 SetupDiSetClassProperty

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 中可用。
目标平台 桌面
标头 setupapi.h (包括 Setupapi.h)
Library Setupapi.lib

另请参阅

SetupDiGetClassProperty

SetupDiGetClassPropertyEx

SetupDiGetClassPropertyKeysEx

SetupDiSetClassProperty