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

驱动开发疑问大讨论

楼主#
更多 发布于:2004-11-11 10:46
1.如何确定某个驱动处在系统的哪一层?

2.在IoCreateDevice中,引用系统保留的设备对象和自定义的设备对象各有何意义?

3.为什么要通过IoAttachDeviceToDeviceStack来把我们的设备绑定到某个设备的设备栈的顶端?绑定和不绑定有什么不同啊?

4.FAST_IO_DISPATCH是做什么用的啊?

5.如果我不处理DriverObject->MajorFunction[...],系统会怎样?

6.如果我不处理DriverObject->FastIoDispatch,系统会怎样?

piggy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-24
  • 最后登录2012-01-14
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-11 12:03
建议你还是找本关于驱动程序开发的书简单的看看, 或者是看看DDK的基本文档, 至少要明白一些关于驱动程序的基本概念.

有关FAST_IO_DISPATCH可以看看IFS的文档, http://www.osr.com 上也有一篇专门关于FAST_IO_DISPATCH的文章.
piggy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-24
  • 最后登录2012-01-14
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-11 12:04
很多资料本站上就有, 找找看
riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-11 13:34
书我有,开发资料e文的很多,但看起来并不是很清楚,我在这里提问题当然是希望牛老大能直接回答啦,不然您告诉我把ddk的案例源码和文档来回分析100遍,再来论坛提问,那我还不得疯掉!希望大家能正面讨论问题本身,而不要打太极。
riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-11 16:24
riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-11-11 18:10

cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-11-11 18:57
我也是新手。我的理解是:
1.如何确定某个驱动处在系统的哪一层?
不知如何确定,反正新绑定的过滤驱动总是处于设备堆栈的顶层。
而单独的驱动则视其是什么驱动而言。

2.在IoCreateDevice中,引用系统保留的设备对象和自定义的设备对象各有何意义?
没有明白问题的意思。

3.为什么要通过IoAttachDeviceToDeviceStack来把我们的设备绑定到某个设备的设备栈的顶端?绑定和不绑定有什么不同啊?
如果做过滤驱动则必须调用该函数,将你写的驱动放到设备堆栈的顶层,这样系统发给原来设备的Irp包将先发送给你的设备对象,这样就达到了过滤的目的。

4.FAST_IO_DISPATCH是做什么用的啊?
这好像是文件系统驱动才有的,主要是加快文件处理的速度。系统在进行文件系统处理时会缓存大量的文件数据,系统通过这些函数对缓存管理器进行处理,减少通过Irp包发给设备对象获取文件信息的次数。

5.如果我不处理DriverObject->MajorFunction[...],系统会怎样?
你的设备无法工作。

6.如果我不处理DriverObject->FastIoDispatch,系统会怎样?
如果写的是文件系统驱动则系统会蓝屏。因为文件系统驱动必须对这些函数处理,这是系统定义的。其他驱动好像无所谓。

riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-11-12 09:28
非常感谢cicada的帮助,还请大家继续讨论,今天下午6点前结贴。
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-11-12 09:32
我也是新手。我的理解是:
1.如何确定某个驱动处在系统的哪一层?
不知如何确定,反正新绑定的过滤驱动总是处于设备堆栈的顶层。
而单独的驱动则视其是什么驱动而言。
。。。。。。


虽然问题很杂,但是你回答的很出色,言简意赅。呵呵
在交流中学习。。。
riceworm
驱动小牛
驱动小牛
  • 注册日期2004-10-27
  • 最后登录2008-10-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-11-12 11:42
加油
lsq77
驱动牛犊
驱动牛犊
  • 注册日期2003-10-08
  • 最后登录2006-12-04
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-11-12 14:39
2.在IoCreateDevice中,引用系统保留的设备对象和自定义的设备对象各有何意义?

系统保留   0-32767
自定义     32768-65535
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
11楼#
发布于:2004-11-12 17:15
你自己的设备最好不要和系统重复......
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部