lonkiss
驱动牛犊
驱动牛犊
  • 注册日期2002-01-15
  • 最后登录2004-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1349回复:5

问个简单问题

楼主#
更多 发布于:2002-07-04 15:15
我写了一个驱动叫WDM1,占用中断7
该驱动正常工作以后,
我在上层的两个进程中用CreateFile()创建两个这个驱动对象,
那么当中断到来时这两个驱动对象谁能得到中断通知呢?还是两个都能得到中断通知?
另外,如何同步这两个进程发出的IRP呢?
 :D :cool: :o :P ;) :( :)
我的真名就叫-龙旗
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
沙发#
发布于:2002-07-04 15:47
通知应用层程序跟你驱动的实现有关系,要看你驱动是怎么实现的了
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2002-07-04 15:55
我写了一个驱动叫WDM1,占用中断7
该驱动正常工作以后,
我在上层的两个进程中用CreateFile()创建两个这个驱动对象,
那么当中断到来时这两个驱动对象谁能得到中断通知呢?还是两个都能得到中断通知?
另外,如何同步这两个进程发出的IRP呢?
 :D :cool: :o :P ;) :( :)


driver对象只会有一个的。driver object only one,
device object can more than one
zdhe
驱动太牛
驱动太牛
  • 注册日期2001-12-26
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72362分
  • 威望362260点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2002-07-04 16:11

我在上层的两个进程中用CreateFile()创建两个这个驱动对象,


only can say: you opened device object symbolic LINK two times.

no 驱动对象 or device object is created.





[编辑 -  7/4/02 by  zdhe]
zdhe
驱动太牛
驱动太牛
  • 注册日期2001-12-26
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72362分
  • 威望362260点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2002-07-04 22:47
这个问题实际上可以归为:当应用程序用CreatFile()调用设备的时候,驱动程序到底产生了什么?

反正我知道每次CreateFile()时系统都会建立一个DEVICEOBJECT和设备扩展给它。

-----------------
谁说的?你看到了?用softice的 device命令看的,还是用windbg,winobj看的?

系统为你生成了一个file object不假,但是device object是没有的。


但是当用多次CreateFile()建立多个对象以后,各个应用程序调用ReadFile和CreateFile时都受谁控制呢?

-----------------
如果device object create的时候,用的是exclusive方式,那么只有一个xxx 能create 成功。比如com1.

如果device object create的时候,用的是非exclusive方式,那么很多xxx都能同时create 成功。比如HD volumn上的文件。



他们之间有没有同步问题呢?还有中断服务例程规谁来管呢?

-------------------
当然有。object manager或者和上层文件系统对hd volumn进行排他。

你的设备(一般是unnown type),自己排他。
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
5楼#
发布于:2002-07-05 10:28
DriverObject 只有一个,DeviceObject是你在驱动程序里面生成的,比如调用IoCreateDevice,或者其他函数如NdisMRegisterMiniport等来生成,这就是说也可以有多个,但是这是你的代码里能看到的,而FileObject可以有很多个,是由应用层调用CreateFile而内核里创建的。
游客

返回顶部