IMemAllocator::D ecommit 方法 (strmif.h)

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

方法 Decommit 释放缓冲区内存。

语法

HRESULT Decommit();

返回值

如果成功,则返回S_OK,或返回指示错误原因的 HRESULT 值。

注解

IMemAllocator::GetBuffer 方法中等待的任何线程都返回错误。 对 GetBuffer 的 进一步调用将失败,直到调用 IMemAllocator::Commit 方法。

方法的目的是 Decommit 防止筛选器从分配器获取更多样本。 已对样本保留引用计数的筛选器不受影响。 但是,在筛选器释放示例且引用计数变为零之后,该示例不再可用。

分配器可以释放属于引用计数为零的任何样本的内存。 因此, Decommit 方法会“释放”内存,因为筛选器停止访问内存。 内存是否实际返回到堆取决于分配器的实现。 某些分配器等到其自己的析构函数方法。 但是,分配器在删除自身时不得留下任何分配的内存。 因此,分配器的析构函数必须等待其所有样本释放。

要求

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

另请参阅

错误和成功代码

IMemAllocator 接口