CreateMutexW

名前付きまたは無名のミューテックスオブジェクトを作成または開く。(Unicode)

CreateMutexW lpMutexAttributes, bInitialOwner, lpName

lpMutexAttributes : [var] SECURITY_ATTRIBUTES 構造体へのポインタ。NULL の場合、ハンドルは子プロセスに継承されない。
bInitialOwner : [int] TRUE でかつ呼び出し元がミューテックスを作成した場合、呼び出し元スレッドがミューテックスの初期所有権を取得する。そうでない場合は所有権を取得しない。
lpName : [wstr] ミューテックスオブジェクトの名前。名前は MAX_PATH 文字に制限され、大文字小文字を区別する。既存の名前付きミューテックスと一致した場合は MUTEX_ALL_ACCESS で既存オブジェクトを開く。NULL の場合は無名オブジェクトを作成する。"Global\" または "Local\" プレフィックスでグローバル/セッション名前空間を指定できる。

(プラグイン / モジュール : kernel32.dll)

解説

名前付きまたは無名のミューテックスオブジェクトを作成または開く。(Unicode)

[戻り値]
関数が成功した場合、戻り値は新しく作成されたミューテックスオブジェクトへのハンドル。失敗した場合は
NULL。名前付きミューテックスで既存のオブジェクトがあった場合、戻り値は既存オブジェクトへのハンドルで GetLastError は
ERROR_ALREADY_EXISTS を返す。

[備考]
CreateMutex が返すハンドルは MUTEX_ALL_ACCESS
アクセス権を持つ。単一インスタンス制限のために名前付きミューテックスを使う場合、悪意あるユーザーがミューテックスを先に作成して起動を妨害する可能性があるため、ランダム名付きミューテックスを使うか承認済みユーザーのみが取得できるようにする。ミューテックスの状態は、どのスレッドも所有していない場合にシグナル状態。所有スレッドは
ReleaseMutex で所有権を解放する。同一ミューテックスを複数回待機した場合、取得した回数分 ReleaseMutex
を呼ぶ必要がある。
(以下省略)

情報

プラグイン / モジュールkernel32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_kernel32_gen2.hs