SetupDiGetCustomDevicePropertyA 函数 (setupapi.h)

SetupDiGetCustomDeviceProperty 函数从注册表中检索指定的自定义设备属性。

语法

WINSETUPAPI BOOL SetupDiGetCustomDevicePropertyA(
  [in]            HDEVINFO         DeviceInfoSet,
  [in]            PSP_DEVINFO_DATA DeviceInfoData,
  [in]            PCSTR            CustomPropertyName,
  [in]            DWORD            Flags,
  [out, optional] PDWORD           PropertyRegDataType,
  [out]           PBYTE            PropertyBuffer,
  [in]            DWORD            PropertyBufferSize,
  [out, optional] PDWORD           RequiredSize
);

参数

[in] DeviceInfoSet

设备信息集的句柄,其中包含设备信息元素,该元素表示要为其检索自定义设备属性的设备。

[in] DeviceInfoData

指向 SP_DEVINFO_DATA 结构的指针,该结构指定 DeviceInfoSet 中的设备信息元素。

[in] CustomPropertyName

表示自定义属性的注册表值名称。

[in] Flags

一个标志值,该值指示应如何返回请求的信息。 标志可以是零或下列值之一:

DICUSTOMDEVPROP_MERGE_MULTISZ

如果设置,函数将检索特定于设备实例的属性值和特定于硬件 ID 的属性值,并串联为REG_MULTI_SZ类型的字符串。 (有关详细信息,请参阅此参考页上的 “备注 ”部分。)

[out, optional] PropertyRegDataType

指向类型为 DWORD 的变量的指针,该变量接收检索到的属性的数据类型。 数据类型指定为表示注册表数据类型的REG_前缀常量之一。 此参数是可选的,可以为 NULL

[out] PropertyBuffer

指向接收请求的属性信息的缓冲区的指针。

[in] PropertyBufferSize

PropertyBuffer 缓冲区的大小(以字节为单位)。

[out, optional] RequiredSize

指向类型为 DWORD 的变量的指针,该变量接收接收所请求信息所需的缓冲区大小(以字节为单位)。 此参数是可选的,可以为 NULL。 如果指定此参数, 则 SetupDiGetCustomDeviceProperty 将返回所需的大小,而不管 PropertyBuffer 缓冲区是否足够大以接收请求的信息。

返回值

如果操作成功, SetupDiGetCustomDeviceProperty 返回 TRUE。 否则,函数返回 FALSE ,并且可以通过调用 GetLastError 来检索记录的错误。 如果 PropertyBuffer 缓冲区的大小不足以接收请求的信息, 则 SetupDiGetCustomDeviceProperty 返回 FALSE ,并且对 GetLastError 的后续调用将返回ERROR_INSUFFICIENT_BUFFER。

注解

SetupDiGetCustomDeviceProperty 检索与单个设备实例或与特定硬件 ID 匹配的所有设备关联的设备属性。 (有关硬件 ID 的信息,请参阅 设备标识字符串) 。

供应商可以使用 INF DDInstall.HW 部分中INF AddReg 指令并指定 HKR 注册表根来设置设备实例的属性。

只有系统可以设置硬件 ID 的属性。 系统为某些硬件 ID 提供“Icon”属性。

函数首先检查指定设备实例是否存在指定的属性。 如果是,则返回 属性的值。 如果不是,函数会检查是否存在与指定设备实例的硬件 ID 匹配的所有设备的属性。 如果是,则返回 属性的值。 如果在 Flags 中设置了DICUSTOMDEVPROP_MERGE_MULTISZ,则函数将返回与设备实例和硬件 ID 关联的属性值(如果它们都存在)。

注意

setupapi.h 标头将 SetupDiGetCustomDeviceProperty 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

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

另请参阅

SetupDiGetClassRegistryProperty

SetupDiGetDeviceRegistryProperty

SetupDiOpenDevRegKey

SetupDiSetClassRegistryProperty

SetupDiSetDeviceRegistryProperty