使用 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::BeginGetEvent 和 IMFMediaEventGenerator::EndGetEvent 與回呼更為直接,這可讓程式碼範例更容易瞭解。 無論您是在程式碼中使用 GetEvent ,還是實作 IMFAsyncCallback 並使用 BeginGetEvent 和 EndGetEvent,在收到事件之後處理事件的邏輯都相同。
有數個非同步方法會產生事件,其中包含物件參考,可用來取得更詳細的狀態資訊。 在這些情況下,產生的事件具有 IUnknown 指標作為其值,可查詢以擷取狀態介面。 下列清單摘要說明非同步呼叫、產生的事件和其他介面之間的關聯性。
- IWMDRMLicenseManagement::BackupLicenses方法會產生MEWMDRMLicenseBackupProgress事件與相關聯的IWMDRMLicenseBackupRestoreStatus介面。
- IWMDRMLicenseManagement::RestoreLicenses方法會產生MEWMDRMLicenseRestoreProgress事件與相關聯的IWMDRMLicenseBackupRestoreStatus介面。
- IWMDRMSecurity::P erformSecurityUpdate方法用於執行個別化時,會產生MEWMDRMIndividualizationProgress事件與相關聯的IWMDRMIndividualizationStatus介面。
- IWMDRMLicenseManagement::AcquireLicense方法,用來準備非無訊息授權取得的資料時,會產生MEWMDRMLicenseAcquisitionCompleted事件與相關聯的IWMDRMNonSilentLicenseAquisition介面。
相關主題