KsRemoveItemFromObjectBag 函数 (ks.h)

KsRemoveItemFromObjectBag 函数从对象包中删除项目。

语法

KSDDKAPI ULONG KsRemoveItemFromObjectBag(
  [in] KSOBJECT_BAG ObjectBag,
  [in] PVOID        Item,
  [in] BOOLEAN      Free
);

参数

[in] ObjectBag

此参数指定与要从中删除 Item 的 PVOID) 类型等效的KSOBJECT_BAG (。

[in] Item

指向要从请求的对象包中删除的项的指针。 请注意, Item 仅从请求的对象包中删除。 它不会从它可能位于的任何其他对象包中删除。

[in] Free

此参数指定从指定对象包中删除 Item 后,是否应释放 Item 。 仅当 Item 未包含在任何其他对象包中时,才将 Free 设置为 TRUE

返回值

返回 对 Item 的引用数。 返回值为零表示 Item 在调用时不在 ObjectBag 中。

返回值 1 表示 Item 已成功从 ObjectBag 中删除,并且它不在任何其他对象包中。 如果在这种情况下请求了免费,AVStream 将使用 ExFreePoolKsAddItemToObjectBag 调用时间中指定的 Free 方法释放 Item

一个上方的返回值指示该项存在于另一个对象包中,并且仍有引用。 在这种情况下,AVStream 从 ObjectBag 中删除了 Item,但不管 Free 的值如何,都未释放它。

注解

KsRemoveItemFromObjectBag 仅当对此项的引用数为零且请求了 free 时才释放 Item。

有关对象包的详细信息,请参阅 对象包

请注意,必须与包关联的互斥体保持。 有关详细信息,请参阅 AVStream 中的互斥体

要求

要求
最低受支持的客户端 适用于 Microsoft Windows XP 及更高版本的操作系统以及 DirectX 8.0 及更高版本的 DirectX。
目标平台 通用
标头 ks.h (包括 Ks.h)
Library Ks.lib
IRQL PASSIVE_LEVEL

另请参阅

KsAddItemToObjectBag

KsAllocateObjectBag

KsCopyObjectBagItems

KsDiscard

KsFreeObjectBag

KsMergeAutomationTables