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


Функция 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 (include Ks.h)
библиотеки Ks.lib

См. также

KsEnableEvent