DRM ドライバーの開発とデバッグ

次のチェックリストは、ドライバー作成者が一般的な落とし穴を回避するのに役立つ場合があります。

  • DRM で保護されたコンテンツの再生中にドライバーがウェーブアウト キャプチャと S/PDIF 出力を無効にした場合、ドライバーは、DRM で保護されたコンテンツの再生が終了した後 (および DRM バッファーが破棄された後) に、それらを再度有効にする必要があります。

  • デバイスがハードウェア ミキシングを実行する場合、ドライバーは、ストリームがミックスに追加またはミックスから削除されたときに発生する複合使用権限の変更を追跡する必要があります。 ミックスに 1 つ以上のコピープロテクトされた DRM ストリームが含まれる場合は、必ずキャプチャをミュートする必要があります。 保護されたミックスの再生中にキャプチャがオンになっている場合は、ミュートのままにしておく必要があります。

  • フィルター グラフや、ストリームに関連するプロパティ設定を変更した後、ドライバーは直ちにストリームのコピープロテクト設定と出力有効設定を更新する必要がある可能性があります。 ドライバーは、保護されたコンテンツがキャプチャ バッファーまたはデジタル出力にコピーされないように、操作を同期する必要があります。 たとえば、キャプチャ マルチプレクサーへの入力ストリームが変更された場合、ドライバーは、ミュートのオンとオフを切り替えるために必要な期間中に、セキュリティで保護されたコンテンツが脆弱になることを許可しないようにする必要があります。

DRMK システム ドライバーは、DRM で保護されたコンテンツの再生中にカーネル デバッガーが接続できないようにします。 アンチデバッグ防御は、DRMK が、保護されたコンテンツを不透明にするために使用するいくつかの手段の 1 つです。 ただし、ドライバーをテストする準備ができた時点で、次の手法を使用して DRM に準拠した機能をデバッグすることができます。

  • ウェーブ ストリームの SetState メソッド (例: IMiniportWavePciStream::SetState を参照) を一時的に変更して IDrmAudioStream::SetContentId を呼び出し、DRMRIGHTS パラメーターの CopyProtect メンバーを TRUE に設定します。

  • デバッグが完了したら、必ず SetContentId 呼び出しを忘れずに削除してください。

この手法では、保護されていないコンテンツを DRM で保護されたコンテンツであるかのように再生できますが、デバッガーを無効にすることは避けることができます。

たとえば、デバッガーを使用して、ドライバーがコンテンツの録音を妨げていることを確認できます。 SndVol32 プログラムの音量とミュートの設定を変更することで、キャプチャ MUX を介してウェーブアウト ストリームの記録を有効にするようにドライバーにトリックをしかけることができます。 スライダーには設定に加えた変更が反映されている必要がありますが、キャプチャ MUX は、"保護された" コンテンツの再生が完了するまでウェーブアウト ストリームをミュートし続ける必要があります。 その場合にのみ、新しい設定が有効になります。