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 函数。 假定指向此表的指针是正在调度的特定 IRP 的文件对象中 FsContext 指向的结构中的第一个元素。 列出的有效主要函数标识符。

标识符 说明
IRP_MJ_CREATE Create IRP。 在此实例中,创建请求可用于创建筛选器的新实例,或用于创建某些对象,例如筛选器下的引脚或引脚下的时钟。 这假定驱动程序对象的盘区中的第一个元素包含KSDEVICE_HEADER结构,该结构用于根据传递的名称查找要创建的对象类型。 如果指定了父文件对象,则该对象的KSDISPATCH_TABLE。查看 FsContext 中的 ChildCreateHandlerTable 以确定要用于创建或使用设备对象的表的处理程序。
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 标识符,以指定条目引用快速 I/O 调度表,而不是典型的主要函数条目。 这仅适用于 IRP_MJ_READ、IRP_MJ_WRITE 或 IRP_MJ_DEVICE_CONTROL。 驱动程序负责创建 DriverObject-FastIoDispatch> 表。 与常规调度一样,如果为驱动程序对象设置了处理程序,则所有文件对象都必须处理该快速 I/O,即使条目仅指向 DispatchFastIoDeviceControlFailure 或类似函数。

返回值

如果 MajorFunction 标识符有效,则返回STATUS_SUCCESS。

注解

如果为驱动程序对象设置了主函数处理程序,则所有文件对象都必须处理该主函数,即使条目仅指向 KsDispatchInvalidDeviceRequest 也是如此。

KSDISPATCH_FASTIO

此标志可用于指定应设置快速 I/O 条目,而不是基于 IRP 的条目。

要求

要求
目标平台 通用
标头 ks.h (包括 Ks.h)
Library Ks.lib