在中断文件系统驱动程序的 API 时如何检查堆栈和 IRP?

How to inspect the stack and IRP when breaking in a file system driver’s API?

提问人:TestUser 提问时间:7/15/2023 更新时间:7/15/2023 访问量:82

问:

我目前正在研究Windows内核调试。 我使用 GetVolumeInformation 函数创建了一个示例程序并获取所有驱动程序的所有属性,但后来我的导师要求我在文件系统驱动程序的 API 函数之一中命中断点时检查堆栈和 IRP(I/O 请求数据包)。 有没有办法在WinDbg中查看堆栈和IRP?

我设置了实时调试环境,并将示例程序放在调试目标计算机上。 我使用 x (examine) 命令找到了以下函数,我认为它看起来像文件系统驱动程序。

x nt!NtQueryVolumeInformationFile

我在上述函数上设置了 bp,但我看不到任何 IRP...... 我想我不明白如何查看 IRP 和文件系统驱动程序......

Windows 调试 Windbg

评论

0赞 Neitsa 7/15/2023
你是否知道比这更多的信息,因为这是一个相当棘手的问题:IRP 实际上是在这个函数中构建的,并发送给相关的驱动程序。如果单步执行该函数,你将看到代码引用一个FILE_OBJECT,然后引用一个设备对象(要为其发送 IRP),然后生成 IRP 并将其发送到设备堆栈,面向特定驱动程序。

答: 暂无答案