コンテンツ ID とコンテンツの権利

コンテンツ ID (識別子) は、DRMK システム ドライバーが実行時に生成して、特定のピンにフィードするオーディオ データ ストリーム内の DRM で保護されたコンテンツを識別する ULONG 値です。

コンテンツ権限とは、DRM で保護されたコンテンツを再生およびコピーするために、コンテンツ プロバイダーがユーザーに付与する権利を、デジタル表現したものです。 コンテンツ権限は、DRMK がオーディオ ドライバーに渡す DRMRIGHTS 構造体の形式で指定されます。

DRMRIGHTS には、DigitalOutputDisableCopyProtect の 2 つのフラグが含まれています。 DigitalOutputDisable フラグが設定されている場合、ドライバーは (たとえば、S/PDIF コネクタを介して) 外部デバイスに接続するすべてのデジタル出力を無効にする必要があります。 CopyProtect フラグが設定されている場合、ドライバーは、セキュリティで保護されたコンテンツの永続的なコピーをディスクまたはその他の形式の不揮発性ストレージに保存できる機能を無効にする必要があります。 たとえば、一般的なオーディオ ハードウェアは、再生信号がキャプチャ チャンネル経由でルーティングされるようにできます。 この信号がデジタル形式の場合、キャプチャされた信号は入力信号の完全なデジタル コピーである可能性があります。 CopyProtect フラグが設定されているストリームのデータが再生ミックスに含まれている場合、ドライバーは再生キャプチャ パスをミュートする必要があります。

DRM 準拠のオーディオ ドライバーは、オーディオ データをレンダリングするためのシンク ピンを公開する WaveCyclic および WavePci ミニポート ドライバー オブジェクトで、IDrmAudioStream インターフェイスをサポートする必要があります。 ドライバーから IDrmAudioStream オブジェクトへの参照を取得するために、DRMK はピンの QueryInterface メソッドを呼び出します。 ピンには、IMiniportWaveCyclicStream または IMiniportWavePciStream 型のインターフェイスがあります。 IDrmAudioStream インターフェイスでは、(3 つの IUnknown メソッドに加えて) IDrmAudioStream::SetContentId という 1 つのメソッドのみがサポートされます。 DRMK が SetContentId を呼び出すと、コンテンツ ID とコンテンツ権限が渡され、ドライバーがピンのデータ ストリームにこれらを関連付けます。

waveCyclic または WavePci ミニポート ドライバーは、Drmk.sysで DRM 関数を直接呼び出す代わりに、IDrmPort2 インターフェイス (IDrmPort2 は基底クラス IDrmPort から派生) を介して DRM 関数にアクセスできます。 Microsoft Windows XP 以降では、WaveCyclic および WavePci ポート ドライバーは IDrmPort2 をサポートしています。 ミニポート ドライバーは、REFIID IID_IDrmPort2 を使用してポート オブジェクトの QueryInterface メソッドを呼び出すことによって、ポート ドライバーの IDrmPort2 インターフェイスへの参照を取得します。

一部のオーディオ ドライバーは、ハードウェアのミキシングをサポートしており、いくつかの入力データ ストリームを同時に処理することができます。 この種類のドライバーは、個々のストリームのコンテンツ ID と、すべてのストリームの複合コンテンツ権限の両方を追跡する必要があります。 ドライバーは、IDrmPort::CreateContentMixed を呼び出して、ミックス ストリームの複合権限を特定し、そのストリームを識別するコンテンツ ID を作成します。 コンテンツ ID の使用が完了したら、ドライバーは、IDrmPort::D estroyContent を呼び出してコンテンツ ID を削除する必要があります。

入力ストリームがミキサーに追加またはミキサーから削除されるたびに、ドライバーは古いミックスのコンテンツ ID を削除し、新しいミックスの新しいコンテンツ ID を作成する必要があります。 古いコンテンツ ID を削除する前に、ドライバーは最初に、以前に古いコンテンツ ID を転送したすべてのストリームに新しいコンテンツ ID を正常に転送する必要があります。 詳細については、「DRM コンテンツ ID の転送」を参照してください。