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.