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

Функция KsSetMajorFunctionHandler задает обработчик для указанной основной функции для использования внутренней диспетчеризации. Он направляется через KSDISPATCH_TABLE, содержащийся в заголовке непрозрачного объекта, чтобы быть первым элементом в структуре, на которую указывает FsContext в объекте файла. При диспетчеризации предполагается, что таблица и структура FsContext инициализируются устройством с помощью KsAllocateObjectHeader.

Синтаксис

KSDDKAPI NTSTATUS KsSetMajorFunctionHandler(
  [in] PDRIVER_OBJECT DriverObject,
  [in] ULONG          MajorFunction
);

Параметры

[in] DriverObject

Указывает объект драйвера, основная функция которого должна обрабатываться.

[in] MajorFunction

Указывает идентификатор основной функции для обработки. При этом указатель основной функции в объекте драйвера задается на внутреннюю функцию, которая затем отправляется в KSDISPATCH_TABLE функцию. Предполагается, что указатель на эту таблицу является первым элементом в структуре, на которую указывает FsContext в объекте файла конкретной отправляемой IRP. Допустимые идентификаторы основных функций приведены в списке.

Идентификатор Описание
IRP_MJ_CREATE Create IRP. В этом случае запрос на создание можно использовать либо для создания нового экземпляра фильтра, либо для создания объекта, такого как закрепление под фильтром или часы под закреплением. При этом предполагается, что первый элемент в экстенте объекта драйвера содержит KSDEVICE_HEADER структуру, которая используется для поиска типа создаваемого объекта на основе переданного имени. Если указан родительский объект файла, то этот объект KSDISPATCH_TABLE. ChildCreateHandlerTable в FsContext проверяется, чтобы определить, какой обработчик следует использовать для создания или использовать таблицу объекта устройства.
IRP_MJ_CLOSE Закройте IRP.
IRP_MJ_DEVICE_CONTROL IRP элемента управления устройством.
IRP_MJ_READ Чтение IRP.
IRP_MJ_WRITE Напишите IRP.
IRP_MJ_FLUSH_BUFFERS Очистка IRP.
IRP_MJ_QUERY_SECURITY Запрос сведений о безопасности.
IRP_MJ_SET_SECURITY Настройка сведений о безопасности.
KSDISPATCH_FASTIO Этот флаг можно добавить в идентификатор MajorFunction, чтобы указать, что запись ссылается на таблицу быстрой отправки ввода-вывода, а не на типичную основную запись функции. Это допустимо только для IRP_MJ_READ, IRP_MJ_WRITE или IRP_MJ_DEVICE_CONTROL. Драйвер отвечает за создание таблицы DriverObject-FastIoDispatch>. Как и при обычной диспетчеризации, если для объекта драйвера задан обработчик, все файловые объекты должны обрабатывать этот быстрый ввод-вывод, даже если запись указывает только на DispatchFastIoDeviceControlFailure или аналогичную функцию.

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

Возвращает STATUS_SUCCESS, если идентификатор MajorFunction является допустимым.

Комментарии

Если для объекта драйвера задан обработчик основной функции, все объекты файлов должны обрабатывать основную функцию, даже если запись указывает только на KsDispatchInvalidDeviceRequest.

KSDISPATCH_FASTIO

Этот флаг можно использовать, чтобы указать, что должна быть задана запись быстрого ввода-вывода, а не запись на основе IRP.

Требования

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