EventWaitHandleAcl.Create Método

Definição

Obtém ou cria uma instância de EventWaitHandle, permitindo que uma instância de EventWaitHandleSecurity seja especificada opcionalmente para defini-la durante a criação do semáforo.

public:
 static System::Threading::EventWaitHandle ^ Create(bool initialState, System::Threading::EventResetMode mode, System::String ^ name, [Runtime::InteropServices::Out] bool % createdNew, System::Security::AccessControl::EventWaitHandleSecurity ^ eventSecurity);
public static System.Threading.EventWaitHandle Create (bool initialState, System.Threading.EventResetMode mode, string? name, out bool createdNew, System.Security.AccessControl.EventWaitHandleSecurity? eventSecurity);
static member Create : bool * System.Threading.EventResetMode * string * bool * System.Security.AccessControl.EventWaitHandleSecurity -> System.Threading.EventWaitHandle
Public Shared Function Create (initialState As Boolean, mode As EventResetMode, name As String, ByRef createdNew As Boolean, eventSecurity As EventWaitHandleSecurity) As EventWaitHandle

Parâmetros

initialState
Boolean

true para definir o estado inicial como sinalizado se o evento nomeado for criado como resultado dessa chamada, false para defini-lo como não sinalizado.

mode
EventResetMode

Um dos valores de enumeração que determina se o evento redefine automática ou manualmente.

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 sobre o 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 retornar, esse argumento será sempre definido como true se um evento local for criado; ou seja, quando name for null ou Empty. Se name tiver um valor não vazio válido, esse argumento será definido como true quando o evento do sistema for criado ou será definido como false se um evento do sistema existente com esse nome for encontrado.

eventSecurity
EventWaitHandleSecurity

A segurança de controle de acesso do Windows opcional a ser aplicada.

Retornos

Um objeto que representa um identificador de espera de evento conforme solicitado.

Exceções

O valor de enumeração mode estava fora do intervalo legal.

- ou -

Somente .NET Framework: name é maior que MAX_PATH (260 caracteres).

O valor de enumeração mode estava fora do intervalo legal. Em alguns casos, ArgumentException é lançada em vez disso.

name é inválido. Isso pode ser por vários motivos, incluindo algumas restrições impostas 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 -

Ocorreu outro erro. A propriedade HResult pode fornecer mais informações.

Somente Windows: name especificou um namespace desconhecido. Confira mais informações em Nomes do objeto.

O name é muito longo. As restrições de comprimento podem depender do sistema operacional ou da configuração.

Não é possível criar um objeto de sincronização com o name fornecido. Um objeto de sincronização de um tipo diferente pode ter o mesmo nome.

O evento nomeado existe, mas o usuário não tem o acesso de segurança desejado.

Somente .NET Framework: o comprimento de name está além de MAX_PATH (260 caracteres).

Comentários

O name pode 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 Nomes de objetos.

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 evento nomeado não é restrito ao usuário que o criou. Outros usuários podem ser capazes de abrir e usar o evento, incluindo interferir no evento definindo-o ou redefinindo-o inadequadamente. Para restringir o acesso a usuários específicos, você pode passar um EventWaitHandleSecurity ao criar o evento nomeado. Evite usar eventos nomeados sem restrições de acesso em sistemas que podem ter usuários não confiáveis executando código.

Aplica-se a