KsAllocateExtraData 函数 (ks.h)

KsAllocateExtraData 函数与流式处理 IRP 一起使用,以分配缓冲区以包含其他标头数据。 返回指向已分配缓冲区的指针,并且缓冲区最终必须由调用方释放。

语法

KSDDKAPI NTSTATUS KsAllocateExtraData(
  [in, out] PIRP  Irp,
  [in]      ULONG ExtraSize,
  [out]     PVOID *ExtraBuffer
);

参数

[in, out] Irp

指定包含流标头的 IRP。 IRP 必须之前已传递到 KsProbeStreamIrp 以缓冲标头。

[in] ExtraSize

指定要在每个流标头之间分配的额外内存的大小(以字节为单位)。 此值 必须在 八字节边界上对齐。 标头的副本放置在返回的缓冲区中,并在每个标头之间插入额外的数据大小。 这必须由调用方释放。

[out] ExtraBuffer

指向调用方分配的指针,该指针在成功完成时指向系统分配的缓冲区,其中包含流标头及其之间请求的填充。 这必须由调用方释放。

返回值

如果成功, KsAllocateExtraData 函数将返回STATUS_SUCCESS,或者返回资源或访问错误。

注解

当 KsAllocateExtraData 成功完成时,将返回一个指向内存块的指针,该内存块包含 IRP 中指定的流数据标头(在 Irp 中指定),以及 ExtraSize 中指定的每个大小标头之间的填充。 下面显示了此类结果缓冲区的示例:

说明结果缓冲区的关系图。

不再需要额外的缓冲区时,应使用 ExFreePool 释放内存。

要求

要求
目标平台 通用
标头 ks.h (包括 Ks.h)
Library Ks.lib
IRQL < DISPATCH_LEVEL