Obtention de la chaîne de certificats de pilotes

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Pour utiliser le protocole COPP (Certified Output Protection Protocol), l’application doit d’abord créer un graphique DirectShow qui inclut le filtre de rendu de mixage vidéo (VMR-7 ou VMR-9). L’ancien filtre Video Renderer ne prend pas en charge COPP. Avant d’appeler des méthodes COPP, l’application doit créer un graphique de lecture vidéo et connecter le décodeur à la broche d’entrée du filtre VMR. Il n’est pas nécessaire de lire le fichier vidéo.

Après avoir créé le graphe, interrogez le VMR pour l’interface IAMCertifiedOutputProtection , puis appelez IAMCertifiedOutputProtection::KeyExchange. Cette méthode retourne un nombre aléatoire 128 bits tapé en tant que GUID, ainsi qu’un pointeur vers un tableau d’octets qui contient la chaîne de certificats XML du pilote au format UTF-8. Le code suivant montre comment obtenir la chaîne de certificats.

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);
}

Utilisation du protocole COPP (Certified Output Protection Protocol)