阅读:2841回复:31
各位大牛、大拿、大虾:请参与高难问题讨论!
我在接收到一个IRP包的时候,复制这个IRP包,把它发送给另外一个目标对象。
例如:我在操作d:\a.txt时,所有面向a.txt的IRP包同时会发送给e:\b.txt,这样两个文件就保持同样的内容啦。 请各位老大踊跃参与讨论,给小弟提供一些思路和解决方法。 |
|
最新喜欢:David_... |
沙发#
发布于:2004-11-29 13:23
想法不错,不过实现起来可能比较麻烦,必须处理IRP个各个部分,包括那些MS没公开的部分,有经验的请说说吧......
|
|
|
板凳#
发布于:2004-11-29 16:18
我觉得在IRP级实现两个文件同步太繁琐了,应该在内核检测文件变动,在应用层定时实施同步,这样对系统的负载比较小,实现也简单。
|
|
|
地板#
发布于:2004-11-29 17:10
在内核实现才能学到东西啊,这可是涉及到很多技巧和内核技术的,如果在应用层,那就没有意义了,比如你同步的是一个1G的文件,那系统的开销会更大的。
|
|
地下室#
发布于:2004-11-30 11:00
加油顶
|
|
5楼#
发布于:2004-11-30 13:10
置顶咯
|
|
6楼#
发布于:2004-12-02 14:10
欢迎讨论
|
|
7楼#
发布于:2004-12-02 17:23
两个文件保持同样的内容,都指哪些内容
|
|
8楼#
发布于:2004-12-03 11:32
tooflat 你好
我看过你以前回复的一篇关于文件重定向的问题。我测试了其中的代码,感觉非常好。 我做的这个测试是同步文件内容的,比如当a.txt文件内容发生改变时,b.txt文件内容就发生改变,只是打开a.txt文件,b.txt文件并不打开。 我现在的做法是通过IoAllocateIrp新建一个IRP(newIRP),这个newIRP和原IRP的内容和功能大体一致,只是需要修改其中的FileObject使其指向d:\test\b.txt,然后完成newIRP包和原IRP包。 可惜我在修改newIRP的FileObject时就死机重起了。屏蔽修改FileObject的过程,调用IoCallDriver将这个newIRP传下去也会死机重起,真是郁闷啊。 盼tooflat老大能给小弟指点迷津。万分感谢 |
|
9楼#
发布于:2004-12-03 13:19
欢迎讨论
|
|
10楼#
发布于:2004-12-06 09:58
欢迎大家踊跃讨论
|
|
11楼#
发布于:2004-12-06 18:10
加油啊
|
|
12楼#
发布于:2004-12-07 11:12
驱坛高人快点给小民指点迷津啊!!!!
|
|
13楼#
发布于:2004-12-07 18:52
!!!!!!
|
|
14楼#
发布于:2004-12-08 14:33
没人回答呀!我顶一下 :D
|
|
15楼#
发布于:2004-12-08 14:58
如果你只是同步文件的内容,你完全可以只处理irp_mj_write,而且你不一定非得通过irp来处理,你可以直接调用ZwReadFile,ZwWriteFile
|
|
16楼#
发布于:2004-12-08 15:07
如果是ntfs分区的话,在应用层就有办法解决,CreateHardLink()
如果是在驱动里面做这件事,就自己处理irp_mj_write,应该只处理,IRP_nocache|IRP_paging_io|IRP_SYNCHRONOUS_PAGING_IO,按照offset自己写文件。 可能还有细节需要处理,比如何时创建,何时关闭。。。 |
|
17楼#
发布于:2004-12-09 10:20
非常感谢ildee的参与,我现在打算拦截所有发送到a.txt的请求包,
复制这个请求包的主要内容,然后发送到b.txt,想法比较简单,只是实现比较困难。 IRP_nocache|IRP_paging_io|IRP_SYNCHRONOUS_PAGING_IO,这些东西的含义是什么啊? 我该怎样处理irp_mj_write请求包和offset。 我是个初学者,希望能在实践中增加自己的功力。 |
|
18楼#
发布于:2004-12-09 10:29
看了几篇CreateHardLink()的文章,它好像只能做到一个文件的快捷连接,不是真正意义上的文件同步啊。
|
|
驱动老牛
|
19楼#
发布于:2004-12-09 11:45
如果单纯想让文件内容一样就没有必要那么作了,
只要根据irp_mj_write的参数来个ZwWriteFile就可以了。 |
|
上一页
下一页