Поделиться через


Функция 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 (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Любой уровень
Правила соответствия 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)

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

KeClearEvent

KeReadStateEvent

KeResetEvent

KeSetEvent

KeWaitForMultipleObjects

KeWaitForSingleObject