OpenMutexW 関数 (synchapi.h)
既存の名前付きミューテックス オブジェクトを開きます。
構文
HANDLE OpenMutexW(
[in] DWORD dwDesiredAccess,
[in] BOOL bInheritHandle,
[in] LPCWSTR lpName
);
パラメーター
[in] dwDesiredAccess
ミューテックス オブジェクトへのアクセス。 ミューテックスを使用するには、 SYNCHRONIZE アクセス権のみが必要です。ミューテックスのセキュリティを変更するには、 MUTEX_ALL_ACCESSを指定します。 指定されたオブジェクトのセキュリティ記述子が呼び出し元プロセスに対して要求されたアクセスを許可しない場合、関数は失敗します。 アクセス権の一覧については、「 同期オブジェクトのセキュリティとアクセス権」を参照してください。
[in] bInheritHandle
この値が TRUE の場合、このプロセスによって作成されたプロセスはハンドルを継承します。 それ以外の場合、プロセスはこのハンドルを継承しません。
[in] lpName
開くミューテックスの名前。 名前の比較では大文字と小文字が区別されます。
この関数は、プライベート名前空間内のオブジェクトを開くことができます。 詳細については、「 オブジェクトの名前空間」を参照してください。
ターミナル サービス: 名前には、グローバル名前空間またはセッション名前空間でオブジェクトを明示的に開くために、"Global" または "Local" プレフィックスを付けることができます。 名前の残りの部分には、円記号 (\) を除く任意の文字を含めることができます。 詳細については、「 カーネル オブジェクトの名前空間」を参照してください。
メモ ターミナル サービス セッションを使用して、高速ユーザー切り替えが実装されます。 ログオンする最初のユーザーはセッション 0 を使用し、次にログオンするユーザーはセッション 1 を使用します。 カーネル オブジェクト名は、アプリケーションが複数のユーザーをサポートできるように、ターミナル サービスに関するガイドラインに従う必要があります。
戻り値
関数が成功した場合、戻り値はミューテックス オブジェクトへのハンドルです。
関数が失敗した場合は、返される値は NULL です。 詳細なエラー情報を得るには、GetLastError を呼び出します。
名前付きミューテックスが存在しない場合、関数は失敗し、GetLastError はERROR_FILE_NOT_FOUNDを返します。
注釈
OpenMutex 関数を使用すると、複数のプロセスで同じミューテックス オブジェクトのハンドルを開きます。 関数は、 CreateMutex 関数を使用してミューテックスが既に作成されているプロセスがある場合にのみ成功します。 呼び出し元のプロセスでは、dwDesiredAccess パラメーターで指定されたアクセスの制限に従って、待機関数などのミューテックス オブジェクトへのハンドルを必要とする任意の関数で、返されたハンドルを使用できます。
ハンドルは DuplicateHandle 関数を使用して複製できます。 CloseHandle 関数を使用してハンドルを閉じます。 プロセスが終了すると、ハンドルが自動的に閉じられます。 ミューテックス オブジェクトは、最後のハンドルが閉じられると破棄されます。
マルチスレッド アプリケーションで名前付きミューテックス オブジェクトを繰り返し作成、開き、閉じる必要がある場合は、競合状態が発生する可能性があります。 この状況では、 CreateMutex が存在する場合はミューテックスを開き、存在しない場合は作成するため、 OpenMutex の代わりに CreateMutex を 使用することをお勧めします。
例
OpenMutex を使用する例については、「名前付きオブジェクトの使用」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | synchapi.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |