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)

另请参阅

KsFastPropertyHandler

KsPropertyHandler