KsRemoveItemFromObjectBag 函数 (ks.h)

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

语法

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

参数

[in] ObjectBag

此参数指定要从中删除项 项KSOBJECT_BAG(等效于 PVOID 类型)。

[in] Item

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

[in] Free

此参数指定在从指定对象包中删除项 后是否应释放它。 如果任何其他对象包中不包含 Item,则仅 免费 设置为 true

返回值

返回 上的引用数。 返回值为零表示在调用时 ObjectBag 中没有 Item

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

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

言论

KsRemoveItemFromObjectBag 仅当此项目的引用数为零且请求免费时,才会释放 Item

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

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

要求

要求 价值
最低支持的客户端 Microsoft Windows XP 及更高版本的作系统以及 DirectX 8.0 及更高版本的 DirectX 版本中提供。
目标平台 普遍
标头 ks.h (包括 Ks.h)
Ks.lib
IRQL PASSIVE_LEVEL

另请参阅

KsAddItemToObjectBag

KsAllocateObjectBag

KsCopyObjectBagItems

KsDiscard

KsFreeObjectBag

KsMergeAutomationTables