riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
阅读:2841回复:31

各位大牛、大拿、大虾:请参与高难问题讨论!

楼主#
更多 发布于:2004-11-29 10:59
我在接收到一个IRP包的时候,复制这个IRP包,把它发送给另外一个目标对象。
例如:我在操作d:\a.txt时,所有面向a.txt的IRP包同时会发送给e:\b.txt,这样两个文件就保持同样的内容啦。

请各位老大踊跃参与讨论,给小弟提供一些思路和解决方法。

最新喜欢:

David_211David_...
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-11-29 13:23
想法不错,不过实现起来可能比较麻烦,必须处理IRP个各个部分,包括那些MS没公开的部分,有经验的请说说吧......
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-29 16:18
我觉得在IRP级实现两个文件同步太繁琐了,应该在内核检测文件变动,在应用层定时实施同步,这样对系统的负载比较小,实现也简单。
在交流中学习。。。
riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-29 17:10
在内核实现才能学到东西啊,这可是涉及到很多技巧和内核技术的,如果在应用层,那就没有意义了,比如你同步的是一个1G的文件,那系统的开销会更大的。
riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-30 11:00
加油顶
riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-11-30 13:10
置顶咯
riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-12-02 14:10
欢迎讨论
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-02 17:23
两个文件保持同样的内容,都指哪些内容
riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
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老大能给小弟指点迷津。万分感谢



riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-12-03 13:19
欢迎讨论
riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-12-06 09:58
欢迎大家踊跃讨论
riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-12-06 18:10
加油啊
riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-12-07 11:12
驱坛高人快点给小民指点迷津啊!!!!
riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-12-07 18:52
!!!!!!
kevin73
驱动牛犊
驱动牛犊
  • 注册日期2004-10-27
  • 最后登录2005-06-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-12-08 14:33
没人回答呀!我顶一下 :D
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-12-08 14:58
如果你只是同步文件的内容,你完全可以只处理irp_mj_write,而且你不一定非得通过irp来处理,你可以直接调用ZwReadFile,ZwWriteFile
ildee
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2005-01-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-12-08 15:07
如果是ntfs分区的话,在应用层就有办法解决,CreateHardLink()

如果是在驱动里面做这件事,就自己处理irp_mj_write,应该只处理,IRP_nocache|IRP_paging_io|IRP_SYNCHRONOUS_PAGING_IO,按照offset自己写文件。
可能还有细节需要处理,比如何时创建,何时关闭。。。
riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-12-09 10:20
非常感谢ildee的参与,我现在打算拦截所有发送到a.txt的请求包,
复制这个请求包的主要内容,然后发送到b.txt,想法比较简单,只是实现比较困难。

IRP_nocache|IRP_paging_io|IRP_SYNCHRONOUS_PAGING_IO,这些东西的含义是什么啊?

我该怎样处理irp_mj_write请求包和offset。

我是个初学者,希望能在实践中增加自己的功力。
riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-12-09 10:29
看了几篇CreateHardLink()的文章,它好像只能做到一个文件的快捷连接,不是真正意义上的文件同步啊。
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
19楼#
发布于:2004-12-09 11:45
如果单纯想让文件内容一样就没有必要那么作了,
只要根据irp_mj_write的参数来个ZwWriteFile就可以了。
---内核开发合作或提供基础技术服务QQ:22863668 ---
上一页
游客

返回顶部