使用 Media Foundation 事件模型

[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器和接收寫入器已取代它。 來源讀取器和接收寫入器已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用來源讀取器和接收寫入器,而不是Windows Media Format 11 SDK。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]

Windows Media DRM 用戶端擴充 API 所支援的非同步方法會使用相同的媒體基礎 SDK 所使用的事件模型。 每個支援非同步方法的物件都會實作 IWMDRMEventGenerator 介面,當非同步作業完成時,可用來擷取事件。

IWMDRMEventGenerator介面繼承自IMFMediaEventGenerator介面,其記載于媒體基礎 SDK 檔中。

DRM 個人化範例中的範例程式碼會使用IMFMediaEventGenerator::GetEvent方法來一次從佇列擷取事件。 使用 GetEvent 比使用 IMFMediaEventGenerator::BeginGetEventIMFMediaEventGenerator::EndGetEvent 與回呼更為直接,這可讓程式碼範例更容易瞭解。 無論您是在程式碼中使用 GetEvent ,還是實作 IMFAsyncCallback 並使用 BeginGetEventEndGetEvent,在收到事件之後處理事件的邏輯都相同。

有數個非同步方法會產生事件,其中包含物件參考,可用來取得更詳細的狀態資訊。 在這些情況下,產生的事件具有 IUnknown 指標作為其值,可查詢以擷取狀態介面。 下列清單摘要說明非同步呼叫、產生的事件和其他介面之間的關聯性。

DRM 個人化範例

消費者入門

媒體基礎 SDK 檔