阅读:3681回复:25
在 WDM 驱动程序中有什么函数可以得到当前的 IRQL 级别?
在 WDM 驱动程序中有什么函数可以得到当前的 IRQL 级别?
因为我在两个地方需要调用同一个函数,这两个地方的 IRQL 不一样,而那个被调用的函数中使用的函数需要区分 IRQL。 |
|
沙发#
发布于:2002-12-16 21:17
mikeluo,我专门开了一个帖子讨论,我把这个帖子结了,咱们在那里说好吗?
http://www.driverdevelop.com/forum/html_29964.html?1040044613 |
|
板凳#
发布于:2002-12-16 21:15
哦,我还以为你问的是 Request:)
是这样声明的: NDIS_STATUS Status; |
|
地板#
发布于:2002-12-16 21:10
NdisRequest( &Status, pAdapt->BindingHandle, &pAdapt->Request );这个Status是一个变量吖,怎么有跑到你的adapter结构里面去了??哥们?
|
|
|
地下室#
发布于:2002-12-16 18:22
在 ADAPT 结构中声明为 NDIS_STATUS Status;
|
|
5楼#
发布于:2002-12-16 17:57
Status怎么声明的? kao .是你在问啊。 我还奇怪他怎么问这个问题呢。 |
|
|
6楼#
发布于:2002-12-16 17:56
Status怎么声明的? NDIS_STATUS Status; 就行了。 |
|
|
7楼#
发布于:2002-12-16 17:48
Status怎么声明的?
|
|
|
8楼#
发布于:2002-12-16 17:48
不好意思:),现在的问题是这个,谢谢 nicol[/quote] 蓝屏报什么错误? |
|
|
9楼#
发布于:2002-12-16 17:43
不好意思:),现在的问题是这个,谢谢 nicol
还有一个问题,我在 PtOpenAdapterComplete 中调用 NdisRequest 出现蓝屏 |
|
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 ....... |
|
|
11楼#
发布于:2002-12-16 17:34
mikeluo 帮忙啊,谢谢!
|
|
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 帮忙检查一下,谢谢!!! |
|
13楼#
发布于:2002-12-14 11:48
会不会是你在调用NdisRequest时内存分配的问题?
|
|
|
14楼#
发布于:2002-12-13 15:43
还有一个问题,我在 PtOpenAdapterComplete 中调用 NdisRequest 出现蓝屏,我这样:
KeRaiseIrql( DISPATCH_LEVEL, &OldIRQL ); NdisRequest( &Status, pAdapt->BindingHandle, &Request ); KeLowerIrql( OldIRQL ); 结果还是蓝屏,我该怎么做? |
|
15楼#
发布于:2002-12-13 15:42
我现在不做判断,改成 NdisDprAcquireSpinLock 就行了,我想知道为什么?
mikeluo,一个函数只能运行在比它的 IRQL 低的环境中吗? |
|
16楼#
发布于:2002-12-13 15:05
你看看他返回的是DISPATCH_LEVEL么 值是2
|
|
|
17楼#
发布于:2002-12-13 14:55
我怀疑他不等于DISPATCH_LEVEL 你的意思是说当前的 IRQL 不是 DISPATCH_LEVEL 还是说 KeGetCurrentIrql() 返回的东西不会有这样的取值? |
|
18楼#
发布于:2002-12-13 13:11
我怀疑他不等于DISPATCH_LEVEL
|
|
|
19楼#
发布于:2002-12-13 13:03
当然执行了,是不是它执行需要一些条件?
|
|
上一页
下一页