MutexAcl.Create(Boolean, String, Boolean, MutexSecurity) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou cria Mutex uma instância, permitindo que uma MutexSecurity seja especificada opcionalmente para defini-la durante a criação do 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
Parâmetros
- initiallyOwned
- Boolean
true para fornecer a propriedade inicial do thread de chamada do mutex do sistema nomeado se o mutex do sistema nomeado for criado como resultado dessa chamada; caso contrário, false.
- name
- String
O nome, se o objeto de sincronização deve ser compartilhado com outros processos; caso contrário, null ou uma cadeia de caracteres vazia. O nome diferencia maiúsculas de minúsculas. O caractere de barra invertida (\) é reservado e só pode ser usado para especificar um namespace. Para obter mais informações sobre namespaces, consulte a seção comentários. Pode haver mais restrições ao nome dependendo do sistema operacional. Por exemplo, em sistemas operacionais baseados em Unix, o nome após a exclusão do namespace deve ser um nome de arquivo válido.
- createdNew
- Boolean
Quando esse método é retornado, esse argumento é sempre definido como true se um mutex local é criado; ou seja, quando name é null ou Empty. Se name tiver um valor não vazio válido, esse argumento será definido para true quando o mutex do sistema for criado ou será definido false como se um mutex do sistema existente for encontrado com esse nome. Esse parâmetro é passado sem inicialização.
- mutexSecurity
- MutexSecurity
A segurança de controle de acesso mutex opcional a ser aplicada.
Retornos
Um objeto que representa um mutex do sistema, se nomeado ou um mutex local, se sem nome.
Exceções
.NET Framework somente: name é maior que MAX_PATH (260 caracteres).
name é inválido. Isso pode ser por vários motivos, incluindo algumas restrições que podem ser colocadas pelo sistema operacional, como um prefixo desconhecido ou caracteres inválidos. Observe que o nome e os prefixos comuns "Global\" e "Local\" diferenciam maiúsculas de minúsculas.
- ou -
Houve outro erro. A HResult propriedade pode fornecer mais informações.
Windows somente: name especificado um namespace desconhecido. Consulte Nomes de Objetos para obter mais informações.
O name é muito longo. As restrições de comprimento podem depender do sistema operacional ou da configuração.
Um objeto de sincronização com o fornecido name não pode ser criado. Um objeto de sincronização de um tipo diferente pode ter o mesmo nome.
Comentários
Pode name ser prefixado com Global\ ou Local\ para especificar um namespace. Quando o Global namespace é especificado, o objeto de sincronização pode ser compartilhado com todos os processos no sistema. Quando o Local namespace é especificado, que também é o padrão quando nenhum namespace é especificado, o objeto de sincronização pode ser compartilhado com processos na mesma sessão. No Windows, uma sessão é uma sessão de logon e os serviços normalmente são executados em uma sessão não interativa diferente. Em sistemas operacionais semelhantes ao Unix, cada shell tem sua própria sessão. Os objetos de sincronização local de sessão podem ser apropriados para sincronizar entre processos com uma relação pai/filho em que todos eles são executados na mesma sessão. Para obter mais informações sobre nomes de objetos de sincronização no Windows, consulte Object Names.
Se um name for fornecido e um objeto de sincronização do tipo solicitado já existir no namespace, o objeto de sincronização existente será aberto. Se um objeto de sincronização de um tipo diferente já existir no namespace, um WaitHandleCannotBeOpenedException será gerado. Caso contrário, um novo objeto de sincronização será criado.
Cuidado
Por padrão, um mutex nomeado não é restrito ao usuário que o criou. Outros usuários podem ser capazes de abrir e usar o mutex, incluindo interferir com o mutex inserindo o mutex e não saindo dele. Para restringir o acesso a usuários específicos, você pode passar um MutexSecurity ao criar o mutex nomeado. Evite usar mutexes nomeados sem restrições de acesso em sistemas que podem ter usuários não confiáveis executando código.