DRM の個別化の実行

[このページに関連付けられている機能である Windows Media Format 11 SDK は、従来の機能です。 ソース リーダーシンク ライターに置き換わりました。 ソース リーダーシンク ライターは、Windows 10とWindows 11用に最適化されています。 Microsoft では、可能であれば、新しいコードで Windows Media Format 11 SDK ではなくソース リーダーシンク ライターを使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

個別化とは、クライアント コンピューター上の DRM コンポーネントを更新し、それを暗号化し、一意にするプロセスです。 コンピューターが個別化されると、DRM コンポーネントはコンピューターに関連付けられ、他のコンピューター上のコンテンツをデコードできなくなります。 Windows Media DRM クライアント拡張 API は、クライアント コンピューター上の DRM コンポーネントを個別化するためのサポートを提供します。

個別化は、 IWMDRMSecurity::P erformSecurityUpdate メソッドを 呼び出すことによって実行されます。 PerformSecurityUpdate を呼び出して、サーバー上のバージョンがクライアント コンピューターにインストールされているバージョンよりも新しい場合にのみ個別化されるようにしたり、相対的なセキュリティ バージョンに関係なく個別化を強制したりできます。 必要に応じて個別化のフラグがWMDRM_SECURITY_PERFORM_INDIV。 強制個別化のフラグはWMDRM_SECURITY_PERFORM_FORCE_INDIV。

PerformSecurityUpdate は非同期呼び出しです。 迅速に返され、個別化プロセスに関する状態情報を提供するイベントが生成されます。 生成されるイベントの大部分は MEWMDRMIndividualizationProgress イベントであり、それぞれに関連付けられた IWMDRMIndividualizationStatus インターフェイスがあります。 状態インターフェイスを取得するには、 IMFMediaEvent::GetValue を呼び出して、同じオブジェクト上にある IUnknown ポインターを取得し、 IWMDRMIndividualizationStatus に対してクエリを実行する必要があります。

IWMDRMIndividualizeStatus::GetStatus を呼び出すことで、WM_INDIVIDUALIZE_STATUS構造体のデータを取得できます。 生成される各イベントには、状態を持つ独自のオブジェクトがあるため、イベント値を取得し、毎回状態インターフェイスのクエリを実行するプロセスを実行する必要があります。

ダウンロードのサイズによっては、数十または数百の MEWMDRMIndividualizationProgress イベントが発生する可能性があります。 個別化プロセスが完了すると、 MEWMDRMIndividualizationCompleted イベントが生成されます。

個別化が完了すると、新しい個別化された状態を反映する既存のオブジェクトは、 IWMDRMSecurity から継承されるオブジェクトだけです。 他のすべての既存のオブジェクトは更新されません。 新しい個別化された状態を反映するように、他のオブジェクトを解放して再作成する必要があります。

DRM の個別化の例

プログラミング ガイド

Media Foundation イベント モデルの使用

Windows Media DRM の個別化のベスト プラクティス