Obtendo a cadeia de certificados drivers

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Para usar o COPP (Certified Output Protection Protocol), o aplicativo primeiro deve criar um grafo do DirectShow que inclua o filtro de Renderização de Combinação de Vídeo (VMR-7 ou VMR-9). O filtro do Renderizador de Vídeo mais antigo não dá suporte ao COPP. Antes de chamar qualquer método COPP, o aplicativo deve criar um grafo de reprodução de vídeo e conectar o decodificador ao pin de entrada do filtro VMR. Não é necessário reproduzir o arquivo de vídeo.

Depois de criar o grafo, consulte a VMR para a interface IAMCertifiedOutputProtection e chame IAMCertifiedOutputProtection::KeyExchange. Esse método retorna um número aleatório de 128 bits digitado como GUID, juntamente com um ponteiro para uma matriz de bytes que contém a cadeia de certificados XML do driver no formato UTF-8. O código a seguir mostra como obter a cadeia de certificados.

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

Usando o COPP (Certified Output Protection Protocol)