Compartilhar via


Função ZwOpenEvent (wdm.h)

A rotina de ZwOpenEvent abre um identificador para um objeto de evento nomeado existente com o acesso desejado especificado.

Sintaxe

NTSYSCALLAPI NTSTATUS ZwOpenEvent(
  [out] PHANDLE            EventHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes
);

Parâmetros

[out] EventHandle

Um ponteiro para uma variável que receberá o identificador do objeto de evento. O identificador inclui informações de contabilidade, como uma contagem de referência e um contexto de segurança.

[in] DesiredAccess

O valor ACCESS_MASK que representa os tipos de acesso desejados para o objeto de evento. A tabela a seguir contém os valores de ACCESS_MASK específicos do evento.

Valor Acesso desejado
EVENT_QUERY_STATE Consulte o estado do objeto de evento.
EVENT_MODIFY_STATE Modifique o estado do objeto de evento.
EVENT_ALL_ACCESS Todos os direitos de acesso possíveis ao objeto de evento.

[in] ObjectAttributes

Um ponteiro para a estrutura de atributos de objeto que o chamador forneceu para ser usado para o objeto especificado. Esses atributos incluiriam o ObjectName e os atributos de identificador, por exemplo. Esse parâmetro é inicializado chamando a macro InitializeObjectAttributes.

Valor de retorno

ZwOpenEvent retorna STATUS_SUCCESS ou um status de erro apropriado. Essa rotina pode retornar um dos seguintes códigos de status de erro:

Código de retorno Descrição
STATUS_INSUFFICIENT_RESOURCES Não foi possível alocar recursos necessários para essa função.
STATUS_INVALID_PARAMETER A estrutura ObjectAttributes não foi fornecida ou continha um valor de parâmetro inválido.
STATUS_OBJECT_NAME_INVALID O parâmetro ObjectAttributes continha um ObjectName na estrutura OBJECT_ATTRIBUTES inválida.
STATUS_OBJECT_PATH_SYNTAX_BAD O caminho do objeto continha sintaxe incorreta. Por exemplo, o parâmetro ObjectAttributes não contém um membro RootDirectory, mas o membro ObjectName na estrutura OBJECT_ATTRIBUTES é uma cadeia de caracteres vazia ou não começa com um caractere OBJECT_NAME_PATH_SEPARATOR.
STATUS_OBJECT_PATH_NOT_FOUND O caminho para o objeto não foi encontrado, indicando que ele não existe.
STATUS_OBJECT_NAME_NOT_FOUND O nome do objeto não foi encontrado, indicando que o objeto não existe.
STATUS_PRIVILEGE_NOT_HELD O chamador não teve o privilégio necessário para criar um identificador com o acesso especificado no parâmetro DesiredAccess.

Observações

ZwOpenEvent abre um objeto de evento nomeado existente e cria um identificador para o objeto com o acesso desejado especificado.

ZwOpenEvent pode abrir eventos de notificação ou sincronização.

Os eventos são usados para coordenar a execução. Os drivers do sistema de arquivos podem usar eventos para permitir que um chamador aguarde a conclusão da operação solicitada até que o evento determinado seja definido como o estado Sinalizado.

Eventos de notificação podem ser usados para notificar um ou mais threads de execução de que ocorreu um evento. Eventos de sincronização podem ser usados na serialização do acesso ao hardware entre dois drivers não relacionados.

Se a chamada para a função ZwOpenEvent ocorrer no modo de usuário, você deverá usar o nome "NtOpenEvent" em vez de "ZwOpenEvent".

Para chamadas de drivers no modo kernel, as versões NtXxx e Zwxxx versões de uma rotina dos Serviços de Sistema Nativo do Windows podem se comportar de forma diferente na maneira como lidam e interpretam parâmetros de entrada. Para obter mais informações sobre a relação entre as versões NtXxx e ZwXxx de uma rotina, consulte Usando versões Nt e Zw das rotinas de serviços do sistema nativo.

Requisitos

Requisito Valor
da Plataforma de Destino Universal
cabeçalho wdm.h (inclua Wdm.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
regras de conformidade de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte também

ACCESS_MASK

InitializeObjectAttributes

IoCreateNotificationEvent

IoCreateSynchronizationEvent

KeClearEvent

KeResetEvent

KeSetEvent

KeWaitForSingleObject

usando versões Nt e Zw das rotinas de serviços do sistema nativo

ZwClose

ZwCreateEvent

ZwSetEvent

ZwWaitForSingleObject