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

问题描述:

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

如果我使用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的函数调用来获取名称?

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

这意味着我将不得不比较从函数得到的密钥和定义的密钥。

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