首页
社区
课程
招聘
[求助]誰能帮我讲讲IoGetTopLevelIrp这个函数
发表于: 2008-9-14 16:48 7711

[求助]誰能帮我讲讲IoGetTopLevelIrp这个函数

2008-9-14 16:48
7711
如题,我已经看这DDK了,但是没看懂!到底他有什么用啊。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 750
活跃值: (228)
能力值: ( LV9,RANK:780 )
在线值:
发帖
回帖
粉丝
2
提示:IoGetTopLevelIrp(),利用这个来检查是Kernel其他driver产生的Irp还是Usermode直接产生(当然是通过FileIO的API)的Irp。如果是FS产生的Irp,之前一定有过该Usermode对应的Irp被Pass。(关于CacheManager怎么运作,可能你得去看一下MSDN)。

  如果是Usermode直接下來的Irp,检查其Flag。在有PAGING_IO和NONCACHE_IO两个Flag时,FS不会去跟CacheManager要这段资料。所以不会有第2个Irp出現。

。。。。。

     我也不是很懂,百度来的,我还没有接触这类东西,这个应该对你有帮助,希望楼主多多开源,让大家学习学习,具体看下这里:http://www.programmer-club.com/pc2020v5/forum/ShowSameTitleN.asp?URL=N&board_pc2020=driver&id=1231
2008-9-15 12:57
0
雪    币: 71
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
我也搞不懂,只找到这个
VOID
STDCALL
IoSetTopLevelIrp (
        IN        PIRP        Irp
        )
{
        PETHREAD Thread;

        Thread = PsGetCurrentThread ();
        Thread->TopLevelIrp->TopLevelIrp = Irp;
}

PIRP
STDCALL
IoGetTopLevelIrp (
        VOID
        )
{
        return (PsGetCurrentThread ()->TopLevelIrp->TopLevelIrp);
}
2008-9-17 13:09
0
游客
登录 | 注册 方可回帖
返回
//