zealsoft_zhu
驱动小牛
驱动小牛
  • 注册日期2004-03-30
  • 最后登录2014-07-30
  • 粉丝2
  • 关注0
  • 积分22分
  • 威望375点
  • 贡献值0点
  • 好评度137点
  • 原创分0分
  • 专家分0分
阅读:1793回复:13

怎么在windows驱动程序中引用调用另外一个驱动程序。

楼主#
更多 发布于:2005-05-08 13:24
这两个驱动没有直接关系,只是需要发送通信。被调用的驱动没有设备接口,只有符号连接。在应用程序中我只要createfile(符号连接)就可以打开,进行调用。但是在另外一个驱动程序中怎么使用。谢谢!
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
沙发#
发布于:2005-05-08 14:47
IoGetDeviceObjectPointer()
zealsoft_zhu
驱动小牛
驱动小牛
  • 注册日期2004-03-30
  • 最后登录2014-07-30
  • 粉丝2
  • 关注0
  • 积分22分
  • 威望375点
  • 贡献值0点
  • 好评度137点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-08 15:15
IoGetDeviceObjectPointer()

我开始也是想用这个函数,IoGetDeviceObjectPointer,但是很多资料说他会把驱动叠加在被调用的驱动之上,msdn也含糊不清,说得很模糊,事实会不会?msdn的几个地方的说明有点前后不太一致。我只是向那个驱动发送iocontrol或者读写调用。

[编辑 -  5/8/05 by  zealsoft_zhu]
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-08 15:18
[quote]IoGetDeviceObjectPointer()

我开始也是想用这个函数,IoGetDeviceObjectPointer,但是很多资料说他会把驱动叠加在被调用的驱动之上,msdn也含糊不清,说得很模糊,事实会不会?msdn的几个地方的说明有点前后不太一致。我只是向那个驱动发送iocontrol或者读写调用。

[编辑 -  5/8/05 by  zealsoft_zhu] [/quote]
不会,因为驱动程序并不关心Originator是谁,是另外一个驱动,还是I/O Manager,都无所谓
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地下室#
发布于:2005-05-09 11:47
我觉得应该是要创建个设备挂到目标对象上的,不然的话,构造的IRP,处理好后如何释放??
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2005-05-09 12:24
我觉得应该是要创建个设备挂到目标对象上的,不然的话,构造的IRP,处理好后如何释放??

:o
完成例程不是骗骗人就算了的 :D
zealsoft_zhu
驱动小牛
驱动小牛
  • 注册日期2004-03-30
  • 最后登录2014-07-30
  • 粉丝2
  • 关注0
  • 积分22分
  • 威望375点
  • 贡献值0点
  • 好评度137点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-05-10 09:49
我觉得应该是要创建个设备挂到目标对象上的,不然的话,构造的IRP,处理好后如何释放??

wowocock 大侠,怎么创建一个设备挂到目标对象上?ZwCreateFile(对象)?是吗?我不会,谢谢大侠回答
zealsoft_zhu
驱动小牛
驱动小牛
  • 注册日期2004-03-30
  • 最后登录2014-07-30
  • 粉丝2
  • 关注0
  • 积分22分
  • 威望375点
  • 贡献值0点
  • 好评度137点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-05-10 16:56
IoGetDeviceObjectPointer()

我想问各位大侠,就是IoGetDeviceObjectPointer这个函数返回两个指针,其中一个是fileobject,一个是deviceobject,然后我发现很多人引用deviceoject的时候都是这样引用的,fileobject->deviceobject,为什么不直接引用IoGetDeviceObjectPointer函数返回的deviceobject?我测试了一下,发现deviceobject和fileobject->deviceobject这两个值是相等的。为什么?
zealsoft_zhu
驱动小牛
驱动小牛
  • 注册日期2004-03-30
  • 最后登录2014-07-30
  • 粉丝2
  • 关注0
  • 积分22分
  • 威望375点
  • 贡献值0点
  • 好评度137点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-05-10 16:59
我想给分给KMK大侠,请问一下怎么给分?谢谢
aiwadgj
驱动老牛
驱动老牛
  • 注册日期2004-11-13
  • 最后登录2020-12-24
  • 粉丝0
  • 关注0
  • 积分119分
  • 威望84点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2005-05-10 22:40
[quote]我觉得应该是要创建个设备挂到目标对象上的,不然的话,构造的IRP,处理好后如何释放??

:o
完成例程不是骗骗人就算了的 :D [/quote]

在完成例程中释放,,,,高,,, :D
酒也在沉溺,何时麻醉我抑郁。过去了的一切会平息。。。。。。。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-05-11 09:18
[quote]我觉得应该是要创建个设备挂到目标对象上的,不然的话,构造的IRP,处理好后如何释放??

wowocock 大侠,怎么创建一个设备挂到目标对象上?ZwCreateFile(对象)?是吗?我不会,谢谢大侠回答
 [/quote]
没看懂arthurtu老大的帖子?在驱动调用IoCompleteRequest后,其实就通知I/O Manager释放IRP,而不管它来自哪里,但IRP可能还不会立即消失,因为,OS一般都有懒病,但驱动绝对不要再碰它了
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-05-11 09:27
[quote]IoGetDeviceObjectPointer()

我想问各位大侠,就是IoGetDeviceObjectPointer这个函数返回两个指针,其中一个是fileobject,一个是deviceobject,然后我发现很多人引用deviceoject的时候都是这样引用的,fileobject->deviceobject,为什么不直接引用IoGetDeviceObjectPointer函数返回的deviceobject?我测试了一下,发现deviceobject和fileobject->deviceobject这两个值是相等的。为什么?
 [/quote]
也可以,不过fileobject提供更多的内涵
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
12楼#
发布于:2005-05-12 02:40
你发的贴上有给分键 !!
 
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
13楼#
发布于:2005-05-12 09:37
没看懂arthurtu老大的帖子?在驱动调用IoCompleteRequest后,其实就通知I/O Manager释放IRP,而不管它来自哪里,但IRP可能还不会立即消失,因为,OS一般都有懒病,但驱动绝对不要再碰它了

作为接收者,当然是这样啦。
但是如果你自己的驱动构造一个irp发给其他驱动,要么同步的处理,等处理完然后freeirp,要么异步处理,这个时候据要靠完成例程来做善后工作了
游客

返回顶部