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)
Ks.lib
IRQL < DISPATCH_LEVEL