edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3681回复:25

在 WDM 驱动程序中有什么函数可以得到当前的 IRQL 级别?

楼主#
更多 发布于:2002-12-12 20:21
在 WDM 驱动程序中有什么函数可以得到当前的 IRQL 级别?

因为我在两个地方需要调用同一个函数,这两个地方的 IRQL 不一样,而那个被调用的函数中使用的函数需要区分 IRQL。
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-16 21:17
mikeluo,我专门开了一个帖子讨论,我把这个帖子结了,咱们在那里说好吗?

http://www.driverdevelop.com/forum/html_29964.html?1040044613
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-16 21:15
哦,我还以为你问的是 Request:)

是这样声明的:
NDIS_STATUS  Status;
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-12-16 21:10
NdisRequest( &Status, pAdapt->BindingHandle, &pAdapt->Request );这个Status是一个变量吖,怎么有跑到你的adapter结构里面去了??哥们?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-12-16 18:22
在 ADAPT 结构中声明为 NDIS_STATUS Status;
nicol
驱动大牛
驱动大牛
  • 注册日期2001-11-28
  • 最后登录2009-07-30
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-12-16 17:57
Status怎么声明的?

kao .是你在问啊。
我还奇怪他怎么问这个问题呢。
==寂寞骆驼==
nicol
驱动大牛
驱动大牛
  • 注册日期2001-11-28
  • 最后登录2009-07-30
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-12-16 17:56
Status怎么声明的?

NDIS_STATUS Status;
就行了。
==寂寞骆驼==
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-12-16 17:48
Status怎么声明的?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
nicol
驱动大牛
驱动大牛
  • 注册日期2001-11-28
  • 最后登录2009-07-30
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-12-16 17:48
不好意思:),现在的问题是这个,谢谢 nicol

 [quote] 还有一个问题,我在 PtOpenAdapterComplete 中调用 NdisRequest 出现蓝屏
[/quote]
蓝屏报什么错误?
==寂寞骆驼==
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-12-16 17:43
不好意思:),现在的问题是这个,谢谢 nicol

 
还有一个问题,我在 PtOpenAdapterComplete 中调用 NdisRequest 出现蓝屏
nicol
驱动大牛
驱动大牛
  • 注册日期2001-11-28
  • 最后登录2009-07-30
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-12-16 17:39
if( KeGetCurrentIrql( ) == DISPATCH_LEVEL )
NdisDprAcquireSpinLock( &pAdapt->BufferLock );
else
NdisAcquireSpinLock( &pAdapt->BufferLock );


if
......
else
....

NdisAcquireSpinLock( &pAdapt->BufferLock );
放到else前面。
if( KeGetCurrentIrql( ) == DISPATCH_LEVEL )
NdisDprAcquireSpinLock( &pAdapt->BufferLock );
........
NdisAcquireSpinLock( &pAdapt->BufferLock );
else
.......
==寂寞骆驼==
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-12-16 17:34
mikeluo 帮忙啊,谢谢!
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-12-14 14:12
我的代码如下:
pAdapt->Request.RequestType = NdisRequestQueryInformation;
pAdapt->Request.DATA.QUERY_INFORMATION.Oid = OID_802_3_CURRENT_ADDRESS;
pAdapt->Request.DATA.QUERY_INFORMATION.InformationBuffer       = pAdapt->MACAddress;
pAdapt->Request.DATA.QUERY_INFORMATION.InformationBufferLength = 6;
pAdapt->Request.DATA.QUERY_INFORMATION.BytesWritten            = 0;
pAdapt->Request.DATA.QUERY_INFORMATION.BytesNeeded             = 0;
NdisRequest( &Status, pAdapt->BindingHandle, &pAdapt->Request );

请 mikeluo 帮忙检查一下,谢谢!!!
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-12-14 11:48
会不会是你在调用NdisRequest时内存分配的问题?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-12-13 15:43
还有一个问题,我在 PtOpenAdapterComplete 中调用 NdisRequest 出现蓝屏,我这样:
KeRaiseIrql( DISPATCH_LEVEL, &OldIRQL );
NdisRequest( &Status, pAdapt->BindingHandle, &Request );
KeLowerIrql( OldIRQL );
结果还是蓝屏,我该怎么做?
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-12-13 15:42
我现在不做判断,改成 NdisDprAcquireSpinLock 就行了,我想知道为什么?

mikeluo,一个函数只能运行在比它的 IRQL 低的环境中吗?
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-12-13 15:05
你看看他返回的是DISPATCH_LEVEL么 值是2
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-12-13 14:55
 
我怀疑他不等于DISPATCH_LEVEL


你的意思是说当前的 IRQL 不是 DISPATCH_LEVEL 还是说 KeGetCurrentIrql() 返回的东西不会有这样的取值?
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-12-13 13:11
我怀疑他不等于DISPATCH_LEVEL
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-12-13 13:03
当然执行了,是不是它执行需要一些条件?
上一页
游客

返回顶部