JackyWu
驱动小牛
驱动小牛
  • 注册日期2001-10-25
  • 最后登录2011-04-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1523回复:5

关于中断优先级的设定

楼主#
更多 发布于:2002-05-15 13:39
WDM里面函数的执行中断级别有着比较严格的安排。小弟有点疑惑:
1,什么地方有所有函数的优先级列表?还是必须每个函数分别查?
2,在程序里面是不是必须用#pragma code_seg强制的指定程序在分页内存还是非分页内存?
3,如果我不使用#pragma code_seg,那么函数默认会被放在分页内存还是非分页内存?
4,如何强制函数放在非分页内存里面?
多年以后,我又回来了。
jeosph
驱动中牛
驱动中牛
  • 注册日期2001-04-19
  • 最后登录2006-08-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-15 15:30
WDM里面函数的执行中断级别有着比较严格的安排。小弟有点疑惑:
1,什么地方有所有函数的优先级列表?还是必须每个函数分别查?
2,在程序里面是不是必须用#pragma code_seg强制的指定程序在分页内存还是非分页内存?
3,如果我不使用#pragma code_seg,那么函数默认会被放在分页内存还是非分页内存?
4,如何强制函数放在非分页内存里面?


1)不知道
2)是
3)nonpage
4) 不申明#progma
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-15 15:33
WDM里面函数的执行中断级别有着比较严格的安排。小弟有点疑惑:
1,什么地方有所有函数的优先级列表?还是必须每个函数分别查?
-----------------------------------------------------------
不存在那个函数优先的概念!只存在中断优先的概念,是一个临界机制,中断级决定于CALLER而不是CALLEE,函数的中断级参考只是告诉你这个函数可以在那些中断级下面调用,而不是告诉你这个函数永远在这个中断级运行!明白么?你可以在运行的前后生高或降低你运行的中断级可是要遵循一些规则,DDK里面和《WINDOWS 2000驱动开发指南》里面有详细的介绍!我就不多说了!
――――――――――――――――――――――――――――――
2,在程序里面是不是必须用#pragma code_seg强制的指定程序在分页内存还是非分页内存?
――――――――――――――――――――――――――――――
这个主要还是看你具体的分配方法决定!
――――――――――――――――――――――――――――――
3,如果我不使用#pragma code_seg,那么函数默认会被放在分页内存还是非分页内存?
――――――――――――――――――――――――――――――
还是要看你用什么方法分配!往下看就知道了!
――――――――――――――――――――――――――――――
4,如何强制函数放在非分页内存里面?

――――――――――――――――――――――――――――――
其实所谓内存分页不分页是由你,决定的!ALLLOCATE一个BUFFER/MENORY的时候会让你选择分页或不分页!
另外加一句批评!为什么我不想说明白你知道么?因为这些东西在DDK里面索引一下你用来分配POOL/MENORY的函数就知道了!完全是因为你不看DDK才会问出这样的问题!
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-15 15:35
好精炼的回答,pfpf
不过说得很对,
第一个问题,我也没有见过哪儿有,只是在书上看到一些主要例程级别
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
JackyWu
驱动小牛
驱动小牛
  • 注册日期2001-10-25
  • 最后登录2011-04-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-15 15:37
 :D呵呵。。。批评归批评,分还是要给的。别人批评的对,我还是接受的。多谢!哈哈。。。。
多年以后,我又回来了。
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-15 16:05
好精炼的回答,pfpf
不过说得很对,
第一个问题,我也没有见过哪儿有,只是在书上看到一些主要例程级别


没有?没看细吧??下面的几个函数的Comments里面都有详细且权威的介绍!当然我刚刚说的那本熟里面介绍IRQL介绍的更是淋漓尽至!
书名更正一下,正确的书名是:《实用技术:WINDOWS NT 与WINDOWS 2000 设备驱动及开发》原名:WINDOWS NT DEVICE DRIVER DEVELOPMENT 是PETER.G等人写的!电子工业出版!看了以后就明白了!

KeRaiseIrql
Raises the hardware priority to a given IRQL value, thereby masking off interrupts of equivalent or lower IRQL on the current processor.

KeRaiseIrqlToDpcLevel
Raises the hardware priority to IRQL DISPATCH_LEVEL, thereby masking off interrupts of equivalent or lower IRQL on the current processor.
 
KeLowerIrql
Restores the IRQL on the current processor to its original value.

KeGetCurrentIrql
Returns the current hardware priority IRQL value.
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
游客

返回顶部