如何解决如何调用在默认 IRQL 中调出的内核函数?内存管理器不应该将它们带回内存吗?
我是直接调用其他驱动中的一些函数(调用那个驱动的DriverEntry)
问题是包含该函数的页面似乎已被调出,因为 MmIsAddressValid 返回 false 并且当我尝试转到该地址时,windbg 也会这样说:
Memory access error in 'u F72BA57F'
但是地址是正确的(符号得到解析,我可以看到这实际上是该驱动程序的驱动程序条目)
所以我的问题是如何将分页代码带回内存以便我可以调用它?我不会在我的代码中使用 IRQL 并且它在默认 IRQL 下运行。我想当我在默认的 IRQL 下运行时,内存管理器会处理被调出的内容,并在我尝试跳转到它时将其带回内存,但它似乎没有这样做,因为我得到了 BSOD
默认 IRQL 我的意思是 PASSIVE_LEVEL,根据我的理解,驱动程序中的默认设置是如果我们不搞乱它,但如果我错了,请纠正我。
我认为使用 MmProbeAndLock 可能会有所帮助,但我不确定如何将驱动程序的 EntryPoint 地址转换为 MDL?因为它似乎需要一个 IRP 来构建 MDL,但我没有发送 IRP?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。