共用方式為


如何實作 IUnknown

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

Microsoft DirectShow 是以元件物件模型為基礎, (COM) 。 如果您撰寫自己的篩選,則必須將它實作為 COM 物件。 DirectShow 基類提供從中執行這項作業的架構。 不需要使用基類,但可以簡化開發程式。 本文說明 COM 物件的一些內部詳細資料及其在 DirectShow 基類中的實作。

本文假設您知道如何撰寫 COM 用戶端應用程式的程式,換句話說,您瞭解 IUnknown中的方法,但不假設任何先前開發 COM 物件的經驗。 DirectShow 會處理許多開發 COM 物件的詳細資料。 如果您有開發 COM 物件的經驗,您應該閱讀 使用 CUnknown一節,其中描述 CUnknown 基類。

COM 是規格,而不是實作。 它會定義元件必須遵循的規則;讓這些規則生效會保留給開發人員。 在 DirectShow 中,所有物件都衍生自一組 C++ 基類。 基類建構函式和方法會執行大部分 COM「記事」工作,例如保留一致的參考計數。 藉由從基類衍生篩選,您可以繼承 類別的功能。 若要有效地使用基類,您需要對它們實作 COM 規格的方式有一般瞭解。

本文包含下列主題。

DirectShow 和 COM