Функция 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 |