阅读:1712回复:10
tooflat老大,看了你的sfilter代码问两个问题
看了你的代码以后感觉收益菲浅,对你的奉献精神表示钦佩!上次的一个帖子要给你分的,可惜一直都没有遇到你,希望你进来给分!
这几天实验了一下你的程序,遇到了一些问题: 1.我在希望监控的目录下面创建一个子目录,然而在系统信息目录下面却创建了一个文件,我跟踪了一下,发现这可能是因为系统会这样打开目录IEExplorer.exe Create h:\\user\\sub,而不是h:\\user\\sub\\,如果是后者,则判断Options & FILE_DIRECTORY_FILE时会成功,而前者则不会成功。 2.在监控目录下面创建了一个word文档,然后编辑和保存并且关闭,可是发现会产生死锁现象。 上面是我将你的程序作了一些修改后进行初步测试发现,也可能是我理解你的思路出现问题,不知道在测试当中出现过这样的情况吗? [编辑 - 4/25/05 by joshua_yu] |
|
沙发#
发布于:2005-04-25 17:14
我也看了那个代码,请问你知道解密的原理吗,我就是不懂在解密时为什么是~MyBuffer,这个MyBuffer是新创建的内存,它没有存放任何数据呀,帮忙解释一下
|
|
板凳#
发布于:2005-04-25 17:35
MyBuffer是我们自己创建的一个加解密缓冲区,因为我们不能修改传递下来的系统缓冲区,应该始终保持内存中的文件为明文而写入磁盘的是密文。
如果读的时候是没有存放数据,而是发送到文件系统去完成读,在读完成例程当中我们获取的文件内容就是存放在这个MyBuffer中的,然后进行解密保存到用户缓冲区中的。 写的时候将上面传下来的缓冲区内容复制到MyBuffer中,然后加密,将MyBuffer写入到磁盘上,你跟踪一下Write过程,看看MyBuffer中是否有你希望写的内容。 [编辑 - 4/25/05 by joshua_yu] |
|
地板#
发布于:2005-04-26 11:01
看了你的代码以后感觉收益菲浅,对你的奉献精神表示钦佩!上次的一个帖子要给你分的,可惜一直都没有遇到你,希望你进来给分! |
|
地下室#
发布于:2005-04-26 11:19
我说的不是自己创建目录,而是点击右键创建新的目录,然后进入这个目录进行访问,我用filemon跟踪了一下,发现系统会首先打开h:\\user\\sub,而这个Create IRP里面的Options是不带FILE_DIRECTORY_FILE标志的。
我后来增加了一个判断,就是自己创建一个标准文件信息查询IRP下去,判断当前打开的文件是否为目录,这样才能避免处理目录。 第二个问题可能是我处理不当,单独测试删除和重命名都没有问题,可是编辑word文档的时候就有问题,主要word的处理过程比较复杂,目前高不清楚为什么会死锁,我再检查一下,谢谢! |
|
5楼#
发布于:2005-04-26 11:43
打开文件或目录的时候不需要指定FILE_DIRECTORY_FILE 和 FILE_NON_DIRECTORY_FILE(当然也可以指定),因为该文件或目录已经存在于磁盘上,并且已经固定了,文件系统自己知道是文件还是目录,
所以在打开该文件或目录之前,你无法通过creat irp中的标志来判断,所以你只能通过发一个irp去查询 |
|
6楼#
发布于:2005-04-26 11:51
tooflat,你能不能将你的控制台程序和规则文件给我一份,现在的测试都是将相应的功能改到filemon中进行的,可能移植的过程中出现问题,导致word文档处理出现错误,我希望能够用你的测试程序和环境进行测试,检查我这里到底出现了什么错误。
我的email:joshua_yu@263.net. |
|
7楼#
发布于:2005-04-26 16:00
tooflat,你能不能将你的控制台程序和规则文件给我一份,现在的测试都是将相应的功能改到filemon中进行的,可能移植的过程中出现问题,导致word文档处理出现错误,我希望能够用你的测试程序和环境进行测试,检查我这里到底出现了什么错误。 控制台程序已经找不到了,不过其功能很简单,就是写xefs.dat,格式在sfilter.c中有 |
|
8楼#
发布于:2005-04-27 08:35
好的,谢谢你,我去试试。
|
|
9楼#
发布于:2005-05-07 15:51
我乱整了一个,假设需要加密的文件为
F:\\TEMP1\\AAA1.TXT F:\\TEMP1\\AAA3.TXT F:\\TEMP1\\AAA4.TXT 注意:一定要大写 |
|
|
10楼#
发布于:2005-05-08 11:19
我乱整了一个,假设需要加密的文件为 你改成F:\\TEMP1\\*试试,我这样改就会出现问题,bugcheck |
|