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 | 创建 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) |
库 | Ks.lib |