用过ddk的朋友请进 ddk中的一些函数说明要在IRQL=PASSIVE_LEVEL下才能调用,请问这个IRQL=PASSIVE_LEVEL是什么意思?能说的具体点吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 IRQL是处理器中断请求级,级别低的代码可以被级别高的代码中断,在驱动程序里面一般容易混淆的是PASSIVE_LEVEL和DISPATCH_LEVEL,DISPATCH_LEVEL级要比PASSIVE_LEVEL级高,一般的用户模式程序执行在PASSIVE_LEVEL上,驱动程序有一些例程需要在PASSIVE_LEVEL上(比如DriverEntry、AddDevice等),有一些例程则是需要在DISPATCH_LEVEL上执行的,包括StartIo例程,DPC(推迟过程调用)例程等。为什么要采用这种中断请求级机制?我觉得主要是由于windows的内存管理,最典型的是在DISPATCH_LEVEL上访问分页内存将引起缺页故障(就是你再熟悉不过的蓝屏啦),这点要注意注意呀!如果一个函数说要在PASSIVE_LEVEL下才能调用,很可能是该函数中要用到分页内存,你要是楞让它在DISPATCH_LEVEL上调用,就会蓝屏的,小心啊我知道的大概也就这么多了,不知道对你有没有用 谢谢上面的朋友!那么具体说驱动里什么是在PASSIVE_LEVEL上呢?它是指某个驱动运行在PASSIVE_LEVEL上呢?还是指驱动里的某些部分运行在PASSIVE_LEVEL上呢?比如驱动里的中断接收是属于PASSIVE_LEVEL吗? 是指该函数在执行的时候具有PASSIVE_LEVEL的优先级,必须要比PASSIVE_LEVEL更高优先级的函数才能中断它的执行。DDK文档中对每个函数的优先级都有说明。 问一个“Dangling Critical Sections”的小问题 VC中如何输入特殊符号(如平方、立方等上标符号) 中国有没有像http://sourceforge.net和谷歌一样的开源社区? 怎样使用CInternetSession中的函数让TIME_WAIT状态过滤掉 急!谁能给我一个VC下访问sybase数据库的例子 如何给CTime类负值 如何在程序中映射磁盘驱动器? 大家一起讨论,我在VC中发现的一个问题 MFC如何实现剪切复制文本 大家好,我是VC初学者,请问在VC中设置鼠标该怎么设置,比如处理过程中需要鼠标显示为漏斗? 关于Win98 DDK的安装 做过ddk的高人请帮忙
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货