lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
阅读:2154回复:1

请问IRP_PAGING_IO怎么和IRP_MOUNT_COMPLETION的值是相等的?

楼主#
更多 发布于:2007-01-11 15:03
  用
 KdPrint(("IRP_NOCACHE=%0x,IRP_PAGING_IO=%0x,IRP_MOUNT_COMPLETION=%0x\n,IRP_SYNCHRONOUS_API=%0x,IRP_ASSOCIATED_IRP=%0x,IRP_BUFFERED_IO=%0x\nIRP_DEALLOCATE_BUFFER=%0x,IRP_INPUT_OPERATION=%0x\n IRP_SYNCHRONOUS_PAGING_IO=%0x,IRP_CREATE_OPERATION=%0x\nIRP_READ_OPERATION=%0x,IRP_WRITE_OPERATION=%0x,IRP_CLOSE_OPERATION=%0x\n IRP_DEFER_IO_COMPLETION=%0x",
                  IRP_NOCACHE,     IRP_PAGING_IO,    IRP_MOUNT_COMPLETION,      IRP_SYNCHRONOUS_API,    IRP_ASSOCIATED_IRP,    IRP_BUFFERED_IO,     IRP_DEALLOCATE_BUFFER,    IRP_INPUT_OPERATION,      IRP_SYNCHRONOUS_PAGING_IO,    IRP_CREATE_OPERATION,     IRP_READ_OPERATION,    IRP_WRITE_OPERATION,    IRP_CLOSE_OPERATION,      IRP_DEFER_IO_COMPLETION));    
    打印出来如下?

/////////////////
Irp->Flags=884

IRP_NOCACHE=1,
IRP_PAGING_IO=2,
IRP_MOUNT_COMPLETION=2
IRP_SYNCHRONOUS_API=4,
IRP_ASSOCIATED_IRP=8,
IRP_BUFFERED_IO=10
IRP_DEALLOCATE_BUFFER=20,
IRP_INPUT_OPERATION=40
IRP_SYNCHRONOUS_PAGING_IO=40,
IRP_CREATE_OPERATION=80
IRP_READ_OPERATION=100,
IRP_WRITE_OPERATION=200,
IRP_CLOSE_OPERATION=400
IRP_DEFER_IO_COMPLETION=800
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
沙发#
发布于:2007-01-11 16:26
// It should also be noted that the logic for completing a Mount request

    // operation is exactly the same as a Page Read.  No assumptions should be

    // made here about this being a Page Read operation w/o carefully checking

    // to ensure that they are also true for a Mount.  That is:

    //

    //     IRP_PAGING_IO  and  IRP_MOUNT_COMPLETION

    //

    // are the same flag in the IRP.

    //

    // Also note that the last time the IRP is touched for a close operation

    // must be just before the event is set to the signaled state.  Once this

    // occurs, the IRP can be deallocated by the thread waiting for the event.



查看NT DDK可以发现Paging I/O请求和Mount 请求(IRP_PAGING_IO,IRP_MOTJNT_COMPLETION)的值相等。这是因为I/O管理器把Mount当作同步Paging I/O读请求。因此对于Mount 请求,I/O管理器也进行和同步Paging I/O相同的事后处理。
游客

返回顶部