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


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