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 |