阅读:1990回复:12
讨论:大家有没有解决irp重入的好办法。
讨论:大家有没有解决irp重入的好办法。例如:在ReadDispatch中使用ZwReadFile函数是否会产生 IRP_MJ_READ 重入,又该怎么解决,除了使用ReadCompletion或者自己构造IRP外还有什么其他方法?听说可以使用对比线程ID的方法具体怎么实现? :)
|
|
|
沙发#
发布于:2005-02-07 18:38
看了两年前Coolice的贴子很受启发。Coolice人在何方?还这个坛子不?
|
|
|
板凳#
发布于:2005-02-06 14:48
自己构造IRP使很好,但是如果我要同时完成文件打开、读取、写入这个时候怎样构造IRP是否要分别构造,还是只构造打开操作的?那读取、和写入ZwReadFile、ZwWriteFile怎么获取文件拘柄?谁有好的方法和Source code 请发出来,谢谢了!
[编辑 - 2/14/05 by paladinii] |
|
|
地板#
发布于:2005-02-06 13:36
我在以下情况的时候遇到过:以CACHE方式在IRP_MJ_READ请求执行
CcCopyRead的时候产生PAGE FAULT,然后系统会调用IoPageRead等待数据页被掉入,这时就会重新产生一个IRP_MJ_READ的请求以NOCACHE方式实际读取数据,这就是重入.解决方法:参照CDFS之:CdSetThreadContext函数,其中有个判断 中有这句话:FlagOn( (ULONG_PTR) CurrentThreadContext, 0x3 ) 这个0x3表示:出现<1>.嵌套调用<2>.当前线程的TOPLEVEL被CACHE MANAGER占用<3>.当前线程的TOPLEVEL被modified page writer占用 我的理解如果有什么问题,请告诉我:ciomhan@163.com |
|
地下室#
发布于:2005-01-21 13:17
和sport有什么关系??
|
|
|
5楼#
发布于:2005-01-20 14:48
[url] [/url] http://sports.sina.com.cn/
那篇文章? |
|
6楼#
发布于:2005-01-20 11:29
两种方法:
第一是自己构造IRP,直接call下层文件系统 第二是记录当前threadID,放到一个链表中,在IRP_MJ_READ中比较当前threadID和链表中的threadID,如果当前threadID已经记录在链表中,就认为是重入,不做处理,直接放行 我现在基本在2K下用的构造IRP,9x下用链表记录 |
|
7楼#
发布于:2005-01-20 11:27
[quote]写错了,是shadow device object。说了很多年了~~~ 这个只能避免在create中重入 [/quote] read that article on osr.com carefully |
|
|
8楼#
发布于:2005-01-19 21:36
写错了,是shadow device object。说了很多年了~~~ 这个只能避免在create中重入 |
|
9楼#
发布于:2005-01-19 20:49
写错了,是shadow device object。说了很多年了~~~
|
|
|
10楼#
发布于:2005-01-19 19:52
自己分配IRP多好,特别READ这种无须特殊处理的.
|
|
|
11楼#
发布于:2005-01-19 19:01
楼主,能否在说详细点?谢谢!
|
|
|
12楼#
发布于:2005-01-19 18:47
control device object
|
|
|