paoyipao
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:5999回复:44

怎样解决DRIVE_IRQL_NOT_LESS_OR_EQUAL问题?哪位高手赶紧帮帮忙!!

楼主#
更多 发布于:2002-11-19 16:13
我的程序(修改passthru例子)运行一段时间后系统出现蓝屏,系统提示为:
DRIVER_IRQL_NOT_LESS_OR_EQUAL
这是什么意思?
解决这问题有何对策?
望高手们指点!!


[编辑 -  11/19/02 by  freeshar]

[编辑 -  11/19/02 by  freeshar]

[编辑 -  11/20/02 by  freeshar]

最新喜欢:

leavepeaceleavep...
知之为知之,不知为不知 有错则改之
paoyipao
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-21 17:59
给分了!!
谢谢各大高手的解题。
俺另开一贴“怎样才能防止引发页故障呢?”
希望高手们继续给予帮助,感谢了!!
知之为知之,不知为不知 有错则改之
paoyipao
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-21 17:54
[quote]怎样才能防止引发页故障呢?
我在此之前试过用“自旋锁”加锁,但也不行,难道就没有办法了吗?
 


兄弟,另开帖子吧!你不觉得要回答很不方便吗? [/quote]
OK,没问题1
知之为知之,不知为不知 有错则改之
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-21 17:52
怎样才能防止引发页故障呢?
我在此之前试过用“自旋锁”加锁,但也不行,难道就没有办法了吗?
 


兄弟,另开帖子吧!你不觉得要回答很不方便吗?
生命驱动,活力无限!
paoyipao
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-21 17:50
怎样才能防止引发页故障呢?
我在此之前试过用“自旋锁”加锁,但也不行,难道就没有办法了吗?
知之为知之,不知为不知 有错则改之
paoyipao
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-21 17:43
[quote][quote]咋不能呢
你在TRY{]里面都可以。
或者你觉得该释放的任何地方。
但EXCEPT{}里一定要释放刚分配的。


确实编译出错,提示为:
packet(51):error c2143:syntax error:missing \';\' before \'__finally\'
另外还有两行。 [/quote]

我没说清楚。是不能用__finally。我以为你自己回答了。
上面是对你第二个问题的回答。 [/quote]

没关系,我已经把__finall去掉了。
我正在测试中,刚才又出现死机,提示大概是没有找到非分页内存。
现在敢肯定是
my_Data=(PCHAR)ExAllocatePool(NonPagedPool,iTotal)
这一句出错了,对此应该怎样做呢?

[编辑 -  11/21/02 by  freeshar]
知之为知之,不知为不知 有错则改之
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-21 17:27
[quote]咋不能呢
你在TRY{]里面都可以。
或者你觉得该释放的任何地方。
但EXCEPT{}里一定要释放刚分配的。


确实编译出错,提示为:
packet(51):error c2143:syntax error:missing \';\' before \'__finally\'
另外还有两行。 [/quote]

我没说清楚。是不能用__finally。我以为你自己回答了。
上面是对你第二个问题的回答。
生命驱动,活力无限!
paoyipao
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-21 16:46
咋不能呢
你在TRY{]里面都可以。
或者你觉得该释放的任何地方。
但EXCEPT{}里一定要释放刚分配的。


确实编译出错,提示为:
packet(51):error c2143:syntax error:missing \';\' before \'__finally\'
另外还有两行。
知之为知之,不知为不知 有错则改之
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-11-21 16:33
咋不能呢
你在TRY{]里面都可以。
或者你觉得该释放的任何地方。
但EXCEPT{}里一定要释放刚分配的。
生命驱动,活力无限!
paoyipao
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-11-21 16:21
__except //在这儿用上面的三个参数之一代替(ExFreePool((PVOID)
my_Data),1)

////////
__except(EXCEPTION_EXECUTE_HANDLER)
{
if(my_Data)
ExFreePool((PVOID)my_Data);
DbgPrint(\"出现错误!!\");
return 0;

}




为什么??????????????????????????????????
__except(EXCEPTION_EXECUTE_HANDLER)
{
if(my_Data)
ExFreePool((PVOID)my_Data);
DbgPrint(\"出现错误!!\");
return 0;
}
不能和
__finally
{
if(my_Data)
  ExFreePool((PVOID)my_Data);
}
一起用,也就是说如果用了__except{}就不能用__finally{}
去掉其中一个编译才能通过!!怪了,怪了!
如果不能用__finally{}那可不是不能释放资料了吗?


[编辑 -  11/21/02 by  freeshar]
知之为知之,不知为不知 有错则改之
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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;

}



生命驱动,活力无限!
paoyipao
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-11-21 11:06
你犯了个错误
一般是这样调用,参数的具体意义去看书。
__except (EXCEPTION_EXECUTE_HANDLER)

应该放分了!
 

对呀,
有三个参数
EXCEPTION_CONTINUE_EXECUTION (
知之为知之,不知为不知 有错则改之
paoyipao
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-11-21 11:05
你犯了个错误
一般是这样调用,参数的具体意义去看书。
__except (EXCEPTION_EXECUTE_HANDLER)

应该放分了!
 

对呀,
有三个参数
EXCEPTION_CONTINUE_EXECUTION (
知之为知之,不知为不知 有错则改之
paoyipao
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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:\'}\'
则对就于: }
知之为知之,不知为不知 有错则改之
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-11-21 10:58
你犯了个错误
一般是这样调用,参数的具体意义去看书。
__except (EXCEPTION_EXECUTE_HANDLER)

应该放分了!
生命驱动,活力无限!
paoyipao
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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]
知之为知之,不知为不知 有错则改之
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-11-21 10:53
提示啥错误!
生命驱动,活力无限!
paoyipao
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-06-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-11-21 10:47
可以,最好加上错误的处理语句,例如返回,否则,程序会执行后面的语句。
关于__try,__except,__finally的用法,你还可以参阅MSDN中的相关主题。

还是编译不通过?

__except{
if(my_Data)
ExFreePool((PVOID)my_Data);
DbgPrint(\"出现错误!!\");
return 0;
}
也一样...
why??
知之为知之,不知为不知 有错则改之
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-11-21 10:31
可以,最好加上错误的处理语句,例如返回,否则,程序会执行后面的语句。
关于__try,__except,__finally的用法,你还可以参阅MSDN中的相关主题。
Tom_lyd
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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;



生命驱动,活力无限!
上一页
游客

返回顶部