gpt4 book ai didi

windows - 遍历 WDM 设备堆栈

转载 作者:可可西里 更新时间:2023-11-01 10:01:29 25 4
gpt4 key购买 nike

据我所知,只能从下往上迭代 WDM 设备的设备堆栈,因为 DEVICE_OBJECT 有一个 AttachedDevice 成员(但没有 LowerDevice 成员)。幸运的是,AddDevice 回调接收到 PhysicalDeviceObject,因此您可以遍历整个堆栈。

在我的过滤器驱动程序中,我试图确定我是否已经在过滤某个设备对象。 (假设我对此有正当理由。请耐心等待。)我的想法是遍历堆栈中的每个 DEVICE_OBJECT 并将其 DriverObject 成员与我的进行比较。

从 IoGetAttachedDeviceReference 的存在来看,我认为仅仅访问 AttachedDevice 并不是一件安全的事情,因为设备有突然消失的风险。但是,IoGetAttachedDeviceReference 将我直接带到堆栈的顶部,这对我不利。

那么,是否有一种安全的方法来遍历设备堆栈?

最佳答案

正确,您不能安全地遍历 AttachedDevice 链,除非您能以某种方式保证堆栈不会被拆除(例如,如果您有一个引用堆栈的事件文件对象)。在 Win2K 上,这几乎是您唯一的选择。

在 XP 和更高版本中,首选方法实际上是从堆栈顶部向下遍历。您可以通过调用 IoGetAttachedDeviceReference 然后调用 IoGetLowerDeviceObject 来完成此操作。

-斯科特

关于windows - 遍历 WDM 设备堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5095406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com