如何适当地初始化Win32 HANDLE?

Kar*_*Rao 2 winapi handle

可以将Win32初始化HANDLENULL吗?还是有更好的或推荐的方法来初始化HANDLEs?

例如,

void foo()
{
   HANDLE hFile;
   hFile = CreateFile(/* necessary arguments*/);
}
Run Code Online (Sandbox Code Playgroud)

我应该hFile用什么来初始化?

Jon*_*ter 5

在您的示例代码中,您不需要初始化hFile任何东西,因为它是由CreateFile函数初始化的。

Windows API在认为“空”句柄的方面并不完全一致。一些API(如CreateFile)会INVALID_HANDLE_VALUE在失败时返回,而其他API 则会NULL在失败时返回。因此,测试a HANDLE是否有效的方式取决于您从中获得的功能-检查该功能的实际文档,并查看其表示失败时的返回值。