阅读:2188回复:5
如何让指定进程打开文件不与其它进程共享文件缓冲?
我在开发文件加密过滤驱动的时候,需要根据打开文件的进程控制驱动是否要对文件加解密。发现一个问题就是,比如允许msdev.exe这个进程访问*.c文件,不允许其它所有进程访问。在msdev.exe这个进程打开一个文件的时候,解密的数据被缓冲管理器缓冲了,其它进程打开这个文件的时候没有从磁盘读数据,而是从缓冲中得到了明文的数据。
如何才能控制受控文件流不与其它文件流共享缓冲? |
|
沙发#
发布于:2009-04-15 14:40
我想到一个解决办法不知道是否可行:
就是过滤驱动的读写操作不处理PAGING IO只处理Cached IO,这样系统缓存中保存的数据都是密文。 在IRP_MJ_CREATE中判断当前创建操作是否是指定的进程发出的,如果是,就在StreamHandleContext中做上加密标记,在读写操作中完成相应的加解密。带这个加密标记的流在IRP_MJ_CLOSE时加上加密尾标。 |
|
板凳#
发布于:2009-04-15 15:40
不行!mapfile 就不能搞定。
|
|
地板#
发布于:2009-04-15 17:57
|
|
地下室#
发布于:2009-04-16 01:01
Memory mapped file is using VMM not CM
|
|
5楼#
发布于:2009-04-23 15:18
双缓冲
|
|