阅读:1448回复:1
有个问题实在搞不明白,希望znSoft 等牛人帮我看下~~~~~
可能下面的理解有错误,希望牛人指出:
1,我仿照WDK下面的Ctx例子,在Create 的后调函数里面设置文件流的上下文,文件流句柄的上下文。这样至少来自应用层的文件读写会被 设置上下文。 2,在处理paging_io 的时候,一般是由VMM,Cache Manager等发起的,而他们创建的文件对象FO可以不经过文件驱动的Create 函数,所以 获得它们的文件流句柄上下文时一般为空。但如果有应用程序在paging_io 之前读写文件,一般会调用Create函数,这样应用程序的读写会 在paging_io 之前设置文件流的上下文,所以上面的FO得到的文件流上下文不为空。 3,但我在paging_io(write 操作)里面获取文件流上下文时,老是和Create 里面设置的不同(是不是有其它原因啊?)~~~~~~~~~~~~。 4,我在write(是paging_io操作)里面调用FltGetFileNameInformation(通过FltDoCompletionProcessingWhenSafe调用的,不会有IRQL太 高的问题) 一般得不到文件的名字,这可能和TopLevelIrp有关----系统为防止死锁。但我在Close的前调函数里面调用 FltGetFileNameInformation 一般也会有问题,不知道问什么(这里的文件对象和paging_io 里面的文件对象相同)。 关键为什么我在paging_io 里面得到的文件流上下文和在Create 的后调函数里面设置文件流的上下文有不同~~~~~~~~~~ |
|
沙发#
发布于:2008-07-01 10:30
怎么没人啊~~~~
|
|