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 |