Программирование драйверов Windows


Объекты события - часть 2


Таблица 10.26. Функции для работы с объектами событий

Что необходимо сделать... Какой вызов нужно использовать...
Создать событие KeInitializeEvent
Создать именованное событие IoCreateSynchronizationEvent

IoCreateNotificationEvent

Изменить состояние события KeSetEvent

KeClearEvent

KeResetEvent

Запросить состояние

KeReadStateEvent

Для использования объекта события сначала необходимо получить память для его хранения размером sizeof(KEVENT), и только после этого можно выполнять вызовы функций, перечисленные выше. Рассмотрим некоторые из них.

Несигнальное состояние объекта событий можно установить при помощи вызовов KeResetEvent и KeClearEvent. Разница между ними заключается в том, что функция KeResetEvent еще и возвращает состояние объекта, в котором тот пребывал перед данным вызовом. Функция KeClearEvent

работает несколько быстрее, поэтому в тех случаях, когда нет необходимости знать предыдущее состояние объекта, следует использовать этот вызов.

Таблица 10.27. Прототип вызова KeInitializeEvent

VOID KeInitializeEvent IRQL == PASSIVE_LEVEL
Параметры Инициализация объекта события и установка его начального состояния
IN PKEVENT pEvent Указатель на область памяти для объекта события
IN EVENT_TYPE Type Одно из двух значений

NotificationEvent

SynchronizationEvent

IN BOOLEAN bInitalState Начальное состояние объекта

TRUE &#8212 сигнальное состояние

FALSE &#8212 несигнальное состояние

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

Таблица 10.28. Прототип вызовов KeClearEvent

u KeResetEvent

VOID KeClearEvent

LONG KeResetEvent

IRQL &#60= DISPATCH_LEVEL
Параметры Установка объекта события в несигнальное состояния
IN PKEVENT pEvent Указатель на инициализированный объект события
Возвращаемое значение

KeResetEvent возвращает предыдущее состояние объекта события

Таблица 10.29. Прототип вызова KeSetEvent

LONG KeSetEvent IRQL &#60= DISPATCH_LEVEL
Параметры Переводит объект события в сигнальное состояние
IN PKEVENT pEvent Указатель на инициализированный объект события
IN KPRIORITY Increment Обычно используется значение IO_NO_INCREMENT
IN BOOLEAN bWait Обычно используется значение FALSE
Возвращаемое значение

Возвращает ненулевое значение, если предыдущее состояние объекта события было сигнальным

<


Начало  Назад  Вперед