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

[與此頁面相關的功能 DirectShow 是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft 強烈建議新程式代碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式代碼盡可能重寫為使用新的 API。

方法 Decommit 會釋放緩衝區內存。

Syntax

HRESULT Decommit();

傳回值

如果成功,則傳回S_OK,或指出錯誤原因的 HRESULT 值。

備註

在 IMemAllocator::GetBuffer 方法中等候的任何線程都傳回錯誤。 對 GetBuffer 的進一步呼叫會失敗,直到呼叫 IMemAllocator::Commit 方法為止。

方法的目的是 Decommit 要防止篩選從配置器取得更多樣本。 已保存樣本參考計數的篩選不會受到影響。 篩選條件釋放範例,而參考計數會變成零之後,就無法再使用範例。

配置器可能會釋放屬於任何樣本的記憶體,其參考計數為零。 因此, Decommit 方法會「釋放」記憶體,因為篩選條件會停止存取記憶體。 記憶體是否實際傳回堆積取決於配置器的實作。 有些配置器會等到自己的解構函式方法。 不過,配置器在刪除本身時,不得保留任何配置的記憶體。 因此,配置器的解構函式必須等到其所有樣本都釋放為止。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 strmif.h (包含 Dshow.h)
程式庫 Strmiids.lib

另請參閱

錯誤和成功碼

IMemAllocator 介面