阅读:5999回复:44
怎样解决DRIVE_IRQL_NOT_LESS_OR_EQUAL问题?哪位高手赶紧帮帮忙!!
我的程序(修改passthru例子)运行一段时间后系统出现蓝屏,系统提示为:
DRIVER_IRQL_NOT_LESS_OR_EQUAL 这是什么意思? 解决这问题有何对策? 望高手们指点!! [编辑 - 11/19/02 by freeshar] [编辑 - 11/19/02 by freeshar] [编辑 - 11/20/02 by freeshar] |
|
最新喜欢:![]()
|
沙发#
发布于:2002-11-21 17:59
给分了!!
谢谢各大高手的解题。 俺另开一贴“怎样才能防止引发页故障呢?” 希望高手们继续给予帮助,感谢了!! |
|
|
板凳#
发布于:2002-11-21 17:54
[quote]怎样才能防止引发页故障呢? 兄弟,另开帖子吧!你不觉得要回答很不方便吗? [/quote] OK,没问题1 |
|
|
地板#
发布于:2002-11-21 17:52
怎样才能防止引发页故障呢? 兄弟,另开帖子吧!你不觉得要回答很不方便吗? |
|
|
地下室#
发布于:2002-11-21 17:50
怎样才能防止引发页故障呢?
我在此之前试过用“自旋锁”加锁,但也不行,难道就没有办法了吗? |
|
|
5楼#
发布于:2002-11-21 17:43
[quote][quote]咋不能呢 确实编译出错,提示为: packet(51):error c2143:syntax error:missing \';\' before \'__finally\' 另外还有两行。 [/quote] 我没说清楚。是不能用__finally。我以为你自己回答了。 上面是对你第二个问题的回答。 [/quote] 没关系,我已经把__finall去掉了。 我正在测试中,刚才又出现死机,提示大概是没有找到非分页内存。 现在敢肯定是 my_Data=(PCHAR)ExAllocatePool(NonPagedPool,iTotal) 这一句出错了,对此应该怎样做呢? [编辑 - 11/21/02 by freeshar] |
|
|
6楼#
发布于:2002-11-21 17:27
[quote]咋不能呢 确实编译出错,提示为: packet(51):error c2143:syntax error:missing \';\' before \'__finally\' 另外还有两行。 [/quote] 我没说清楚。是不能用__finally。我以为你自己回答了。 上面是对你第二个问题的回答。 |
|
|
7楼#
发布于:2002-11-21 16:46
咋不能呢 确实编译出错,提示为: packet(51):error c2143:syntax error:missing \';\' before \'__finally\' 另外还有两行。 |
|
|
8楼#
发布于:2002-11-21 16:33
咋不能呢
你在TRY{]里面都可以。 或者你觉得该释放的任何地方。 但EXCEPT{}里一定要释放刚分配的。 |
|
|
9楼#
发布于:2002-11-21 16:21
__except //在这儿用上面的三个参数之一代替(ExFreePool((PVOID) [编辑 - 11/21/02 by freeshar] |
|
|
10楼#
发布于:2002-11-21 11:17
__except //在这儿用上面的三个参数之一代替(ExFreePool((PVOID)
my_Data),1) //////// __except(EXCEPTION_EXECUTE_HANDLER) { if(my_Data) ExFreePool((PVOID)my_Data); DbgPrint(\"出现错误!!\"); return 0; } |
|
|
11楼#
发布于:2002-11-21 11:06
你犯了个错误 对呀, 有三个参数 EXCEPTION_CONTINUE_EXECUTION ( |
|
|
12楼#
发布于:2002-11-21 11:05
你犯了个错误 对呀, 有三个参数 EXCEPTION_CONTINUE_EXECUTION ( |
|
|
13楼#
发布于:2002-11-21 11:01
提示啥错误! 提示共有三行错误,如下: packet.c(41):error c2059:syntax error:\'{\' 对应程序的__except{ packet.c(57):error c2059:syntax error:\'return\' 对应 return pIpHdr->destIPAddress; packet.c(60):error c2059:syntax error:\'}\' 则对就于: } |
|
|
14楼#
发布于:2002-11-21 10:58
你犯了个错误
一般是这样调用,参数的具体意义去看书。 __except (EXCEPTION_EXECUTE_HANDLER) 应该放分了! |
|
|
15楼#
发布于:2002-11-21 10:54
如果是这样就可以编译通过:
__except (ExFreePool((PVOID)my_Data),1) { if(my_Data) ExFreePool((PVOID)my_Data); DbgPrint(\"出现错误!!\"); return 0; } [编辑 - 11/21/02 by freeshar] |
|
|
16楼#
发布于:2002-11-21 10:53
提示啥错误!
|
|
|
17楼#
发布于:2002-11-21 10:47
可以,最好加上错误的处理语句,例如返回,否则,程序会执行后面的语句。 还是编译不通过? 在 __except{ if(my_Data) ExFreePool((PVOID)my_Data); DbgPrint(\"出现错误!!\"); return 0; } 也一样... why?? |
|
|
18楼#
发布于:2002-11-21 10:31
可以,最好加上错误的处理语句,例如返回,否则,程序会执行后面的语句。
关于__try,__except,__finally的用法,你还可以参阅MSDN中的相关主题。 |
|
|
19楼#
发布于:2002-11-21 10:21
[///////////////////////////////////////
..... NTSTATUS status=STATUS_UNSUCCESSFUL; ..... __try { my_Data=(PCHAR)ExAllocatePool (NonPagedPool,iTotal); if(!my_Data) return STATUS_INSUFFICIENT_RESOURCES; copyPacketData(pPacket, my_Data, iTotal); pEthHdr=( PEthHead )my_Data; pIpHdr= ( PIpHead )( my_Data + sizeof( EthHead ) ); } __except { if(my_Data) ExFreePool((PVOID)my_Data); DbgPrint(\"出现错误!!\"); } return pIpHdr->destIPAddress; |
|
|
上一页
下一页