阅读:3455回复:11
为什么写文件时IRP_MJ_WRITE会发两次
我写的文件过滤程序对文件1234。txt写进行监视,每次的写入数据量都很小(几十字节),发现很多情况下会进入两次,但有时只有一次,这使得这里的加密程序会进行两次加密,读出的时候不一致,是不是IRP_MJ_WRITE发了两次呢,为什么?
|
|
最新喜欢:![]() |
沙发#
发布于:2003-08-08 21:22
看前人贴子.
|
|
板凳#
发布于:2003-08-09 14:13
vcmfc就是热心,好同志。
|
|
|
地板#
发布于:2003-08-09 23:14
高手不愿意回答这样的问题我给你回答一下:
第一次是cccopywrite ,会引起fast i/o 操作 第2次当然就是noncachewrite拉,写盘的! 别忘了送点分! |
|
|
地下室#
发布于:2003-08-11 09:41
可是我在写的时候已经进行了Irp->Flags的判断,他两次都是43(IRP_NOCACHE|IRP_PAGING_IO|IRP_INPUT_OPERATION),所以还是作不出判断来,这到底是怎么回事呢?
|
|
5楼#
发布于:2003-08-22 11:37
我写的文件过滤程序对文件1234。txt写进行监视,每次的写入数据量都很小(几十字节),发现很多情况下会进入两次,但有时只有一次,这使得这里的加密程序会进行两次加密,读出的时候不一致,是不是IRP_MJ_WRITE发了两次呢,为什么?
------------------------ 奇怪!如果两次写的数据都一样,就权当是写了两次,怎么回影响加密哪?你是不是对一个磁盘进行了多次Attach? :) |
|
6楼#
发布于:2003-08-23 23:34
在处理IRP_MJ_WRITE时在适当的位置调用一下IoGetTopLevelIrp(),如果返回值是<某个常数,则表示调用你的分派例程为更改页面书写器or映射页面书写器or缓存管理器等内河线程,当你知道是这些线程时,你可以放弃加密。
|
|
7楼#
发布于:2007-07-20 15:07
隔了将近4年 这个帖子还保存 不错
|
|
8楼#
发布于:2007-07-21 00:25
引用第6楼robin12于2003-08-23 23:34发表的 : 某个常数?? :更改页面书写器or映射页面书写器or缓存管理器等内河线程 都是些什么数值?? 哪里有资料,可以一阅??指点一下谢谢 |
|
9楼#
发布于:2007-07-21 11:31
微软的东西当然要去MSDN:
IoGetTopLevelIrp can return NULL, an arbitrary file-system-specific value (such as a pointer to the current IRP), or one of the flags listed in the following table. If the current thread holds no resources above the file system, IoGetTopLevelIrp returns NULL. If the file system is the top-level component for the current thread, IoGetTopLevelIrp returns a pointer to the current IRP. If a component other than the file system is the top-level component for the current thread, IoGetTopLevelIrp returns one of the following flags: FSRTL_FSP_TOP_LEVEL_IRP This is a recursive call. FSRTL_CACHE_TOP_LEVEL_IRP The cache manager is the top-level component for the current thread. FSRTL_MOD_WRITE_TOP_LEVEL_IRP The modified page writer is the top-level component for the current thread. FSRTL_FAST_IO_TOP_LEVEL_IRP The cache manager is the top-level component for the current thread, and the current thread is in a fast I/O path. |
|
|
10楼#
发布于:2009-11-04 18:31
谁能对这个问题详细的解释一下?
|
|
11楼#
发布于:2009-12-11 15:31
能够长久的都是精品!!
|
|