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


Функция KsDisableEvent (ks.h)

Функция KsDisableEvent отключает события, запрашиваемые с помощью IOCTL_KS_DISABLE_EVENT. Он реагирует на все события, ранее включенные с помощью KsEnableEvent. Если длина входного буфера равна нулю, предполагается, что все события в списке должны быть отключены. Эту функцию можно вызывать только в PASSIVE_LEVEL.

Синтаксис

KSDDKAPI NTSTATUS KsDisableEvent(
  [in]      PIRP              Irp,
  [in, out] PLIST_ENTRY       EventsList,
  [in]      KSEVENTS_LOCKTYPE EventsFlags,
  [in]      PVOID             EventsLock
);

Параметры

[in] Irp

Указывает IRP, передаваемую функции удаления, которая использует IRP для получения сведений о контексте. Объект файла, связанный с IRP, используется для сравнения с исходным объектом файла, указанным при включении события. Это позволяет использовать один список событий для нескольких клиентов, различаемых по объектам файлов.

[in, out] EventsList

Указывает на главу списка KSEVENT_ENTRY элементов, в которых можно найти событие. Если клиент использует несколько списков событий и не знает, в каком списке находится это событие, клиент может вызывать эту функцию несколько раз. Событие не найдено возвращает STATUS_UNSUCCESSFUL.

[in] EventsFlags

Задает флаг KSEVENTS_LOCKTYPE , указывающий тип блокировки исключения, используемой при доступе к списку событий. Если флаг не установлен, блокировка не выполняется.

[in] EventsLock

Используется для синхронизации доступа к элементу в списке. После доступа к элементу он помечается как удаляемый, чтобы последующие запросы на удаление завершились ошибкой. Затем блокировка освобождается после вызова функции удаления, если таковой имеется. Функция удаления должна синхронизироваться с созданием событий перед фактическим удалением элемента из списка.

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

Функция KsDisableEvent возвращает STATUS_SUCCESS в случае успешного выполнения или ошибку, относясь к включенной событию. Функция всегда задает IO_STATUS_BLOCK. Информационное поле ПИРП. Элемент IoStatus в IRP равен нулю. Он не задает IO_STATUS_BLOCK. Поле состояния и не завершает IRP.

Комментарии

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

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ks.h (включая Ks.h)
Библиотека Ks.lib

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

KsEnableEvent