CM_Get_DevNode_Property_Keys有没有办法获取密钥的名称

时间:2016-01-04 08:51:22

标签: c++ delphi setupapi

我能够获取devnode的属性键(DEVPROPKEY)。但是我没有找到获取这些键的名称和/或描述的方法。 也可以使用CM_Get_DevNode_PropertyW获取这些属性键的值。

如果我使用LOOP获取密钥和值,我会获得除密钥名称之外的所有信息?

EDIT 密钥是在devpkey.h中预定义的,例如;

DEFINE_DEVPROPKEY(DEVPKEY_Device_DeviceDesc,             0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 2);     // DEVPROP_TYPE_STRING
DEFINE_DEVPROPKEY(DEVPKEY_Device_HardwareIds,            0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 3);     // DEVPROP_TYPE_STRING_LIST

目前我认为唯一的方法是将从功能获得的密钥与预定义密钥进行比较。 使用Delphi我必须将所有这些密钥从C ++代码转换为Delphi代码。 我认为应该有一种方法可以通过cfgmgr.dll或setupapi.dll的函数来获取名称吗?

2 个答案:

答案 0 :(得分:0)

这是我从MSDN论坛得到的答案: 名称不以可查询的方式存储在系统中。你必须查看类型定义才能知道它们是什么

这意味着我必须将从funcion获得的密钥与定义的密钥进行比较。

我希望命名和/或描述存储在某处,因此我不必根据系统语言翻译命名。这是因为键值以系统语言返回。

答案 1 :(得分:0)

如果DEVPROPKEY实际上是一个PROPERTYKEY(很多),请使用PSGetNameFromPropertyKey(propsys.h / propsys.dll)

相关问题