DRM バージョン 7 以降でのファイルの保護
[このページに関連付けられている機能である Windows Media Format 11 SDK は、従来の機能です。 ソース リーダーとシンク ライターに置き換わりました。 ソース リーダーとシンク ライターは、Windows 10とWindows 11用に最適化されています。 Microsoft では、可能であれば、新しいコードで Windows Media Format 11 SDK ではなくソース リーダーとシンク ライターを使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
Windows Media DRM バージョン 7 以降でファイルを保護するには、ライター オブジェクトの IWMDRMWriter::SetDRMAttribute メソッドを使用して DRM 属性を設定します。 DRM バージョン 7 以降のバージョンでは、保護されたファイルまたはファイルのセットごとに一意のライセンスが有効になるため、 IWMDRMWriter インターフェイスにはキーを作成する方法もあります。 これらのメソッドは便宜上のみ提供されます。
DRM バージョン 7 以降を使用して ASF ファイルを保護するには、次の手順を実行します。
WMStubDRM.lib にリンクし、必要に応じて wmvcore.lib のリンクを解除します。
WMCreateWriter 関数を呼び出して、DRM ライターを作成します。 最初の引数は予約済みであり、 NULL に設定する必要があります。
IWMWriter::SetProfile または IWMWriter::SetProfileByID を呼び出して使用するライターのプロファイルを設定します。 DRM 属性を設定する前に、ライターでプロファイルを設定する必要があります。 DRM は、Windows Media Audio または Windows Media Video コーデックを使用するプロファイルでのみサポートされます
ライター オブジェクトの IWMDRMWriter インターフェイスを取得します。
IWMDRMWriter::SetDRMAttribute を呼び出し、Use_Advanced_DRMを TRUE に設定します。
新しいキー シードを生成する必要がある場合は、 IWMDRMWriter::GenerateKeySeed を呼び出します。 ほとんどの場合、以前に生成されたキー シードを再利用します。 この値はシークレットのままにする必要があります。ファイルに書き込まれません。
IWMDRMWriter::GenerateKeyID を呼び出してキー ID を作成します。これは、実際のキーの作成に使用される 2 番目の値です。 キー シードとは異なり、キー ID はパブリックであり、クリアの DRM ヘッダー内のファイルに書き込まれます。 作成する新しいファイルごとに新しいキー ID を作成します。
必要に応じて IWMDRMWriter::GenerateSigningKeyPair を呼び出して、高度な DRM ASF ヘッダー オブジェクトの署名に使用される公開キーと秘密キーを生成します。 これらのキーの詳細については、「 IWMDRMWriter::GenerateSigningKeyPair」を参照してください。
必要に応じて、DRM ヘッダーのデジタル署名オブジェクトを設定する値を取得します。 システムに Windows Media Rights Manager の動作バージョンがインストールされていない場合は、次の 4 つの属性を指定して ASF ファイル ヘッダーのデジタル署名オブジェクトを構成する必要があります。これらはすべて Microsoft から取得する必要があります。
Windows Media Rights Manager がインストールされている場合は、アプリケーションでこれらの属性を設定する必要はありません。 DRM コンポーネントは、これらの属性を取得し、それらを使用してヘッダーに自動的に署名します。 別のコンピューターでアクティブ化されたバージョンの Windows Media Rights Manager があり、それらのデジタル署名オブジェクトの値を再利用する場合は、レジストリで見つけることができます。 ライセンス サーバー証明書は HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server\Certs:cert1 に格納され、ルート証明書は HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server\Certs:cert2 に格納されます。 DRM バージョン 7 でファイルを保護する場合は、これらのレジストリ キーの値を使用する必要があります。 DRM_LASignaturePrivKey プロパティの場合は、GenerateSigningKeysEx (Windows Media Rights Manager SDK 経由) を使用するか、Windows Media Rights Manager によってインストールされた値を HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server:Info_Cert0 で再利用します。 DRM_LASignatureCert プロパティの場合は、GenerateSigningKeysEx (Windows Media Rights Manager SDK 経由) を使用するか、Windows Media Rights Manager によって HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server\Certs:cert0 の下にインストールされた値を使用します。
ライター オブジェクトを構成するために必要な回数だけ IWMDRMWriter::SetDRMAttribute を呼び出します。これにより、必要な DRM ヘッダー属性が必要に応じて設定されます。 これらのプロパティは、ライター オブジェクトの有効期間中、または新しい値でリセットされるまで保持されます。 作成する新しいファイルごとにリセットする必要はありません。
ライター オブジェクトには、次のプロパティが必要です。
次のプロパティは省略可能です。
また、 DRM_DRMHeader 基本属性を使用して、ユーザー定義の DRM ファイル属性を直接指定することもできます。 ライセンスの作成でライセンス サーバーによって使用される追加情報を伝達する方法として、"DRMHeader.RequireSAP" などの任意の属性を追加できます。 ライセンス サーバーは、追加する追加のプロパティを事前に認識しておく必要があります。 プログラムで不明なプロパティを検出する方法はありません。
このドキュメントの他の場所で説明されているように、 IWMWriter インターフェイス メソッドを使用してファイルを記述します。 ライブ DRM ストリームを作成するには、ネットワーク シンクに書き込むだけです。 プッシュ シンクに書き込むこともできます。
必要に応じて、Windows Media Rights Manager を使用してファイルのライセンスを作成します。 このタスクは、サードパーティのライセンス サーバーでも実行できます。 Live-DRM シナリオの場合、エンド ユーザーは、ストリームが開始される前に、または最初に接続を試みる時点でライセンスを取得する必要があります。
メモ DRM は、この SDK の x64 ベースのバージョンではサポートされていません。
関連トピック