C++ 判断是否为合法句柄
时间: 2023-09-02 07:05:35 浏览: 90
在 C++ 中,可以使用以下方法判断是否为合法句柄:
1. 使用 NULL 判断:如果句柄为 NULL,则表示句柄无效。
2. 使用 INVALID_HANDLE_VALUE 判断:在 Windows 系统中,如果句柄为 INVALID_HANDLE_VALUE,则表示句柄无效。
3. 使用 GetHandleInformation 判断:可以使用 GetHandleInformation 函数获取句柄信息,如果函数返回成功并且句柄类型为 HANDLE_TYPE_FILE 或 HANDLE_TYPE_DISK,则表示句柄有效。
以下是一个示例代码:
```c++
#include <Windows.h>
bool IsValidHandle(HANDLE hHandle)
{
if (hHandle == NULL || hHandle == INVALID_HANDLE_VALUE)
{
return false;
}
DWORD dwFlags;
if (!GetHandleInformation(hHandle, &dwFlags))
{
return false;
}
if ((dwFlags & HANDLE_FLAG_INHERIT) == 0)
{
return false;
}
return true;
}
```
该代码先判断句柄是否为 NULL 或 INVALID_HANDLE_VALUE,然后使用 GetHandleInformation 函数获取句柄信息,最后判断句柄类型和标志位是否符合要求。如果符合要求,则返回 true,否则返回 false。