阅读:2002回复:9
关于文件过滤驱动的若干问题
我正在编写一个文件过滤驱动(使用的是IFS Kits),基本功能是拦截用户的读写操作,实现访问控制和文件的实时备份,现有如下问题请教:
1.如何获知读写文件的是哪位用户?我们都知道在Unix里可采用inode里的uid 和gid信息,可在windows里如何识别是哪位用户呢? 在IRP参数里可没有uid 和gid 等信息. 2.实现实时备份,如果对每个IRP写操作都备份,是不是太多了? 如果是,那什么时候实现备份比较恰当? 3.备份是不是就备份IRP参数中的buffer部分? 提前谢谢大家的指点! 我的联系方式: deng_liao@hotmail.com |
|
最新喜欢:![]() |
沙发#
发布于:2003-07-17 09:37
我来答,我也做过。
1。谁说没有,就有SID,在核心论坛有人提过,你查一下。不可能得不到的。参考源程序请查OSR newgroups. 2.有两种情况下要备份:一是打开时间,二是修改时候(也可以把这部分移到第一种情况里。),第二种情况有些技术难点,你要去克服,如果你只备份一般应用数据,那没有这种情况,当你备份系统文件时候,你就要面对了。 3.访问buffer,你会难上加难,就简单,自已去打开来备份。 今天心情不错了。一口气写了这么多。 祝你好运。 |
|
板凳#
发布于:2003-07-17 13:54
vcmfc老大:
谢谢您的指点,我会一一落实您的指示,有不懂的地方,还望您进一步指教. |
|
地板#
发布于:2003-07-17 17:18
大家好。我刚开始使用DDK,也需要做一个监视硬盘读写的东东,请问,这样的东西应该从什么地方开始考虑啊?或者有没有什么现成的例子可以用啊?谢谢。
|
|
地下室#
发布于:2003-07-17 22:48
我更正一下我的第一个问题:除了知道访问者的uid,我还想知道文件所有者的uid, 这样的话,只有文件所有者可访问他的文件,其它人可被屏蔽掉,请问如何知道文件所有者uid?
vcmfc大哥,我在参数里还是没找到你说的sid信息,能不能详细一点? |
|
5楼#
发布于:2003-07-18 09:42
晕...........
你在驱动中可以得到发该IRP的所有者的SID,参考有www.sysinternals.com有一个例子或osr,tonny也讲过。 在IRP strack里有个域就是存放当前所有者的SID。好好打。 |
|
6楼#
发布于:2003-07-18 09:42
灌水去了。。。。。。。。。。。。。。。
|
|
7楼#
发布于:2003-07-22 22:41
新的问题请教:
1. vcmfc兄谈到在文件修改前保存,但我如何知道文件是被打开修改而非只是阅读? 2. 在编辑器中修改完文件,然后对其保存, 好象会有很多的IRP_MJ_WRITE发生. 请问, 在这种情况下, 每一个IRP_MJ_WRITE的(buffer)缓冲参数中是一样的内容还是不同的内容? 换句话说, 文件的全部内容是被分隔成不同的IRP_MJ_WRITE写回,还是用相同的IRP_MJ_WRITE写回? 3. 我能不能拦截IRP_MJ_WRITE操作实现文件备份? |
|
8楼#
发布于:2003-07-23 14:20
我来帮VCMFC老兄回答一下你的问题吧,这是我自己做FILTER的一点经验,希望有所帮助。
I/O管理器发出一个IRP_MJ_WRITE时有两种情况,一种是往缓存里写,一种是往磁盘上写,区别就在于Irp->Flags域的IRP_NOCACHE位是否置上。只有当IRP_NOCACHE位被置上时才是真正的向磁盘写的操作。我不太清楚你说的备份是什么意思,是备份原文件还是备份对原文件做的任何修改,但我想总之离不开IRP_MJ_WRITE+IRP_NOCACHE。我在我的FILTER里就是这样做的。 |
|
9楼#
发布于:2003-07-23 23:43
ZDSHOME兄: 我是想在每次对文件做修改前对整个文件备份,且放在不同的地方(包括文件的属性),这样一来, 我可以知道在不同阶段所做的修改, 或者说可以回滚到不同的阶段.
请问你是如何实现的呢? 能不能给我一点idea? 多谢指点! |
|