阅读:1350回复:5
问个简单问题
我写了一个驱动叫WDM1,占用中断7
该驱动正常工作以后, 我在上层的两个进程中用CreateFile()创建两个这个驱动对象, 那么当中断到来时这两个驱动对象谁能得到中断通知呢?还是两个都能得到中断通知? 另外,如何同步这两个进程发出的IRP呢? :D :cool: :o :P ;) :( :) |
|
|
沙发#
发布于:2002-07-04 15:47
通知应用层程序跟你驱动的实现有关系,要看你驱动是怎么实现的了
|
|
板凳#
发布于:2002-07-04 15:55
我写了一个驱动叫WDM1,占用中断7 driver对象只会有一个的。driver object only one, device object can more than one |
|
地板#
发布于:2002-07-04 16:11
only can say: you opened device object symbolic LINK two times. no 驱动对象 or device object is created. [编辑 - 7/4/02 by zdhe] |
|
地下室#
发布于: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),自己排他。 |
|
5楼#
发布于:2002-07-05 10:28
DriverObject 只有一个,DeviceObject是你在驱动程序里面生成的,比如调用IoCreateDevice,或者其他函数如NdisMRegisterMiniport等来生成,这就是说也可以有多个,但是这是你的代码里能看到的,而FileObject可以有很多个,是由应用层调用CreateFile而内核里创建的。
|
|