Función KeInitializeEvent (wdm.h)
La rutina KeInitializeEvent inicializa un objeto de evento como un evento de sincronización (un solo camarero) o un evento de tipo de notificación y lo establece en un estado señalado o no señalado.
Sintaxis
void KeInitializeEvent(
[out] PRKEVENT Event,
[in] EVENT_TYPE Type,
[in] BOOLEAN State
);
Parámetros
[out] Event
Puntero a un objeto de evento, para el que el autor de la llamada proporciona el almacenamiento.
[in] Type
Especifica el tipo de evento, notificationEvent o SynchronizationEvent.
[in] State
Especifica el estado inicial del evento. TRUE indica un estado señalado.
Valor devuelto
None
Observaciones
El almacenamiento de un objeto de evento debe estar residente: en la extensión de dispositivo de un objeto de dispositivo creado por el controlador, en la extensión del controlador de un objeto de controlador creado por el controlador o en un grupo no paginado asignado por el autor de la llamada. Si asigna el evento en la pila, debe especificar una espera kernelMode al llamar a KeWaitForSingleObject, KeWaitForMutexObject o KeWaitForMultipleObjects. Durante una espera de KernelMode , la pila que contiene el evento no se paginará.
Los controladores suelen usar notificationEvent para esperar a que se complete una operación de E/S. Cuando se establece un evento de notificación en el estado señalado, todos los subprocesos que estaban esperando que el evento se establezca en el estado señalado se convierten en aptos para su ejecución. El evento permanece en el estado señalado hasta que un subproceso llama a KeResetEvent o KeClearEvent para establecer el evento en el estado no señalado.
SynchronizationEvent también se denomina conjunto de autores o evento de autoclear. Cuando se establece este evento, un único subproceso en espera se convierte en apto para su ejecución. El kernel restablece automáticamente el evento al estado no señalado cada vez que se satisface una espera. Un controlador puede usar un evento de sincronización para proteger un recurso compartido que se usa para sincronizar las operaciones de varios subprocesos.
Para obtener más información sobre los objetos de evento, vea Objetos de eventos.