-
-
[求助]为什么这里会返回STATUS_INVALID_HANDLE
-
发表于:
2017-10-30 13:37
3693
-
[求助]为什么这里会返回STATUS_INVALID_HANDLE
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
....
}
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!