IMemAllocator::D ecommit 方法 (strmif.h)
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 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 |