KsPropertyHandlerWithAllocator 函数 (ks.h)
KsPropertyHandlerWithAllocator 执行与 KsPropertyHandler 相同的处理,但有相同的限制,但允许使用可选的分配器回调为参数提供缓冲区。 如果使用,筛选器可能需要以某种非常规方式释放缓冲区。 使用自定义分配器时,不会设置IRP_BUFFERED_IO和IRP_DEALLOCATE_BUFFER标志。
语法
KSDDKAPI NTSTATUS KsPropertyHandlerWithAllocator(
[in] PIRP Irp,
[in] ULONG PropertySetsCount,
[in] const KSPROPERTY_SET *PropertySet,
[in, optional] PFNKSALLOCATOR Allocator,
[in, optional] ULONG PropertyItemSize
);
参数
[in] Irp
指定要处理的属性请求的 IRP。
[in] PropertySetsCount
指定要传递的属性集的数目。
[in] PropertySet
指定指向属性集信息数组的指针。
[in, optional] Allocator
(可选)指向用于分配内存以存储属性参数的分配函数。
[in, optional] PropertyItemSize
(可选)包含属性中每个KSPROPERTY_ITEM结构的大小。 可以扩展属性项以存储私人信息。 如果此参数为零,则假定结构大小正常。 如果它大于或等于属性项结构,则可以使用 KSPROPERTY_ITEM_IRP_STORAGE 宏返回指向属性项的指针,以便可以检索自定义数据。 在 64 位平台上,此参数必须是 8 的倍数。
返回值
如果成功, KsPropertyHandler 函数将返回STATUS_SUCCESS;如果失败,则返回特定于所处理属性的错误。 该函数通过由于内部错误将 Irp-IoStatus.Information> 成员设置为零,或通过属性处理程序对其进行设置来设置该成员。 函数不会设置 lrp-IoStatus.Status> 成员,也不会完成 IRP。
在 64 位平台上,如果 PropertyItemSize 参数不是 8 的倍数,则返回STATUS_INVALID_PARAMETER,并且调用失败。
注解
KsPropertyHandlerWithAllocator 在 IRP 中的 Irp-Tail.Overlay.DriverContext> 参数中放置指向相关KSPROPERTY_ITEM结构的指针。 微型驱动程序可以使用 ks.h 中定义的 KSPROPERTY_ITEM_IRP_STORAGE 宏来访问此指针。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | ks.h (包括 Ks.h) |