首页
社区
课程
招聘
[注意]0XC0000008错误中的一例子
2014-10-17 06:38 12914

[注意]0XC0000008错误中的一例子

2014-10-17 06:38
12914
昨天修改了一下代码出现0XC0000008异常,调试时候一直跳出来,检查了很久没有发现问题,看网上说的一些例子,结合自己的修改总算知道其中一个例子会发生这样异常,写下本文供自己记忆整理之用。
原来总的结尾代码是下面的也一直没有问题
if (pi.hProcess)
{
   TerminateProcess(pi.hProcess, 0);
   CloseHandle(pi.hThread);
   CloseHandle(pi.hProcess);//实际上这边就异常了所以尝试半天时间看
}
if (pData->hProcess)
{
   CloseHandle(pData->hProcess);
}
if(checkANSERLOG==1)//调试器到这边报异常vs调试器给一个大概地址
{
                                    .
                                    .
                                    .
}

上面代码原来不报异常的。在代码之前加了2行代码

pData->hProcess=pi.hProcess;//为了多加一个检测加了这2条语句
            ...
CloseHandle(pData->hProcess);

结果导致后面  CloseHandle(pi.hProcess);
出现0XC0000008异常,原来CloseHandle只能关闭一次别画蛇添足再来一次那就异常了。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 459
活跃值: (334)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
木瓜枫叶 2 2014-10-17 08:41
2
0
我想windows 完全可以 在你第二次关闭句柄时发现是无效句柄,不做任何处理。
但为了告诉你这么做不合规矩,就给你报异常
雪    币: 15912
活跃值: (1100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
killbr 2014-10-17 09:48
3
0
原来是这样啊。
雪    币: 73
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lyfwwb 2014-11-13 08:55
4
0
这个是演示代码,演示如何出先错误,你要避免错误那是你代码上的处理问题了。我这个代码只是让大家知道碰到同样问题可以参考下是不是出现演示错误那样。
游客
登录 | 注册 方可回帖
返回