阅读:11640回复:45
IRP文件操作接口的终极实现(代码+例子)前段时间和驱网某个高人交流时都谈到了直接IRP操作文件的实现问题,其实对于大部分接口(诸如: ZwReadFile、ZwWriteFile、ZwSetInformationFile、ZwDeleteFile等)在OSR上的“ Rolling Your Own - Building IRPs to Perform I/O ”一文中已经实现,但是那里面的实现还不够全。所以,我就翻出了前段时间在网上淘到的资料,特与大家共享!尤其值得注意的是,这里面还实现了ZwCreateFile接口! 大家都知道使用IRP的好处就是:效率提高了,对中断级要求更宽了,还解决了常见的重入问题等等。 附件中一个是接口的实现代码,另外一个是应用实例。 |
|
最新喜欢:znsoft
|
沙发#
发布于:2008-03-29 11:18
不过从这里面也可以感悟出几点:
1。我们费了九牛二虎之力所想要的,其实大部分都在Minifilter框架中实现; 2。从稳定性和兼容性方面来讲,Legacy型过滤驱动远远比Minifilter过滤驱动要做的事情多的多; 3。不过从灵活性方面来对比的话,Legacy型过滤驱动确实有它的优势; |
|
|
板凳#
发布于:2008-03-29 11:44
devia在网上淘东西的能力超强,当然这要有自身相当强的功力才行。
又学了点东西,原来DeviceObject也自己创建,哈哈 框架,就好象VC和VB一样,VB封装了很多东西,用起来很舒服也不会崩溃,但是有些事情VB很难做而VC可以完成,但VC直接操作内存不当会崩溃 经常看到有说Minifilter多么多么好的,好像比没有用这个的好到天上去了,其实只要达到目的就行了,何必那么在意是白猫还是黑猫呢,而且有些难题和框架的关系应该不大,你在一个框架里无法解决,在另一个框架里未必就能解决 |
|
|
地板#
发布于:2008-03-29 12:45
P := Trim(FPathToWatch) + Trim(P);
|
|
地下室#
发布于:2008-03-30 13:02
"new"到哪里去了?而且一按键就自动退出了...
|
|
5楼#
发布于:2008-03-30 15:15
Great, let me have a try
|
|
6楼#
发布于:2008-03-30 21:45
看你老的贴子总能学到东西
|
|
7楼#
发布于:2008-03-31 08:38
bu
使用IRP的好处主要就是防止重入,不过既然XP 以后提供了iocreatefilespecifyobjectbyhint这个函数的话,自己发IRP的意义都不大了,因为通过这个获得的FILEHANDLE,可以用其他任何调用,都不会发生重入,所以以上代码在2K下可以考虑作为替代,其他OS的话,还是走原路即可.不过在VISTA下也不能保证,建议在VISTA以后用MS的建议用IOCREATEFILEEX走ECP LIST. |
|
|
8楼#
发布于:2008-03-31 08:50
这个接口还是不能直接用到重入。
用的人自己改改即可 |
|
9楼#
发布于:2008-03-31 10:51
|
|
|
驱动小牛
|
10楼#
发布于:2008-04-03 11:19
引用第9楼devia于2008-03-31 10:51发表的 : 是有很多局限,这个HANDLE还跟进程有关系,有时候系统进程好象还要出问题。 |
|
11楼#
发布于:2008-04-03 19:22
非常感谢!!!!又学到了一些东西,特别是CreateFile的实现。
|
|
|
12楼#
发布于:2008-04-04 17:20
支持,学习!
|
|
13楼#
发布于:2008-04-06 10:10
非常感谢,小弟刚急需这个。学习学习
|
|
14楼#
发布于:2008-04-10 14:37
是不是从nt source code里面 借了点代码啊?
|
|
15楼#
发布于:2008-04-10 15:36
|
|
|
16楼#
发布于:2008-04-11 10:46
感谢老大,拜读中
|
|
17楼#
发布于:2008-04-12 12:55
新手学习中....................
|
|
|
18楼#
发布于:2008-04-12 14:03
新手学习学习
|
|
19楼#
发布于:2008-04-12 23:02
初学者研究学习
|
|
上一页
下一页