_KsEdit函数 (ks.h)
KsEdit 函数保证通过对象包动态分配给定项并与 AVStream 对象关联。
语法
KSDDKAPI NTSTATUS _KsEdit(
[in] KSOBJECT_BAG ObjectBag,
[in, out] PVOID *PointerToPointerToItem,
[in] ULONG NewSize,
[in] ULONG OldSize,
[in] ULONG Tag
);
参数
[in] ObjectBag
在检查中使用的KSOBJECT_BAG(等效于类型 PVOID)。 如果项目不包含在对象包中,KsEdit 动态分配项目的足够内存,复制旧内容,并将新分配的内存放在此对象包中。
[in, out] PointerToPointerToItem
指向正在编辑的项的指针的指针。
[in] NewSize
要为项分配的字节数。
[in] OldSize
项当前占用的字节数。
[in] Tag
包含用于分配的池标记。 驱动程序通常将池标记指定为最多四个字符的字符串,用单引号分隔。 字符串通常按反向顺序指定。 标记中每个字符的 ASCII 值必须介于 0 和 127 之间。
返回值
返回成功或STATUS_INSUFFICIENT_RESOURCES。
言论
请注意,KsEdit 和 KsEditSized 是创建宏,以便更轻松地使用 _KsEdit。 虽然 _KsEdit 允许调整项的大小,但 KsEdit 则不能。 宏 KsEdit 调用 _KsEdit,将 大小指定为两种大小(** PointerToPointerToItem)。
例如,请考虑需要在创建时修改其分配器框架的引脚。 由于描述符是静态编码的,并且新引脚可以使用它,因此解决方案是修改引脚描述符,如下所示:
KsEdit(Pin, &Pin->Descriptor, Tag);
Pin->Descriptor->AllocatorFraming = NewAllocatorFraming;
KsEdit 调用可确保 Pin->描述符 是与 Pin关联的动态内存。 请注意,任意修改描述符和其他 AVStream 结构可能会导致不良结果。 在 AVStream 结构上使用 KsEdit 时,微型驱动程序应谨慎行事。
KsEditSized 调用 _KsEdit 接收的参数相同,但 Object 替换为 Object->Bag,指针为 TYPEcast 到 PVOID。
请注意,调用 _KsEdit时,调用方必须保存与包关联的互斥体。 有关详细信息,请参阅 AVStream 中的 对象包 和互斥体。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Microsoft Windows XP 及更高版本的作系统以及 DirectX 8.0 及更高版本的 DirectX 版本中提供。 |
目标平台 | 普遍 |
标头 | ks.h (包括 Ks.h) |
库 | Ks.lib |
IRQL | PASSIVE_LEVEL |