<Return[O]><Top>

OpenMutex

Declare Function Api_OpenMutex& Lib "kernel32" Alias "OpenMutexA" (ByVal dwDesiredAccess&, ByVal bInheritHandle&, ByVal lpName$)

Declare Function OpenMutex Lib "kernel32" Alias "OpenMutexA" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal lpName As String) As Long

既存の名前付きミューテックスオブジェクトを開く。

パラメータ
dwDesiredAccess
    ミューテックスオブジェクトに対して要求するべきアクセス権を指定する。

    オブジェクトのセキュリティをサポートしているシステムでは、指定されたオブジェクトのセキュリティ記述子が、呼び出し側プロセスが要求した

    アクセス権を許可していなければならない。許可していない場合、この関数は失敗する。
    このパラメータで、次の値を組み合わせて指定する。

    アクセス権                          

説明                                                           

    MUTEX_ALL_ACCESS

ミューテックスオブジェクトで利用可能なすべてのアクセス権を指定する。

    SYNCHRONIZE

 

 

Windows NT/2000:「wait functions」(待機関数)のいずれかがミューテックスの所有権を取得する目

的、および ReleaseMutex 関数が所有権を解放する目的で、ミューテックスハンドルを排他使用することを認

める。

bInheritHandle
    返されるハンドルを継承可能にするかどうかを指定する。

    TRUE を指定すると、CreateProcess 関数が作成したプロセスは、このハンドルを継承できる。

    FALSE を指定すると、このハンドルを継承できない。
lpName
    開くべきミューテックスの名前を保持している、NULL で終わる文字列へのポインタを指定する。

    名前を比較する際に、大文字と小文字は区別される。
    Terminal Services:グローバル名前空間またはセッション名前空間でオブジェクトを明示的に作成するために、「Global\」または

    「Local\」のプレフィックスを付けることができる。名前の残りの部分は、円記号(\)を除き、任意の文字を記述できる。
    Windows 2000:Terminal Services が動作していない Windows 2000 システムでは、「Global\」と「Local\」の各プレフィックスは無

    視される。名前の残りの部分は、円記号(\)を除き、任意の文字を記述できる。
    Windows NT 4.0 以前と Windows 95/98:名前は、円記号(\)を除き、任意の文字を記述できる。

戻り値
    関数が成功すると、ミューテックスオブジェクトのハンドルが返る。
    関数が失敗すると、NULL が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    OpenMutex 関数を使うと、複数のプロセスが同じミューテックスオブジェクトに対するハンドルを開くことができる。

    1 つのプロセスが CreateMutex 関数を使って既にミューテックスを作成した場合にのみ、この関数は成功する。呼び出し側プロセスは、

    dwDesiredAccess パラメータで指定したアクセス権の制限を適用する目的で、「wait functions」(待機関数)など、ミューテックスオブジ

    ェクトのハンドルを必要とする任意の関数で、取得したハンドルを使うことができる。
    ハンドルを複製するには、DuplicateHandle 関数を使う。ハンドルを閉じるには、CloseHandle 関数を使う。プロセスが終了する際に、シス

    テムはそのプロセスが所有していたハンドルを自動的に閉じる。ミューテックスオブジェクトに対して 1 つまたは複数のハンドルが開いている場

    合、最後のハンドルが閉じた時点で、そのミューテックスオブジェクトは破棄される。