Condividi tramite


Recupero della catena di certificati driver

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Per usare il protocollo COPP (Certified Output Protection Protocol), l'applicazione deve prima compilare un grafico DirectShow che include il filtro Rendering mix video (VMR-7 o VMR-9). Il filtro Del renderer video meno recente non supporta COPP. Prima di chiamare qualsiasi metodo COPP, l'applicazione deve creare un grafico di riproduzione video e connettere il decodificatore al pin di input del filtro VMR. Non è necessario riprodurre il file video.

Dopo aver compilato il grafo, eseguire una query su VMR per l'interfaccia IAMCertifiedOutputProtection e quindi chiamare IAMCertifiedOutputProtection::KeyExchange. Questo metodo restituisce un numero casuale a 128 bit digitato come GUID, insieme a un puntatore a una matrice di byte che contiene la catena di certificati XML del driver in formato UTF-8. Il codice seguente illustra come ottenere la catena di certificati.

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

Uso del protocollo COPP (Certified Output Protection Protocol)