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


Функция 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 указывает сигнальное состояние.

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

Никакой

Замечания

Хранилище для объекта события должно быть резидентом: в расширении устройства созданного драйвером объекта устройства, в расширении контроллера объекта контроллера, созданного драйвером, или в непакованном пуле, выделенном вызывающим объектом. Если вы выделяете событие в стеке, необходимо указать 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 HwStorPortProhibitedDIs(storport), IoAllocateIrpSignalEventInCompletion(wdm), IoAllocIrpSignalEventInCompletion2(wdm), IoAllocateIrpSignalEventInCompletion3(wdm), IoAllocateIrpSignalEventInCompletionTimeout(wdm), IoBuildDeviceControlWait(wdm), IoBuildDeviceControlWaitTimeout(wdm) ,IoBuildDeviceIoControlSetEvent(wdm), IoBuildFsdIrdIrpSignalEventInCompletion(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