joshua_yu
驱动小牛
驱动小牛
  • 注册日期2004-12-06
  • 最后登录2010-12-01
  • 粉丝0
  • 关注0
  • 积分428分
  • 威望54点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
阅读:1712回复:10

tooflat老大,看了你的sfilter代码问两个问题

楼主#
更多 发布于:2005-04-25 16:50
看了你的代码以后感觉收益菲浅,对你的奉献精神表示钦佩!上次的一个帖子要给你分的,可惜一直都没有遇到你,希望你进来给分!

这几天实验了一下你的程序,遇到了一些问题:
1.我在希望监控的目录下面创建一个子目录,然而在系统信息目录下面却创建了一个文件,我跟踪了一下,发现这可能是因为系统会这样打开目录IEExplorer.exe Create h:\\user\\sub,而不是h:\\user\\sub\\,如果是后者,则判断Options & FILE_DIRECTORY_FILE时会成功,而前者则不会成功。

2.在监控目录下面创建了一个word文档,然后编辑和保存并且关闭,可是发现会产生死锁现象。

上面是我将你的程序作了一些修改后进行初步测试发现,也可能是我理解你的思路出现问题,不知道在测试当中出现过这样的情况吗?

[编辑 -  4/25/05 by  joshua_yu]
xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-25 17:14
我也看了那个代码,请问你知道解密的原理吗,我就是不懂在解密时为什么是~MyBuffer,这个MyBuffer是新创建的内存,它没有存放任何数据呀,帮忙解释一下
joshua_yu
驱动小牛
驱动小牛
  • 注册日期2004-12-06
  • 最后登录2010-12-01
  • 粉丝0
  • 关注0
  • 积分428分
  • 威望54点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-25 17:35
MyBuffer是我们自己创建的一个加解密缓冲区,因为我们不能修改传递下来的系统缓冲区,应该始终保持内存中的文件为明文而写入磁盘的是密文。

如果读的时候是没有存放数据,而是发送到文件系统去完成读,在读完成例程当中我们获取的文件内容就是存放在这个MyBuffer中的,然后进行解密保存到用户缓冲区中的。

写的时候将上面传下来的缓冲区内容复制到MyBuffer中,然后加密,将MyBuffer写入到磁盘上,你跟踪一下Write过程,看看MyBuffer中是否有你希望写的内容。

[编辑 -  4/25/05 by  joshua_yu]
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-26 11:01
看了你的代码以后感觉收益菲浅,对你的奉献精神表示钦佩!上次的一个帖子要给你分的,可惜一直都没有遇到你,希望你进来给分!

这几天实验了一下你的程序,遇到了一些问题:
1.我在希望监控的目录下面创建一个子目录,然而在系统信息目录下面却创建了一个文件,我跟踪了一下,发现这可能是因为系统会这样打开目录IEExplorer.exe Create h:\\user\\sub,而不是h:\\user\\sub\\,如果是后者,则判断Options & FILE_DIRECTORY_FILE时会成功,而前者则不会成功。

不知道你想说的是什么,如果你创建目录,需要指定FILE_DIRECTORY_FILE,如果是创建文件,需要指定
FILE_NON_DIRECTORY_FILE

2.在监控目录下面创建了一个word文档,然后编辑和保存并且关闭,可是发现会产生死锁现象。

上面是我将你的程序作了一些修改后进行初步测试发现,也可能是我理解你的思路出现问题,不知道在测试当中出现过这样的情况吗?

没有出现过,不知道你做了哪些修改

[编辑 -  4/25/05 by  joshua_yu]
joshua_yu
驱动小牛
驱动小牛
  • 注册日期2004-12-06
  • 最后登录2010-12-01
  • 粉丝0
  • 关注0
  • 积分428分
  • 威望54点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-04-26 11:19
我说的不是自己创建目录,而是点击右键创建新的目录,然后进入这个目录进行访问,我用filemon跟踪了一下,发现系统会首先打开h:\\user\\sub,而这个Create IRP里面的Options是不带FILE_DIRECTORY_FILE标志的。

我后来增加了一个判断,就是自己创建一个标准文件信息查询IRP下去,判断当前打开的文件是否为目录,这样才能避免处理目录。

第二个问题可能是我处理不当,单独测试删除和重命名都没有问题,可是编辑word文档的时候就有问题,主要word的处理过程比较复杂,目前高不清楚为什么会死锁,我再检查一下,谢谢!
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-04-26 11:43
打开文件或目录的时候不需要指定FILE_DIRECTORY_FILE 和 FILE_NON_DIRECTORY_FILE(当然也可以指定),因为该文件或目录已经存在于磁盘上,并且已经固定了,文件系统自己知道是文件还是目录,

所以在打开该文件或目录之前,你无法通过creat irp中的标志来判断,所以你只能通过发一个irp去查询
joshua_yu
驱动小牛
驱动小牛
  • 注册日期2004-12-06
  • 最后登录2010-12-01
  • 粉丝0
  • 关注0
  • 积分428分
  • 威望54点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-04-26 11:51
tooflat,你能不能将你的控制台程序和规则文件给我一份,现在的测试都是将相应的功能改到filemon中进行的,可能移植的过程中出现问题,导致word文档处理出现错误,我希望能够用你的测试程序和环境进行测试,检查我这里到底出现了什么错误。

我的email:joshua_yu@263.net.
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-04-26 16:00
tooflat,你能不能将你的控制台程序和规则文件给我一份,现在的测试都是将相应的功能改到filemon中进行的,可能移植的过程中出现问题,导致word文档处理出现错误,我希望能够用你的测试程序和环境进行测试,检查我这里到底出现了什么错误。

我的email:joshua_yu@263.net.
 


控制台程序已经找不到了,不过其功能很简单,就是写xefs.dat,格式在sfilter.c中有
joshua_yu
驱动小牛
驱动小牛
  • 注册日期2004-12-06
  • 最后登录2010-12-01
  • 粉丝0
  • 关注0
  • 积分428分
  • 威望54点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-04-27 08:35
好的,谢谢你,我去试试。
robin12
驱动牛犊
驱动牛犊
  • 注册日期2002-02-11
  • 最后登录2014-03-27
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望63点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-05-07 15:51
我乱整了一个,假设需要加密的文件为
F:\\TEMP1\\AAA1.TXT
F:\\TEMP1\\AAA3.TXT
F:\\TEMP1\\AAA4.TXT
注意:一定要大写
附件名称/大小 下载次数 最后更新
2005-05-07_xefs.dat (6KB)  66
joshua_yu
驱动小牛
驱动小牛
  • 注册日期2004-12-06
  • 最后登录2010-12-01
  • 粉丝0
  • 关注0
  • 积分428分
  • 威望54点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-05-08 11:19
我乱整了一个,假设需要加密的文件为
F:\\TEMP1\\AAA1.TXT
F:\\TEMP1\\AAA3.TXT
F:\\TEMP1\\AAA4.TXT
注意:一定要大写


你改成F:\\TEMP1\\*试试,我这样改就会出现问题,bugcheck
游客

返回顶部