1

如果我有一个完整的 IRP,并且我正在 IRP Monitor 等程序中查看它,我如何知道这个 IRP 与哪些函数相关联,例如 IRP_MJ_READ 或 IRP_MJ_WRITE?

4

1 回答 1

1

IRP本身不与任何功能“关联”。每个IRP都有至少一个I/O 堆栈位置- 在结构的开头,IO_STACK_LOCATION您可以查看

UCHAR                  MajorFunction;
UCHAR                  MinorFunction;

主要功能

IRP 主要功能代码,指示要执行的 I/O 操作的类型。

正是这里的价值观IRP_MJ_XXX。然而复杂的 IRP 有多个堆栈位置,不同的位置可以有不同的MajorFunction. 说最初(在顶部堆栈中)设置为文件系统或磁盘驱动程序的 IRP 具有IRP_MJ_WRITE(或读取)。但是当磁盘驱动程序将此 irp 发送到端口驱动程序时 - 已IRP_MJ_SCSI在堆栈中设置

于 2017-12-14T01:12:18.223 回答