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::BeginGetEventIMFMediaEventGenerator::EndGetEvent を使用するよりも簡単です。これにより、コード例を理解しやすくなります。 コードで GetEvent を 使用する場合も、 IMFAsyncCallback を実装して BeginGetEventEndGetEvent を使用する場合でも、受信後にイベントを処理するロジックは同じです。

いくつかの非同期メソッドでは、より詳細な状態情報を取得するために使用できるオブジェクトへの参照を含むイベントが生成されます。 このような場合、生成されたイベントの値として IUnknown ポインターがあり、これを照会して状態インターフェイスを取得できます。 次の一覧は、非同期呼び出し、生成されたイベント、およびその他のインターフェイス間の関係をまとめたものです。

DRM の個別化の例

はじめに

Media Foundation SDK のドキュメント