Media Foundation イベント モデルの使用
[このページに関連付けられている機能である Windows Media Format 11 SDK は、従来の機能です。 ソース リーダーとシンク ライターに置き換わりました。 ソース リーダーとシンク ライターは、Windows 10とWindows 11用に最適化されています。 Microsoft では、可能であれば、新しいコードで Windows Media Format 11 SDK ではなくソース リーダーとシンク ライターを使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
Windows Media DRM クライアント拡張 API でサポートされる非同期メソッドは、Media Foundation SDK で使用されるのと同じイベント モデルを使用します。 非同期メソッドをサポートする各オブジェクトは 、IWMDRMEventGenerator インターフェイスを実装します。これは、非同期操作が完了したときにイベントを取得するために使用できます。
IWMDRMEventGenerator インターフェイスは、Media Foundation SDK ドキュメントに記載されている IMFMediaEventGenerator インターフェイスから継承されます。
DRM 個別化の例のコード例では、IMFMediaEventGenerator::GetEvent メソッドを使用して、キューから一度に 1 つずつイベントを取得します。 GetEvent の使用は、コールバックで IMFMediaEventGenerator::BeginGetEvent と IMFMediaEventGenerator::EndGetEvent を使用するよりも簡単です。これにより、コード例を理解しやすくなります。 コードで GetEvent を 使用する場合も、 IMFAsyncCallback を実装して BeginGetEvent と EndGetEvent を使用する場合でも、受信後にイベントを処理するロジックは同じです。
いくつかの非同期メソッドでは、より詳細な状態情報を取得するために使用できるオブジェクトへの参照を含むイベントが生成されます。 このような場合、生成されたイベントの値として IUnknown ポインターがあり、これを照会して状態インターフェイスを取得できます。 次の一覧は、非同期呼び出し、生成されたイベント、およびその他のインターフェイス間の関係をまとめたものです。
- IWMDRMLicenseManagement::BackupLicenses メソッドは、関連付けられた IWMDRMLicenseBackupRestoreStatus インターフェイスを使用して MEWMDRMLicenseBackupProgress イベントを生成します。
- IWMDRMLicenseManagement::RestoreLicenses メソッドは、関連付けられた IWMDRMLicenseBackupRestoreStatus インターフェイスを使用して MEWMDRMLicenseRestoreProgress イベントを生成します。
- IWMDRMSecurity::P erformSecurityUpdate メソッドは、個別化の実行に使用すると、関連付けられた IWMDRMIndividualizationStatus インターフェイスを使用して MEWMDRMIndividualizationProgress イベントを生成します。
- IWMDRMLicenseManagement::AcquireLicense メソッドは、非サイレント ライセンス取得用のデータを準備するために使用すると、関連付けられた IWMDRMNonSilentLicenseAquisition インターフェイスを使用して MEWMDRMLicenseAcquisitionCompleted イベントを生成します。
関連トピック