可以将Win32 HANDLE 初始化为 NULL 吗?或者有没有更好或推荐的方法来初始化 HANDLE ?
HANDLE
NULL
例如,
void foo() { HANDLE hFile; hFile = CreateFile(/* necessary arguments*/); }
我应该用什么来初始化 hFile ?
hFile
在您的示例代码中,您不需要将 hFile 初始化为任何内容,因为它是由 CreateFile 函数初始化的 .
CreateFile
Windows API与它认为的"null"句柄不完全一致 . 某些API(如 CreateFile )在失败时返回 INVALID_HANDLE_VALUE ,而其他API在失败时返回 NULL . 因此,测试 HANDLE 是否有效的方式取决于您从中获取的函数 - 检查函数的实际文档,并查看它所说的失败返回值 .
INVALID_HANDLE_VALUE
1 回答
在您的示例代码中,您不需要将
hFile
初始化为任何内容,因为它是由CreateFile
函数初始化的 .Windows API与它认为的"null"句柄不完全一致 . 某些API(如
CreateFile
)在失败时返回INVALID_HANDLE_VALUE
,而其他API在失败时返回NULL
. 因此,测试HANDLE
是否有效的方式取决于您从中获取的函数 - 检查函数的实际文档,并查看它所说的失败返回值 .