SetupDiGetClassPropertyEx 函数检索本地或远程计算机上的设备安装程序类或设备接口类的类属性。
语法
WINSETUPAPI BOOL SetupDiGetClassPropertyExW(
  [in]            const GUID       *ClassGuid,
  [in]            const DEVPROPKEY *PropertyKey,
  [out]           DEVPROPTYPE      *PropertyType,
  [out, optional] PBYTE            PropertyBuffer,
  [in]            DWORD            PropertyBufferSize,
  [out, optional] PDWORD           RequiredSize,
  [in]            DWORD            Flags,
  [in, optional]  PCWSTR           MachineName,
                  PVOID            Reserved
);
参数
[in] ClassGuid
指向 GUID 的指针,该 GUID 标识要为其检索设备类的设备属性的设备设置类或设备接口类。 有关指定类类型的信息,请参阅 Flags 参数。
[in] PropertyKey
指向 DEVPROPKEY 结构的指针,该结构表示所请求的设备类属性的设备属性键。
[out] PropertyType
指向 DEVPROPTYPE 类型变量的指针,该变量接收所请求的设备类属性的属性数据类型标识符,其中 property-data-type 标识符是基数据类型标识符与属性数据类型修饰符之间的按位 OR。
[out, optional] PropertyBuffer
指向接收请求的设备类属性的缓冲区的指针。 仅当缓冲区足够大以容纳所有属性值数据时,SetupDiGetClassPropertyEx 才检索请求的属性值。 指针可以为 NULL。 如果指针设置为 NULL 并提供 RequiredSize , 则 SetupDiGetClassPropertyEx 返回设备类属性的大小(以字节为单位),以 *RequiredSize 为单位。
[in] PropertyBufferSize
PropertyBuffer 缓冲区的大小(以字节为单位)。 如果 PropertyBuffer 设置为 NULL,则必须将 PropertyBufferSize 设置为零。
[out, optional] RequiredSize
指向 DWORD 类型的变量的指针,该变量在检索到属性时接收设备类属性的大小(以字节为单位),如果缓冲区不够大,则接收所需的缓冲区大小。 此指针可以设置为 NULL。
[in] Flags
以下值之一,指定类是设备安装类还是设备接口类:
DICLASSPROP_INSTALLER
ClassGuid 指定设备安装类。 此标志不能与DICLASSPROP_INTERFACE一起使用。
DICLASSPROP_INTERFACE
ClassGuid 指定设备接口类。 此标志不能与DICLASSPROP_INSTALLER一起使用。
[in, optional] MachineName
指向以 NULL 结尾的字符串的指针,该字符串包含计算机的 UNC 名称(包括“\”前缀)。 指针可以设置为 NULL。 如果 MachineName 为 NULL, 则 SetupDiGetClassPropertyEx 将从本地计算机检索请求的设备类属性。
注意
从Windows 8和Windows Server 2012开始,不支持使用此函数访问远程计算机,因为此功能已被删除。
Reserved
此参数必须设置为 NULL。
返回值
SetupDiGetClassPropertyEx 如果成功,则返回 TRUE 。 否则,它将返回 FALSE,并且可以通过调用 GetLastError 来检索记录的错误。
下表包含此函数可能记录的一些更常见的错误代码。
| 返回代码 | 说明 | 
|---|---|
| 
 | Flags 的值不为零。 | 
| 
 | 由 ClassGuid 指定的设备安装程序类无效。 仅当指定了DICLASSPROP_INSTALLER标志时,才会发生此错误。 | 
| 
 | 未指定的参数无效。 | 
| 
 | PropertyKey 提供的属性键无效。 | 
| 
 | 设备接口引用字符串无效。 如果指定了DICLASSPROP_INTERFACE标志,则可能会返回此错误。 | 
| 
 | 未指定的内部数据值无效。 | 
| 
 | 用户缓冲区无效。 一种可能性是 PropertyBuffer 为 NULL,PropertyBufferSize 不为零。 | 
| 
 | 由 MachineName 指定的计算机名无效。 | 
| 
 | ClassGuid 指定的设备接口类不存在。 仅当指定了DICLASSPROP_INTERFACE标志时,才会发生此错误。 | 
| 
 | 传递给系统调用的内部数据缓冲区太小。 | 
| 
 | 系统内存不足,无法完成操作。 | 
| 
 | 请求的设备属性不存在。 | 
| 
 | 调用方没有管理员权限。 | 
注解
SetupDiGetClassPropertyEx 是 统一设备属性模型的一部分。
SetupAPI 仅支持 Unicode 版本的 SetupDiGetClassPropertyEx。
SetupDiGetClassPropertyEx 的调用方必须是 Administrators 组的成员才能设置设备接口属性。
若要获取表示远程计算机上为设备类设置的设备属性的设备属性键,请调用 SetupDiGetClassPropertyKeysEx。
若要检索本地计算机上的设备类属性,请调用 SetupDiGetClassProperty。
若要在本地计算机上设置设备类属性,请调用 SetupDiSetClassProperty, 若要在远程计算机上设置设备类属性,请调用 SetupDiSetClassPropertyEx。
要求
| 要求 | 值 | 
|---|---|
| 最低受支持的客户端 | 在 Windows Vista 和更高版本的 Windows 中可用。 | 
| 目标平台 | 桌面对于通用,请调用 CM_Get_Class_Property_ExW | 
| 标头 | setupapi.h (包括 Setupapi.h) | 
| Library | Setupapi.lib |