Abrufen der Treiberzertifikatkette
Um das Certified Output Protection Protocol (COPP) verwenden zu können, muss die Anwendung zunächst ein DirectShow-Diagramm erstellen, das den Filter "Video Mixing Render" (VMR-7 oder VMR-9) enthält. Der ältere Videorendererfilter unterstützt COPP nicht. Vor dem Aufrufen von COPP-Methoden muss die Anwendung ein Videowiedergabediagramm erstellen und den Decoder mit dem Eingabepin des VMR-Filters verbinden. Es ist nicht erforderlich, die Videodatei wiederzuspielen.
Fragen Sie nach dem Erstellen des Diagramms die VMR für die IAMCertifiedOutputProtection-Schnittstelle ab, und rufen Sie dann IAMCertifiedOutputProtection::KeyExchangeauf. Diese Methode gibt eine 128-Bit-Zufallszahl zurück, die als GUID typisiert ist, zusammen mit einem Zeiger auf ein Bytearray, das die XML-Zertifikatkette des Treibers im UTF-8-Format enthält. Der folgende Code zeigt, wie Sie die Zertifikatkette abrufen.
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);
}