Funzione KeInitializeEvent (wdm.h)

La routine KeInitializeEvent inizializza un oggetto evento come sincronizzazione (singolo cameriere) o un evento di tipo di notifica e lo imposta su uno stato segnalato o non segnalato.

Sintassi

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

Parametri

[out] Event

Puntatore a un oggetto evento, per il quale il chiamante fornisce l'archiviazione.

[in] Type

Specifica il tipo di evento NotificationEvent o SyncEvent.

[in] State

Specifica lo stato iniziale dell'evento. TRUE indica uno stato segnalato.

Valore restituito

nessuno

Osservazioni

L'archiviazione per un oggetto evento deve essere residente: nell'estensione del dispositivo di un oggetto dispositivo creato dal driver, nell'estensione del controller di un oggetto controller creato dal driver o in un pool non a pagina allocato dal chiamante. Se si alloca l'evento nello stack, è necessario specificare un'attesa kernelMode quando si chiama KeWaitForSingleObject, KeWaitForMutexObject o KeWaitForMultipleObjects. Durante un'attesa kernelMode , lo stack contenente l'evento non verrà visualizzato.

I driver usano in genere un oggetto NotificationEvent per attendere il completamento di un'operazione di I/O. Quando un evento di notifica è impostato sullo stato segnalato, tutti i thread in attesa che l'evento venga impostato sullo stato segnalato diventi idoneo per l'esecuzione. L'evento rimane nello stato segnalato fino a quando un thread chiama KeResetEvent o KeClearEvent per impostare l'evento nello stato non segnalato.

Un oggetto SyncEvent viene chiamato anche un evento autoreset o autoclearing . Quando tale evento viene impostato, un singolo thread in attesa diventa idoneo per l'esecuzione. Il kernel reimposta automaticamente l'evento allo stato non segnalato ogni volta che viene soddisfatta un'attesa. Un driver può usare un evento di sincronizzazione per proteggere una risorsa condivisa usata per sincronizzare le operazioni di diversi thread.

Per altre informazioni sugli oggetti evento, vedere Oggetti evento.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 2000.
Piattaforma di destinazione Universale
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Qualsiasi livello
Regole di conformità DDI HwStorPortProhibitedDDDIs(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)

Vedi anche

KeClearEvent

KeReadStateEvent

KeResetEvent

KeSetEvent

KeWaitForMultipleObjects

KeWaitForSingleObject