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 |