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,并且调用失败。

注解

KsPropertyHandlerWithAllocatorIRP 中的 Irp-Tail.Overlay.DriverContext> 参数中放置指向相关KSPROPERTY_ITEM结构的指针。 微型驱动程序可以使用 ks.h 中定义的 KSPROPERTY_ITEM_IRP_STORAGE 宏来访问此指针。

要求

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

另请参阅

KsFastPropertyHandler

KsPropertyHandler