MutexAcl.Create(Boolean, String, Boolean, MutexSecurity) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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.