阅读:1680回复:7
文件映射
象NOTEPAD,WORD之类的的文件,当创建后,就被映射成内存文件,在READ中再也捕获不到了IRP了,有什么方法能捕获映射文件的读?
请各位高手指导,谢谢了 |
|
沙发#
发布于:2008-06-08 21:56
只需要处理pageing io
|
|
|
板凳#
发布于:2008-06-10 15:48
请问znsoft版主 ,pageing io是指读到映射文件还是从映射文件读出
我想做的是捕获从映射文件读出数据的操作 |
|
驱动小牛
![]() |
地板#
发布于:2008-06-11 16:08
关于文件映射,在XP之后是做了特殊处理的.这个也许也是论坛有些人卖关子的地方,前段时间我安心分析了一下.在DRIVERENTRY里面注册的FS_FILTER_CALLBACKS一系列函数可以准确的判断文件映射,但这些回调函数里面似乎又找不到实际数据(至少我没找到).所以我的处理是在这些函数里面给对应的FileObject做一个标记,之后来的PagingIo中可以提取出实际数据.具体的数据可以参考FCB里面的ValidDataLength等一系列参数.
|
|
地下室#
发布于:2008-06-11 17:00
能说说FS_FILTER_CALLBACKS里是怎么判断的吗?
preCallBack---->pageio----->postCallBack 是这个流程吗? |
|
5楼#
发布于:2008-06-12 08:15
试了一下, 用MapViewofFile 在驱层内没有IRP出现, 包在PAGEIO等. CallBacK是出来的, 怀疑是不是直接发IRP到底屋驱动了, 不经过上层的过滤层?
|
|
驱动小牛
![]() |
6楼#
发布于:2008-06-12 15:58
内存映射只是不一定马上有IRP,最终写磁盘肯定还是通过IRP来的.
|
|
7楼#
发布于:2008-06-13 10:02
看来对文件映射还没有一个好的解决办法
|
|