阅读:1343回复:10
dispatch_level下的同步问题
在dispatch_level,ddk里面说了使用kewaitforsingobject的timeout只能为0,问问大家有什么办法可以让driver在dispatch_level,能够wait么?
|
|
沙发#
发布于:2003-12-29 16:48
dispatch_level里调度都停止了,你还wait什么呀?不行的.
|
|
|
板凳#
发布于:2003-12-29 16:51
用户被禁言,该主题自动屏蔽! |
|
地板#
发布于:2003-12-29 16:51
在dispatch level上wait的话,除了中断,怎么打断你的执行?那你wait的object的状态怎么改变?都得不到机会。
|
|
地下室#
发布于:2003-12-29 17:27
我明白了,有什么方法可以降低她的优先级么
|
|
论坛版主
|
5楼#
发布于:2003-12-29 17:31
在DDK里写明了运行在DISPATCH_LEVEL的函数强行拉低IRQL要遭嗝儿屁:),不用试了,我试过了,如果没有要求的用KeLowerIrql
|
|
6楼#
发布于:2003-12-29 17:34
这个我知道,It is a fatal error to call KeLowerIrql using an input NewIrql that was not returned by the immediately preceding call to KeRaiseIrql.
真受不了microsoft |
|
7楼#
发布于:2003-12-29 20:52
好好检讨你的设计吧,david cutler不会比我们傻的
|
|
8楼#
发布于:2003-12-30 09:03
我不知道是不是我设计的问题,但是microsoft scsi port driver是有问题的,只能在startio routine返回,timer的时间间隔太大。连他自己都知道这个东西的performance不好,现在搞出来一个storage port.
|
|
9楼#
发布于:2003-12-30 09:54
你反汇编下KELOWERIRQL的代码,然后找到存放当前IRQL的地址,直接修改他,嘿嘿。。。。。。
|
|
|
论坛版主
|
10楼#
发布于:2003-12-31 14:14
不要乱动这个东西啊,中断要全乱的,兄弟
|
|