1

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

如果我使用 LOOP 来获取键和值,我会得到除键名之外的所有信息吗?

编辑键是在 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 的函数调用来获取名称?

4

2 回答 2

0

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

这意味着我必须将从函数中获得的键与定义的键进行比较。

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

于 2016-01-10T17:52:27.077 回答
0

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

于 2019-02-07T14:37:42.180 回答