Compartilhar via


Função KeInitializeEvent (wdm.h)

A rotina KeInitializeEvent inicializa um objeto de evento como um evento de sincronização (garçom único) ou tipo de notificação e o define como um estado sinalizado ou não sinalizado.

Sintaxe

void KeInitializeEvent(
  [out] PRKEVENT   Event,
  [in]  EVENT_TYPE Type,
  [in]  BOOLEAN    State
);

Parâmetros

[out] Event

Ponteiro para um objeto de evento, para o qual o chamador fornece o armazenamento.

[in] Type

Especifica o tipo de evento NotificationEvent ou SynchronizationEvent.

[in] State

Especifica o estado inicial do evento. TRUE indica um estado sinalizado.

Retornar valor

Nenhum

Comentários

O armazenamento de um objeto de evento deve ser residente: na extensão do dispositivo de um objeto de dispositivo criado pelo driver, na extensão do controlador de um objeto controlador criado pelo driver ou no pool nãopagado alocado pelo chamador. Se você alocar o evento na pilha, deverá especificar uma espera kernelMode ao chamar KeWaitForSingleObject, KeWaitForMutexObject ou KeWaitForMultipleObjects. Durante uma espera kernelMode , a pilha que contém o evento não será paginada.

Os drivers normalmente usam um NotificationEvent para aguardar a conclusão de uma operação de E/S. Quando um evento de notificação é definido como o estado sinalizado, todos os threads que estavam aguardando o evento ser definido como o estado sinalizado se tornam qualificados para execução. O evento permanece no estado sinalizado até que um thread chame KeResetEvent ou KeClearEvent para definir o evento no estado não sinalizado.

Um SynchronizationEvent também é chamado de evento autoreset ou autoclearing . Quando esse evento é definido, um único thread de espera se torna elegível para execução. O kernel redefine automaticamente o evento para o estado não sinalizado sempre que uma espera é atendida. Um driver pode usar um evento de sincronização para proteger um recurso compartilhado usado na sincronização das operações de vários threads.

Para obter mais informações sobre objetos de evento, consulte Event Objects.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 2000.
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Qualquer nível
Regras de conformidade da DDI HwStorPortProhibitedDIs(storport), IoAllocateIrpSignalEventInCompletion(wdm), IoAllocateIrpSignalEventInCompletion2(wdm), IoAllocateIrpSignalEventInCompletion3(wdm), IoAllocateIrpSignalEventInCompletionTimeout(wdm), IoBuildDeviceControlWait(wdm), IoBuildDeviceControlWaitTimeout(wdm), IoBuildDeviceIoControlSetEvent(wdm), IoBuildFsdIrpSignalEventInCompletion(wdm), IoBuildFsdIrpSignalEventInCompletion2(wdm), IoBuildFsdIrpSignalEventInCompletion3(wdm), IoBuildFsdIrpSignalEventInCompletionTimeout(wdm), IoBuildSynchronousFsdRequestWait(wdm), IoBuildSynchronousFsdRequestWaitTimeout(wdm), PendedCompletedRequest(wdm), PendedCompletedRequestEx(wdm), SignalEventInCompletion(wdm), SignalEventInCompletion2(wdm), SignalEventInCompletion3(wdm), StartDeviceWait(wdm), StartDeviceWait2(wdm)

Confira também

KeClearEvent

KeReadStateEvent

KeResetEvent

KeSetEvent

KeWaitForMultipleObjects

KeWaitForSingleObject