KsAddItemToObjectBag 函数 (ks.h)

KsAddItemToObjectBag 函数将对象或内存块添加到给定的对象包。

语法

KSDDKAPI NTSTATUS KsAddItemToObjectBag(
  [in]           KSOBJECT_BAG           ObjectBag,
  [in]           __drv_aliasesMem PVOID Item,
  [in, optional] PFNKSFREE              Free
);

参数

[in] ObjectBag

KSOBJECT_BAG (等效于要向其添加所请求项的 PVOID 类型) 。 每个 AVStream 对象 (例如 KSFILTERKSPIN) 都包含一个名为 Bag 的成员。 在此参数中传递该成员。

[in] Item

指向要添加到对象包的项的指针。

[in, optional] Free

从对象包中删除项或删除对象包时调用的函数。 此函数通常用于释放与 Item 关联的任何动态内存。 函数的原型应如下所示:

void Free (IN PVOID Data);

如果调用方未指定此可选参数,则从对象包中删除或删除对象包时,使用 ExFreePool 释放 Item

返回值

返回STATUS_SUCCESS指示添加正常,或STATUS_INSUFFICIENT_RESOURCES指示系统资源不足,无法继续操作。

注解

在调用 KsAddItemToObjectBag 之前,微型驱动程序必须获取与特定对象包关联的互斥体。 如果 ObjectBagKSDEVICEKSFILTERFACTORY 的成员,请获取设备互斥体。 如果包是 KSFILTER 的成员,请获取筛选器控件互斥体。 如果包是 KSPIN 对象的成员,请获取父 KSFILTER 的筛选器控件互斥体。

有关详细信息,请参阅 AVStream 中的对象包和互斥体。

要求

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

另请参阅

ExFreePool

KsAllocateObjectBag

KsCopyObjectBagItems

KsDiscard

KsFreeObjectBag

KsRemoveItemFromObjectBag

_KsEdit