如何从 Windows 内核驱动程序获取设备实例路径?

How to get Device Instance Path from Windows kernel driver?

看看这个例子:Windows 7 中的一个 USB 设备被报告有 Device instance path(DevinstPath) USB\VID_1EAB&PID_0501&25C389C1&0&1 并且我确切地知道它对应于注册表中所谓的硬件密钥(hwkey)。

现在我的问题是:当我的 KMDF 驱动程序代码具有该 USB 设备的 WDFDEVICE 句柄时,我如何知道它的 DevinstPath?

我知道我可以

但我不知道如何得到所谓的"instance-path"。有内核大师可以告诉我如何获得吗?

MSDN 文档对此似乎含糊不清!

顺便说一句:我也意识到用户层函数 SetupDiGetDeviceInstanceId 实际上是 returns DevinstPath——尽管它被命名为 "InstanceId".

可以使用DEVPKEY_Device_InstanceId查询设备实例路径,使用WdfDeviceAllocAndQueryPropertyExIoGetDevicePropertyData(传递WDM物理设备对象)

设备实例id是自增序列。 您可以在注册表中找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum; Rules:NextPareneID.XXXXXXXX.N XXXXXX 使用 UUID 计算 crc32 值(test ok) N为1~9 Device Instance id格式为N&PareneID&random's number&index

enter image description here