IMemAllocator 接口 (strmif.h)

[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayerIMFMediaEngine媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

接口 IMemAllocator 分配媒体样本,用于在引脚之间移动数据。

当输入引脚公开 IMemInputPin 接口时,共享分配器的引脚使用此接口。 引脚协商哪个引脚将提供分配器。 分配器用于分配内存缓冲区、检索空缓冲区和释放缓冲区。 并非每个筛选器都会创建自己的分配器,因此多个筛选器可能会使用一个分配器。 有关详细信息,请参阅 筛选器连接方式

应用程序通常不使用此接口。

若要使用分配器,请执行以下步骤:

  1. 调用 IMemAllocator::SetProperties 方法以指定缓冲区要求,包括缓冲区数和每个缓冲区的大小。
  2. 调用 IMemAllocator::Commit 方法来分配缓冲区。
  3. 调用 IMemAllocator::GetBuffer 方法以检索媒体样本。 此方法将阻止,直到下一个示例可用。
  4. 完成每个示例后,对示例调用 IUnknown::Release 方法。 当样本的引用计数达到零时,不会删除该示例。 相反,该示例返回到分配器的可用列表。
  5. 使用分配器后,调用 IMemAllocator::D ecommit 方法来释放缓冲区的内存。

继承

IMemAllocator 接口继承自 IUnknown 接口。 IMemAllocator 还具有以下类型的成员:

方法

IMemAllocator 接口具有以下方法。

 
IMemAllocator::Commit

Commit 方法分配缓冲区内存。
IMemAllocator::D ecommit

Decommit 方法释放缓冲区内存。
IMemAllocator::GetBuffer

GetBuffer 方法检索包含空缓冲区的媒体示例。
IMemAllocator::GetProperties

GetProperties 方法检索分配器将创建的缓冲区数和缓冲区属性。
IMemAllocator::ReleaseBuffer

ReleaseBuffer 方法发布媒体示例。
IMemAllocator::SetProperties

SetProperties 方法指定要分配的缓冲区数和每个缓冲区的大小。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 strmif.h (包括 Dshow.h)