IMemAllocator::D ecommit 方法 (strmif.h)
[與此頁面相關的功能 DirectShow 是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft 強烈建議新程式代碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 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 |