Функция KeInitializeEvent (wdm.h)

Подпрограмма KeInitializeEvent инициализирует объект события как событие синхронизации (один официант) или событие типа уведомления и задает для него сигнальное или не сигнализированное состояние.

Синтаксис

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

Параметры

[out] Event

Указатель на объект события, для которого вызывающий объект предоставляет хранилище.

[in] Type

Указывает тип события: NotificationEvent или SynchronizationEvent.

[in] State

Указывает начальное состояние события. ЗНАЧЕНИЕ TRUE указывает сигнальное состояние.

Возвращаемое значение

None

Remarks

Хранилище для объекта события должно быть резидентным: в расширении устройства объекта устройства, созданного драйвером, в расширении контроллера объекта контроллера, созданного драйвером, или в непакованном пуле, выделенном вызывающим объектом. При выделении события в стеке необходимо указать ожидание KernelMode при вызове KeWaitForSingleObject, KeWaitForMutexObject или KeWaitForMultipleObjects. Во время ожидания KernelMode стек, содержащий событие, не будет выстраивается.

Драйверы обычно используют NotificationEvent для ожидания завершения операции ввода-вывода. Если для события уведомления задано сигнальное состояние, все потоки, ожидающие установки события в сигнальное состояние, станут допустимыми для выполнения. Событие остается в сигнальном состоянии, пока поток не вызовет KeResetEvent или KeClearEvent , чтобы задать событие в состоянии без сигнала.

SynchronizationEvent также называется событием автовосустановки или автоматического расщепления. При установке такого события один поток ожидания становится допустимым для выполнения. Ядро автоматически сбрасывает событие в состояние без сигнала при каждом выполнении ожидания. Драйвер может использовать событие синхронизации для защиты общего ресурса, используемого при синхронизации операций нескольких потоков. События синхронизации редко используются в типичном драйвере.

Дополнительные сведения об объектах событий см. в разделе "Объекты событий".

Требования

   
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Заголовок wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Любой уровень
Правила соответствия DDI HwStorPortProhibitedDDIs(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)

См. также раздел

KeClearEvent

KeReadStateEvent

KeResetEvent

KeSetEvent

KeWaitForMultipleObjects

KeWaitForSingleObject