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