COPP の概要
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
認定出力保護プロトコル (COPP) を使用するためにアプリケーションが実行する必要がある基本的な手順を次に示します。
ドライバーの証明書チェーンを取得する
- ビデオ ミキシング レンダラー (VMR-7 または VMR-9) または 拡張ビデオ レンダラー フィルター (EVR) を使用してビデオをレンダリングする DirectShow 再生グラフを作成します。
- IAMCertifiedOutputProtection インターフェイスの VMR に対してクエリを実行します。
- IAMCertifiedOutputProtection::KeyExchange を呼び出します。 このメソッドは、ドライバーから 128 ビットの乱数と、ドライバーの 2048 ビット RSA 公開キーを含む証明書チェーンを返します。
証明書チェーンを検証する
- 証明書チェーンを検証します。 証明書チェーンが無効な場合は、停止します。
- 証明書失効リスト (CRL) を確認します。 証明書チェーン内のいずれかの証明書が失効リストに表示される場合は、停止します。
- 証明書チェーンから RSA 公開キーを取得します。
COPP セッションを初期化する
- 128 ビット AES セッション キーを生成します。 このキーは、データに署名し、署名されたデータが改ざんされていないことを確認するために使用されます。
- 2 つの暗号で保護された 32 ビット乱数を生成します。 1 つ目は状態シーケンス番号、2 つ目はコマンド シーケンス番号です。 アプリケーションは、コマンドまたは状態要求を送信するたびに、対応するシーケンス番号をインクリメントし、この番号を COPP コマンドまたは要求データに含めます。
- グラフィックス ドライバーから 128 ビットの乱数、AES セッション キー、状態シーケンス番号、およびコマンド シーケンス番号を連結します。 ドライバーの公開キーを使用してこのバイト配列を暗号化し、結果を IAMCertifiedOutputProtection::SessionSequenceStart に渡します。
COPP コマンドと状態要求を送信する
- IAMCertifiedOutputProtection::P rotectionStatus を呼び出して、使用可能な保護の種類とその他の情報を照会します。
- IAMCertifiedOutputProtection::P rotectionCommand を呼び出して、目的の保護レベルを設定します。
- 現在のローカル保護レベルのクエリを定期的に実行します。 ローカル保護レベルが予期せず変更された場合、または問題が検出された場合は、再生を停止します。
関連トピック