SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) 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 Semaphore, qui permet de spécifier une instance de SemaphoreSecurity pour la définir lors de la création de l’événement.
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
Paramètres
- initialCount
- Int32
Nombre initial de demandes pour le sémaphore qui peut être satisfait simultanément.
- maximumCount
- Int32
Nombre maximal de demandes pour le sémaphore qui peut être satisfait simultanément.
- 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 sémaphore 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 sémaphore système est créé ou il est défini sur false
si un sémaphore système existant porte ce nom. Ce paramètre est passé sans être initialisé.
- semaphoreSecurity
- SemaphoreSecurity
Sécurité du contrôle d’accès du sémaphore facultative à appliquer.
Retours
Objet qui représente un sémaphore système s’il est nommé, ou un sémaphore local s’il n’a pas de nom.
Exceptions
initialCount
est un nombre négatif.
- ou -
maximumCount
n’est pas un nombre positif.
initialCount
est supérieur à maximumCount
.
- ou -
.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 sémaphore nommé n’est pas limité à l’utilisateur qui l’a créé. D’autres utilisateurs peuvent être en mesure d’ouvrir et d’utiliser le sémaphore, y compris d’interférer avec le sémaphore en acquérant le sémaphore plusieurs fois et en ne le libérant pas. Pour restreindre l’accès à des utilisateurs spécifiques, vous pouvez passer un SemaphoreSecurity lors de la création du sémaphore nommé. Évitez d’utiliser des sémaphores nommés sans restrictions d’accès sur les systèmes qui peuvent avoir des utilisateurs non approuvés exécutant du code.