OpenMutex ミューテックスオブジェクトのオープン

Cの宣言:

HANDLE OpenMutex(DWORD fAccess, fInherit, sMutexName);

VBの宣言:

Declare Function OpenMutex Lib "kernel32" Alias "OepnMutexA" ( _
	ByVal fAccess As Long,
	ByVal fInherit As Long,
	ByVal sMutexName As String) As Long

説明:

ミューテックスオブジェクトをオープンし、そのハンドルを取得する。

引数の意味は、以下の通り。
fdwAccess (IN) ミューテックスオブジェクトをどのように使用するかを指定するフラグ。指定できるフラグは後述の表を参照。
fInherit (IN) 取得結果のハンドルが継承可能か否かを表す真偽値。
sMutexName (IN) オープンするミューテックスの名前。名前は、大文字・小文字が区別される。

fdwAccessに指定可能な値は、以下の論理和である。
SYNCHRONIZE 所有権の取得や開放を行う。(NTのみ)
MUTEX_ALL_ACCESS 可能な全ての操作を行う。

戻り値は、オープンしたミューテックスオブジェクトのハンドルである。ミューテックスオブジェクトのオープンに失敗した場合、NULLが返される。

Cのサンプル:

/* システム中で同時に2つ以上の処理を行ってはいけない処理を行う関数
 * ただし、MUTEX_NAMEで定義された名前を持つミューテックスオブジェクトが
 * 既に作成されているものとする
 */
void CriticalFunc()
{
	HANDLE hMutex;
	
	/* ミューテックスのオープン */
	hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, MUTEX_NAME);

	/* 所有権獲得まで待機 */
	WaitForSingleObject(hMutex, INFINITE);
	
	/* 処理 */
	printf("処理開始\n");
	Sleep(3000);
	printf("処理終了\n");
	
	/* 後処理 */
	ReleaseMutex(hMutex);
	CloseHandle(hMutex);
}
(original text:1998/12/25 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。