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.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 2000.
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL Cualquier nivel
Reglas de cumplimiento de 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)

Consulte también

KeClearEvent

KeReadStateEvent

KeResetEvent

KeSetEvent

KeWaitForMultipleObjects

KeWaitForSingleObject