SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
Semaphore インスタンスを取得または作成します。これにより、イベントの作成時に必要に応じて SemaphoreSecurity インスタンスを設定するように指定できます。
public:
static System::Threading::Semaphore ^ Create(int initialCount, int maximumCount, System::String ^ name, [Runtime::InteropServices::Out] bool % createdNew, System::Security::AccessControl::SemaphoreSecurity ^ semaphoreSecurity);
public static System.Threading.Semaphore Create (int initialCount, int maximumCount, string? name, out bool createdNew, System.Security.AccessControl.SemaphoreSecurity? semaphoreSecurity);
static member Create : int * int * string * bool * System.Security.AccessControl.SemaphoreSecurity -> System.Threading.Semaphore
Public Shared Function Create (initialCount As Integer, maximumCount As Integer, name As String, ByRef createdNew As Boolean, semaphoreSecurity As SemaphoreSecurity) As Semaphore
パラメーター
- initialCount
- Int32
同時に満たされるセマフォの要求の初期数。
- maximumCount
- Int32
同時に満たされるセマフォの要求の最大数。
- name
- String
同期オブジェクトが他のプロセスと共有される場合は、名前。それ以外の場合は、null
または空の文字列。 名前の大文字と小文字は区別されます。 円記号 (\) は予約されており、名前空間の指定にのみ使用できます。 名前空間の詳細については、「解説」セクションを参照してください。 オペレーティング システムによっては、名前にさらに制限がある場合があります。 たとえば、Unix ベースのオペレーティング システムでは、名前空間を除外した後の名前は有効なファイル名である必要があります。
- createdNew
- Boolean
ローカル セマフォが作成された場合、つまり name
が null
または Empty の場合、このメソッドから戻るときにこの引数は常に true
に設定されます。
name
に有効な空でない値が含まれている場合、システム セマフォが作成されるときにこの引数は true
に設定されます。または、既存のシステム セマフォがその名前で見つかった場合は false
に設定されます。 このパラメーターは初期化せずに渡されます。
- semaphoreSecurity
- SemaphoreSecurity
適用する省略可能なセマフォ アクセス制御セキュリティ。
戻り値
名前がある場合はシステム セマフォを、名前がない場合はローカル セマフォを表すオブジェクト。
例外
initialCount
が maximumCount
より大きくなっています。
または
.NET Framework のみ: name
がMAX_PATH (260 文字) を超えています。
name
が無効です。 これは、不明なプレフィックスや無効な文字など、オペレーティング システムによって配置される可能性のある制限など、さまざまな理由で発生する可能性があります。 名前と共通プレフィックス "Global\" と "Local\" では大文字と小文字が区別されることに注意してください。
または
他にもエラーが発生しました。
HResult
プロパティにさらに情報が含まれている場合があります。
Windows のみ: name
により不明な名前空間が指定されました。 詳しくは、「オブジェクト名」をご覧ください。
name
は長すぎます。 長さの制限は、オペレーティング システムまたは構成によって異なる場合があります。
指定された name
を持つ同期オブジェクトを作成できません。 別の型の同期オブジェクトに同じ名前が指定されている可能性があります。
注釈
名前空間をname
指定するには、 または のプレフィックスGlobal\
Local\
を付けます。 名前空間を Global
指定すると、同期オブジェクトをシステム上の任意のプロセスと共有できます。 名前空間が Local
指定されている場合(名前空間が指定されていない場合の既定値)、同期オブジェクトは同じセッション内のプロセスと共有される場合があります。 Windows では、セッションはログイン セッションであり、通常、サービスは別の非対話型セッションで実行されます。 Unix に似たオペレーティング システムでは、各シェルに独自のセッションがあります。 セッションローカル同期オブジェクトは、同じセッションで実行される親子関係を持つプロセス間の同期に適している場合があります。 Windows での同期オブジェクト名の詳細については、「 オブジェクト名」を参照してください。
name
が指定され、要求された型の同期オブジェクトが名前空間に既に存在する場合は、既存の同期オブジェクトが開かれます。 別の型の同期オブジェクトが名前空間に既に存在する場合は、 WaitHandleCannotBeOpenedException
がスローされます。 それ以外の場合は、新しい同期オブジェクトが作成されます。
注意事項
既定では、名前付きセマフォは、それを作成したユーザーに制限されません。 セマフォを複数回取得して解放しないことでセマフォを妨害するなど、他のユーザーがセマフォを開いて使用できる場合があります。 特定のユーザーへのアクセスを制限するために、名前付きセマフォを作成するときに を渡 SemaphoreSecurity すことができます。 信頼されていないユーザーがコードを実行している可能性があるシステムでは、アクセス制限なしで名前付きセマフォを使用しないでください。
適用対象
.NET