CreateSemaphoreExA 関数 (winbase.h)
名前付きセマフォ オブジェクトまたは名前のないセマフォ オブジェクトを作成または開き、オブジェクトへのハンドルを返します。
構文
HANDLE CreateSemaphoreExA(
[in, optional] LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
[in] LONG lInitialCount,
[in] LONG lMaximumCount,
[in, optional] LPCSTR lpName,
DWORD dwFlags,
[in] DWORD dwDesiredAccess
);
パラメーター
[in, optional] lpSemaphoreAttributes
SECURITY_ATTRIBUTES 構造体へのポインター。 このパラメーターが NULL
構造体の lpSecurityDescriptor メンバーは、新しいセマフォのセキュリティ記述子を指定します。 このパラメーターが NULL
[in] lInitialCount
セマフォ オブジェクトの初期カウント。 この値は、0 以上で、lMaximumCount
[in] lMaximumCount
セマフォ オブジェクトの最大カウント。 この値は 0 より大きくする必要があります。
[in, optional] lpName
セマフォ オブジェクトの名前を指定する null で終わる文字列へのポインター。 名前は MAX_PATH 文字に制限されています。 名前の比較では大文字と小文字が区別されます。
lpName
lpName
lpName
名前には、グローバル名前空間またはセッション名前空間にオブジェクトを明示的に作成するための "Global" または "Local" プレフィックスを付けることができます。 名前の残りの部分には、円記号 (\) を除く任意の文字を含めることができます。 詳細については、「カーネル オブジェクト名前空間
オブジェクトはプライベート名前空間に作成できます。 詳細については、「オブジェクト名前空間の」を参照してください。
dwFlags
このパラメーターは予約済みであり、0 である必要があります。
[in] dwDesiredAccess
セマフォ オブジェクトのアクセス マスク。 アクセス権の一覧については、「同期オブジェクトのセキュリティとアクセス権の
戻り値
関数が成功した場合、戻り値はセマフォ オブジェクトへのハンドルです。 関数呼び出しの前に名前付きセマフォ オブジェクトが存在する場合、関数は既存のオブジェクトへのハンドルを返し、GetLastError は ERROR_ALREADY_EXISTSを返します。
関数が失敗した場合、戻り値は NULL
備考
セマフォ オブジェクトの状態は、カウントが 0 より大きい場合に通知され、カウントが 0 に等しい場合は非割り当てになります。 lInitialCount パラメーターは、初期カウントを指定します。 カウントを 0 より小さくしたり、lMaximumCount パラメーターで指定された値より大きくしたりすることはできません。
呼び出し元プロセスの任意のスレッドは、待機関数の 1への呼び出しでセマフォ オブジェクト ハンドルを指定できます。 指定したオブジェクトの状態が通知されると、単一オブジェクト待機関数が返されます。 複数オブジェクト待機関数は、いずれか 1 つ、または指定されたすべてのオブジェクトが通知されたときに返すように指示できます。 待機関数が戻ると、待機中のスレッドが解放され、実行が続行されます。 スレッドがセマフォ オブジェクトの待機を完了するたびに、セマフォ オブジェクトの数が 1 ずつ減らされます。 スレッドが完了すると、ReleaseSemaphore 関数が呼び出され、セマフォ オブジェクトの数がインクリメントされます。
複数のプロセスが同じセマフォ オブジェクトのハンドルを持つ可能性があり、プロセス間同期にオブジェクトを使用できます。 次のオブジェクト共有メカニズムを使用できます。
CreateProcess 関数によって作成された子プロセスは、lpSemaphoreAttributes が CreateSemaphoreEx のパラメーター 有効 場合、セマフォ オブジェクトハンドルを継承できます。 - プロセスでは、DuplicateHandle 関数の呼び出しでセマフォ オブジェクト ハンドルを指定して、別のプロセスで使用できる重複ハンドルを作成できます。
- プロセスは、[OpenSemaphore](.. の呼び出しでセマフォ オブジェクトの名前を指定できます。/synchapi/nf-synchapi-signalobjectandwait.md) または CreateSemaphoreEx 関数
します。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista [デスクトップ アプリ |UWP アプリ] |
サポートされる最小サーバー | Windows Server 2008 [デスクトップ アプリ |UWP アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | winbase.h (Windows.h を含む) |
ライブラリ | Kernel32.lib |
DLL | Kernel32.dll |
関連項目
CloseHandle の