首页
社区
课程
招聘
[求助]为什么这里会返回STATUS_INVALID_HANDLE
发表于: 2017-10-30 13:37 3693

[求助]为什么这里会返回STATUS_INVALID_HANDLE

2017-10-30 13:37
3693

status = ZwOpenKey(&hKey, KEY_ALL_ACCESS, &oa);

//返回STATUS_SUCCESS

status = ZwSetValueKey( hKey, &ustr, 0, REG_DWORD, &dwData, sizeof(DWORD) );

//返回STATUS_SUCCESS

status = ZwDeleteValueKey(hKey, &ustr);

//返回STATUS_SUCCESS

代码差不多就是这样,连续的为什么Delete的时候会返回了INVALID_HANDLE纠结了一早上找不到原因。


//把代码移到一起测试了一遍,执行是正确的,具体失败的时候是这样子的:

status = ZwOpenKey(&hKey, KEY_ALL_ACCESS, &oa);
FunA(hKey);
FunB(hKey, hKeyB);//传入参数有另一个handle不知道会不会影响
//返回STATUS_SUCCESS
NTSTATUS FunA(HANDLE hKey)
{
...

status = ZwSetValueKey( hKey, &ustr, 0, REG_DWORD, &dwData, sizeof(DWORD) ); 

return status;//SUCCESS
}

NTSTAUS FunB(HANDLE hKey, Handle hKeyB)
{
....

status = ZwDeleteValueKey(hKey, &ustr);//返回0xc0000008

....

}


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 307
活跃值: (60)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
是不是提前把句柄关闭了?
2017-10-30 14:23
0
雪    币: 203
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
冰栈 是不是提前把句柄关闭了?
没有,3句代码基本都是连在一起的。只有Delete是失败的我还特意输出了两次的句柄,值都是一样的
2017-10-30 14:36
0
雪    币: 203
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
冰栈 是不是提前把句柄关闭了?
我试了下把三句连在一起没问题,但是吧delete放到另外一个函数中传入HANDLE参数就不行了,明明两次的参数都是一模一样的
2017-10-30 15:35
0
雪    币: 307
活跃值: (60)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
fior 我试了下把三句连在一起没问题,但是吧delete放到另外一个函数中传入HANDLE参数就不行了,明明两次的参数都是一模一样的[em_10]
能不能上一下代码?
2017-10-30 15:47
0
雪    币: 203
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
冰栈 能不能上一下代码?
。。刚才上面代码上面什么都没改,编译了一下,竟然成功了。真的太灵异了。。这个问题卡了我一天。我真的检查了好几遍绝对没有中间关闭,也没什么特别的操作
2017-10-30 16:09
0
游客
登录 | 注册 方可回帖
返回
//