ドライバー証明書チェーンの取得
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
認定出力保護プロトコル (COPP) を使用するには、アプリケーションでまず、Video Mixing Render フィルター (VMR-7 または VMR-9) を含む DirectShow グラフをビルドする必要があります。 古いビデオ レンダラー フィルターでは、COPP はサポートされていません。 COPP メソッドを呼び出す前に、アプリケーションでビデオ再生グラフを作成し、デコーダーを VMR フィルターの入力ピンに接続する必要があります。 ビデオ ファイルを再生する必要はありません。
グラフを構築した後、 IAMCertifiedOutputProtection インターフェイスの VMR に対してクエリを実行し、 IAMCertifiedOutputProtection::KeyExchange を呼び出します。 このメソッドは、ドライバーの XML 証明書チェーンを UTF-8 形式で含むバイト配列へのポインターと共に、GUID として入力された 128 ビットの乱数を返します。 次のコードは、証明書チェーンを取得する方法を示しています。
GUID guidRandom;
BYTE *pbCertificateChain = NULL;
DWORD cbCertificateChainLen; // Size of the certificate chain, in bytes.
hr = pCOPP->KeyExchange(&guidRandom, &pbCertificateChain,
&cbCertificateChainLen);
if (SUCCEEDED(hr))
{
// TODO: Validate the certificate chain and get the driver's
// public key.
// When you are done, free the buffer that contains the
// certificate chain.
CoTaskMemFree(pbCertificateChain);
}
関連トピック