代码之家  ›  专栏  ›  技术社区  ›  the_endian

给定IO请求数据包,我如何判断它与哪些功能关联?E、 g IRP\U MJ\U读取

  •  1
  • the_endian  · 技术社区  · 7 年前

    如果我有一个完整的IRP,并且我正在IRP Monitor之类的程序中查看它,那么我如何判断该IRP与哪些函数相关,例如IRP\u MJ\u READ或IRP\u MJ\u WRITE?

    1 回复  |  直到 7 年前
        1
  •  1
  •   RbMm    7 年前

    IRP 本身不与任何功能“关联”。每一个 IRP公司 至少有一个 I/O Stack Locations -在开始时 IO_STACK_LOCATION 可以查看的结构

    UCHAR                  MajorFunction;
    UCHAR                  MinorFunction;
    

    主要功能

    指示要执行的输入/输出操作类型的IRP主要功能代码。

    精确此处值 IRP_MJ_XXX . 然而,复杂的IRP有多个堆栈位置,不同的位置可以有不同的 MajorFunction . 假设初始设置为文件系统或磁盘驱动程序的IRP(在顶层堆栈中)具有 IRP_MJ_WRITE (或读取)。但当磁盘驱动程序将此irp发送到端口驱动程序时-已经 IRP_MJ_SCSI 在堆栈中设置

    推荐文章