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