Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检查HKEY句柄是否有效?_C++_Registry_Handle - Fatal编程技术网

C++ 检查HKEY句柄是否有效?

C++ 检查HKEY句柄是否有效?,c++,registry,handle,C++,Registry,Handle,我使用的函数基本上是这样的: HANDLE someHandler; RegCloseKey((HKEY) someHandler); 在RegCloseKey()返回ERROR\u SUCCESS后,我检查以下内容: if (someHandler == INVALID_HANDLE_VALUE) { ..... } 但我现在明白了,上面的条件从来都不是真的。我尝试用null,null指针替换无效句柄值的检查,但都失败了。如何检查句柄是否有效?RegCloseKey不会更改句柄值。它只是关

我使用的函数基本上是这样的:

HANDLE someHandler;
RegCloseKey((HKEY) someHandler);
RegCloseKey()
返回
ERROR\u SUCCESS
后,我检查以下内容:

if (someHandler == INVALID_HANDLE_VALUE)
{ ..... }

但我现在明白了,上面的条件从来都不是真的。我尝试用
null,null指针
替换无效句柄值的检查,但都失败了。如何检查句柄是否有效?

RegCloseKey不会更改句柄值。它只是关上了把手。关闭后,变量
someHandler
会记住句柄值是什么,但它没有用处。您可能希望将其设置为无效值,而不是对其进行测试:

RegCloseKey(someHandler);
someHandler = INVALID_HANDLE_VALUE;
这将防止您在关闭后意外尝试使用它。同样的模式可以应用于动态内存、文件句柄等。您也可以考虑使用C++设计的框架来隐藏一些资源管理的细节。例如,ATL提供了一个更自然的C++接口,用于注册访问,而不是面向C的Windows API。