MutexAcl.Create(Boolean, String, Boolean, MutexSecurity) Methode

Definition

Ruft eine Instanz ab oder erstellt Mutex sie, sodass optional MutexSecurity angegeben werden kann, dass sie während der Mutex-Erstellung festgelegt wird.

public:
 static System::Threading::Mutex ^ Create(bool initiallyOwned, System::String ^ name, [Runtime::InteropServices::Out] bool % createdNew, System::Security::AccessControl::MutexSecurity ^ mutexSecurity);
public static System.Threading.Mutex Create(bool initiallyOwned, string? name, out bool createdNew, System.Security.AccessControl.MutexSecurity? mutexSecurity);
static member Create : bool * string * bool * System.Security.AccessControl.MutexSecurity -> System.Threading.Mutex
Public Shared Function Create (initiallyOwned As Boolean, name As String, ByRef createdNew As Boolean, mutexSecurity As MutexSecurity) As Mutex

Parameter

initiallyOwned
Boolean

trueum dem aufrufenden Thread den anfänglichen Besitz des benannten Systemmutex zu geben, wenn der benannte Systemmutex als Ergebnis dieses Aufrufs erstellt wird; andernfalls . false

name
String

Der Name, wenn das Synchronisierungsobjekt für andere Prozesse freigegeben werden soll; null andernfalls oder eine leere Zeichenfolge. Bei dem Namen wird die Groß-/Kleinschreibung beachtet. Das umgekehrte Schrägstrichzeichen (\) ist reserviert und kann nur verwendet werden, um einen Namespace anzugeben. Weitere Informationen zu Namespaces finden Sie im Abschnitt "Hinweise". Je nach Betriebssystem kann es weitere Einschränkungen für den Namen geben. Bei Unix-basierten Betriebssystemen muss beispielsweise der Name nach Ausschluss des Namespaces ein gültiger Dateiname sein.

createdNew
Boolean

Wenn diese Methode zurückgegeben wird, wird dieses Argument immer festgelegt true , wenn ein lokaler Mutex erstellt wird, d. h. wann name oder nullEmpty. Wenn name ein gültiger nicht leerer Wert vorhanden ist, wird dieses Argument beim true Erstellen des Systemmutex festgelegt, oder es wird festgelegt false , ob ein vorhandenes Systemmutex mit diesem Namen gefunden wird. Dieser Parameter wird nicht initialisiert übergeben.

mutexSecurity
MutexSecurity

Die optionale Mutex-Zugriffssteuerungssicherheit, die angewendet werden soll.

Gibt zurück

Ein Objekt, das einen Systemmutex darstellt, falls benannt oder ein lokaler Mutex, wenn namelos.

Ausnahmen

.NET Framework: name ist länger als MAX_PATH (260 Zeichen).

name ist ungültig. Dies kann aus verschiedenen Gründen sein, einschließlich einiger Einschränkungen, die vom Betriebssystem platziert werden können, z. B. ein unbekanntes Präfix oder ungültige Zeichen. Beachten Sie, dass bei namen und allgemeinen Präfixen "Global\" und "Local\" die Groß-/Kleinschreibung beachtet wird.

-oder-

Es gab einen anderen Fehler. Die HResult Eigenschaft kann weitere Informationen bereitstellen.

nur Windows: name einen unbekannten Namespace angegeben. Weitere Informationen finden Sie unter Objektnamen .

name ist zu lang. Längenbeschränkungen können vom Betriebssystem oder der Konfiguration abhängen.

Ein Synchronisierungsobjekt mit dem bereitgestellten name Objekt kann nicht erstellt werden. Ein Synchronisierungsobjekt eines anderen Typs hat möglicherweise denselben Namen.

Hinweise

Möglicherweise name wird dem Namespace ein Präfix vorangestellt Global\ oder Local\ angegeben. Wenn der Global Namespace angegeben ist, kann das Synchronisierungsobjekt für alle Prozesse im System freigegeben werden. Wenn der Local Namespace angegeben ist, was auch der Standardwert ist, wenn kein Namespace angegeben wird, kann das Synchronisierungsobjekt für Prozesse in derselben Sitzung freigegeben werden. Bei Windows ist eine Sitzung eine Anmeldesitzung, und Dienste werden in der Regel in einer anderen nicht interaktiven Sitzung ausgeführt. Auf Unix-ähnlichen Betriebssystemen verfügt jede Shell über eine eigene Sitzung. Sitzungslokale Synchronisierungsobjekte können für die Synchronisierung zwischen Prozessen mit einer Beziehung zwischen übergeordnetem/untergeordnetem Element geeignet sein, in der sie alle in derselben Sitzung ausgeführt werden. Weitere Informationen zu Synchronisierungsobjektnamen in Windows finden Sie unter Object Names.

Wenn ein name Synchronisierungsobjekt des angeforderten Typs bereits im Namespace vorhanden ist, wird das vorhandene Synchronisierungsobjekt geöffnet. Wenn bereits ein Synchronisierungsobjekt eines anderen Typs im Namespace vorhanden ist, wird ein WaitHandleCannotBeOpenedException Fehler ausgelöst. Andernfalls wird ein neues Synchronisierungsobjekt erstellt.

Vorsicht

Standardmäßig ist ein benannter Mutex nicht auf den Benutzer beschränkt, der es erstellt hat. Andere Benutzer können den Mutex möglicherweise öffnen und verwenden, einschließlich der Störung des Mutex, indem er den Mutex eingibt und ihn nicht verlässt. Um den Zugriff auf bestimmte Benutzer einzuschränken, können Sie beim Erstellen des benannten Mutex eine MutexSecurity Übergabe ausführen. Vermeiden Sie die Verwendung von benannten Mutexes ohne Zugriffsbeschränkungen für Systeme, die möglicherweise nicht vertrauenswürdige Benutzer mit Code ausführen.

Gilt für: