KsMethodHandlerWithAllocator 函数 (ks.h)
KsMethodHandlerWithAllocator 函数执行与 KsMethodHandler 相同的处理,但具有相同的限制,但允许使用可选的分配器回调为参数提供缓冲区。 如果使用,筛选器可能需要以某种非常规方式释放缓冲区。 请注意,使用自定义分配器时,不会设置IRP_BUFFERED_IO和IRP_DEALLOCATE_BUFFER标志。
语法
KSDDKAPI NTSTATUS KsMethodHandlerWithAllocator(
[in] PIRP Irp,
[in] ULONG MethodSetsCount,
[in] const KSMETHOD_SET *MethodSet,
[in, optional] PFNKSALLOCATOR Allocator,
[in, optional] ULONG MethodItemSize
);
参数
[in] Irp
指定处理方法请求的 IRP。
[in] MethodSetsCount
指示传递的方法集结构的数量。
[in] MethodSet
指定指向方法集信息列表的指针。
[in, optional] Allocator
(可选)指向将用于分配内存以存储方法参数的分配函数。
[in, optional] MethodItemSize
(可选)包含每个方法列表中每个KSMETHOD_ITEM结构的大小。 可以扩展方法项以存储私人信息。 如果此参数为零,则假定结构大小为正常。 如果它大于或等于方法项结构,则可以使用KSMETHOD_ITEM_IRP_STORAGE宏返回指向方法项的指针,以便可以检索自定义数据。 在 64 位平台上,此参数必须是 8 的倍数。
返回值
如果成功, KsMethodHandler 函数将返回STATUS_SUCCESS;如果失败,则返回特定于正在处理的方法的错误。 函数始终设置IO_STATUS_BLOCK。PIRP 的信息字段。由于内部错误,IRP 中的 IoStatus 元素为零,或者元素由方法处理程序设置。 函数不设置IO_STATUS_BLOCK。状态字段或完成 IRP。
在 64 位平台上,如果 PropertyItemSize 参数不是 8 的倍数,则返回STATUS_INVALID_PARAMETER,并且调用失败。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | ks.h (包括 Ks.h) |
Library | Ks.lib |