MutexAcl.Create(Boolean, String, Boolean, MutexSecurity) Méthode

Définition

Obtient ou crée une instance de Mutex, qui permet de spécifier une instance MutexSecurity pour la définir lors de la création du mutex.

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

Paramètres

initiallyOwned
Boolean

true pour donner au thread appelant la propriété initiale du mutex système nommé si celui-ci est créé en réponse à cet appel ; sinon, false.

name
String

Nom, si l’événement doit être partagé avec d’autres processus ; sinon, null ou une chaîne vide. Le nom respecte la casse. La barre oblique inverse (\) est réservée et ne peut être utilisée que pour spécifier un espace de noms. Pour plus d’informations sur les espaces de noms, consultez la section remarques. Il peut y avoir d’autres restrictions sur le nom en fonction du système d’exploitation. Par exemple, sur les systèmes d’exploitation Unix, le nom après l’exclusion de l’espace de noms doit être un nom de fichier valide.

createdNew
Boolean

Quand cette méthode retourne, cet argument est toujours défini sur true si un mutex local est créé ; autrement dit, quand name est null ou Empty. Si name a une valeur non vide valide, cet argument est défini sur true quand le mutex système est créé ou il est défini sur false si un mutex système existant porte ce nom. Ce paramètre est passé sans être initialisé.

mutexSecurity
MutexSecurity

Sécurité du contrôle d’accès du mutex facultative à appliquer.

Retours

Objet qui représente un mutex système s’il est nommé, ou un mutex local s’il n’a pas de nom.

Exceptions

.NET Framework uniquement : name est plus long que MAX_PATH (260 caractères).

name n'est pas valide. Il peut y avoir diverses raisons à cela, notamment des restrictions placées par le système d’exploitation (par exemple, un préfixe inconnu ou des caractères non valides). Notez que le nom et les préfixes communs « Global\ » et « Local\ » respectent la casse.

- ou -

Une autre erreur s’est produite. La propriété HResult est susceptible de fournir plus d’informations.

Windows uniquement : name a spécifié un espace de noms inconnu. Pour plus d’informations, consultez Noms d’objets.

name est trop long. Les restrictions de longueur peuvent dépendre du système d’exploitation ou de la configuration.

Il n’est pas possible de créer un objet de synchronisation portant le name fourni. Il est possible qu’un objet de synchronisation d’un autre type possède le même nom.

Remarques

Le name peut être préfixé avec Global\ ou Local\ pour spécifier un espace de noms. Lorsque l’espace Global de noms est spécifié, l’objet de synchronisation peut être partagé avec n’importe quel processus sur le système. Lorsque l’espace Local de noms est spécifié, qui est également la valeur par défaut quand aucun espace de noms n’est spécifié, l’objet de synchronisation peut être partagé avec des processus dans la même session. Sur Windows, une session est une session de connexion, et les services s’exécutent généralement dans une autre session non interactive. Sur les systèmes d’exploitation de type Unix, chaque interpréteur de commandes a sa propre session. Les objets de synchronisation locale de session peuvent convenir à la synchronisation entre les processus avec une relation parent/enfant où ils s’exécutent tous dans la même session. Pour plus d’informations sur les noms d’objets de synchronisation sur Windows, consultez Noms d’objets.

Si un name est fourni et qu’un objet de synchronisation du type demandé existe déjà dans l’espace de noms, l’objet de synchronisation existant est ouvert. Si un objet de synchronisation d’un type différent existe déjà dans l’espace de noms, un WaitHandleCannotBeOpenedException est levée. Sinon, un nouvel objet de synchronisation est créé.

Attention

Par défaut, un mutex nommé n’est pas limité à l’utilisateur qui l’a créé. D’autres utilisateurs peuvent être en mesure d’ouvrir et d’utiliser le mutex, notamment en interférant avec le mutex en entrant le mutex sans le quitter. Pour restreindre l’accès à des utilisateurs spécifiques, vous pouvez passer un MutexSecurity lors de la création du mutex nommé. Évitez d’utiliser des mutex nommés sans restrictions d’accès sur les systèmes qui peuvent avoir des utilisateurs non approuvés exécutant du code.

S’applique à