我怎么知道HANDLE对象是否被初始化

How do I know if HANDLE object been initialized?

本文关键字:初始化 是否 对象 HANDLE 我怎么知道      更新时间:2023-10-16

我正在用c++为Windows编程,并且我有一个HANDLE对象到一个互斥锁定义为:

static HANDLE Instance_Mutex;

我想检查这个HANDLE是否被互斥对象初始化;也就是代码:

Instance_Mutex = CreateMutex(NULL,FALSE,NULL);

已被调用。

如果它只是锁定它,如果不是,在这个HANDLE上创建互斥锁,然后锁定它。那么怎样做才是合适的呢?

未创建HANDLE对象时是否有特定的值?

如果HANDLE是一个全局变量,那么它将被初始化为零(即它将是nullptr)。

不过,显式初始化为nullptr将是更好的样式。

顺便说一下,nullptr也是CreateMutex失败时返回的值。所以这个不变量(如果HANDLE不是互斥对象,则nullptr)将被保持。