ReleaseMutex

指定されたミューテックスオブジェクトの所有権を解放します。

BOOL ReleaseMutex(
    HANDLE hMutex   // ミューテックスのハンドル
);

KERNEL32.DLL

引数

hMutex

ミューテックスオブジェクトのハンドルを指定します。このハンドルは CreateMutex 関数または OpenMutex 関数によって返されます。

戻り値

成功すると 0 以外の値が返ります。

失敗すると 0 が返ります。拡張エラー情報を取得するには、 GetLastError 関数を使います。

解説

呼び出しスレッドが指定されたミューテックスオブジェクトを所有していない場合は、この関数は失敗します。

スレッドは WaitForSingleObject 関数などの待機関数を呼び出す際にミューテックスオブジェクトのハンドルを指定することで、ミューテックスオブジェクトの所有権を獲得することができます。このとき、指定されたミューテックスオブジェクトが他のスレッドに所有されているときは、そのスレッドがミューテックスオブジェクトを解放するまでスレッドの実行が停止されます。

ミューテックスオブジェクトを所有するスレッドは、もはやそのオブジェクトを所有する必要がなくなったときに ReleaseMutex 関数を呼び出して所有権を解放しなくてはなりません。

ミューテックスオブジェクトを所有しているスレッドは、待機関数に同じミューテックスオブジェクトを指定することができます。このとき、スレッドの実行は停止されません。スレッドが待機関数を呼び出すたびに内部のミューテックスの再帰カウンタがインクリメントされます。スレッドが ReleaseMutex 関数を呼び出すたびに再帰カウンタはデクリメントされ、カウンタが 0 になった時点でミューテックスの所有権が解放されます。

対応情報

Windows 95 以降 / Windows NT 3.1 以降