Uso dell'OPM DDI
Il sottosistema kernel della grafica DirectX Microsoft (Dxgkrnl.sys) usa OPM DDI per creare output protetti OPM, eliminare output protetti da OPM, ottenere certificati, configurare output protetti, ottenere informazioni sugli output protetti e ottenere informazioni sulla scheda grafica. Il sottosistema kernel della grafica DirectX ottiene puntatori alle funzioni DDI OPM quando chiama la funzione DxgkDdiQueryInterface del driver miniport di visualizzazione per eseguire una query per l'interfaccia identificata da GUID_DEVINTERFACE_OPM e DXGK_OPM_INTERFACE_VERSION_1. La sequenza seguente descrive come viene in genere usato OPM DDI per creare, modificare ed eliminare output protetti da OPM:
Il sottosistema kernel della grafica DirectX chiama la funzione DxgkDdiOPMCreateProtectedOutput per creare un output protetto da OPM. Un output protetto da OPM corrisponde sempre a un output video fisico. DxgkDdiOPMCreateProtectedOutput restituisce un handle all'output appena creato.
Il sottosistema kernel della grafica DirectX chiama le funzioni DxgkDdiOPMGetCertificateSize e DxgkDdiOPMGetCertificate per ottenere il certificato OPM del driver miniport visualizzato o il certificato COPP e le relative dimensioni.
Nota
DxgkDdiOPMCreateProtectedOutput, DxgkDdiOPMGetCertificateSize e DxgkDdiOPMGetCertificate sono le uniche funzioni DDI OPM a cui il sottosistema del kernel grafico DirectX non passa un handle di output protetto.
Il sottosistema kernel della grafica DirectX chiama la funzione DxgkDdiOPMGetRandomNumber per ottenere il numero casuale dell'output protetto.
Il sottosistema kernel della grafica DirectX passa un buffer a 256 byte in una chiamata alla funzione DxgkDdiOPMSetSigningKeyAndSequenceNumbers. Il buffer contiene dati crittografati con una delle chiavi pubbliche del driver miniport di visualizzazione. Per altre informazioni sulle chiavi pubbliche, scaricare il documento Output Content Protection dal sito Web Output Content Protection e Windows Vista . La chiave pubblica usata dipende dalla semantica dell'output protetto. La chiave pubblica nel certificato OPM del driver miniport visualizzato viene usata se l'output protetto ha semantica OPM. La chiave pubblica nel certificato COPP del driver miniport visualizzato viene usata se l'output protetto ha semantica COPP. Lo schema di crittografia usato per crittografare i dati dipende anche dalla semantica dell'output protetto. I dati vengono crittografati con l'algoritmo RSA standard se l'output protetto ha semantica COPP e con lo schema di crittografia RSAES-OAEP se l'output protetto ha semantica OPM. Per informazioni su RSA, AES e RSAES-OAEP, vedere il sito Web RSA Laboratories . Il driver miniport di visualizzazione usa la chiave privata e il metodo di decrittografia appropriati per decrittografare i dati. Un numero casuale, due numeri di sequenza casuali e una chiave AES a 128 bit si trovano nei dati decrittografati. L'unità miniport di visualizzazione garantisce che il numero casuale corrisponda al numero casuale restituito dal driver quando è stata chiamata la funzione DxgkDdiOPMGetRandomNumber. Il driver archivia quindi i due numeri di sequenza e la chiave AES a 128 bit.
Il sottosistema kernel della grafica DirectX può ora chiamare la funzione DxgkDdiOPMGetInformation o DxgkDdiOPMGetCOPPCompatibleInformation per ottenere informazioni da un output protetto. Il sottosistema kernel della grafica DirectX può anche chiamare DxgkDdiOPMConfigureProtectedOutput per configurare un output protetto. DxgkDdiOPMGetInformation può essere chiamato solo se l'output ha semantica OPM e DxgkDdiOPMGetCOPPCompatibleInformation può essere chiamato solo se l'output ha semantica COPP. In genere, il sottosistema kernel della grafica DirectX chiama DxgkDdiOPMGetInformation o DxgkDdiOPMGetCOPPCompatibleInformation per ottenere informazioni sull'output e quindi chiama DxgkDdiOPMConfigureProtectedOutput una o più volte per configurare l'output. Il sottosistema kernel della grafica DirectX chiama quindi di nuovo DxgkDdiOPMGetInformation o DxgkDdiOPMGetCOPPCompatibleInformation . Il sottosistema kernel della grafica DirectX può ottenere i tipi di informazioni seguenti chiamando DxgkDdiOPMGetInformation o DxgkDdiOPMGetCOPPCompatibleInformation:
- Tipo di connettore dell'output.
- Tipi di protezione del contenuto supportati dall'output. Gli output possono attualmente supportare:
- Protezione della copia analogica (ACP)
- Analogico del sistema di gestione della generazione di contenuti (CGMS-A)
- Protezione del contenuto digitale a larghezza di banda elevata (HDCP)
- DisplayPort Content Protection (DPCP)
- Livello di protezione virtuale corrente dell'output per un particolare tipo di protezione.
- Livello di protezione effettivo dell'output fisico per un particolare tipo di protezione.
- Versione di HDCP System Renewability Message (SRM) attualmente usata dall'output. Per altre informazioni su HDCP SRM, vedere la revisione della specifica HDCP 1.1. Solo DxgkDdiOPMGetInformation può ottenere queste informazioni.
- Vettore di selezione della chiave del dispositivo HDCP connesso (KSV) e se il dispositivo HDCP è un ripetitore. Solo DxgkDdiOPMGetCOPPCompatibleInformation può ottenere queste informazioni. Per altre informazioni sui ripetitori HDCP e sui KSV, vedere la revisione della specifica HDCP 1.1.
- Tipo di bus di espansione utilizzato dalla scheda grafica. PCI e AGP sono esempi di autobus di espansione.
- Formato delle immagini inviate dal connettore fisico associato all'output protetto a un monitor.
- Gli standard di segnalazione CGMS-A e ACP supportati dall'output protetto. Solo DxgkDdiOPMGetCOPPCompatibleInformation può ottenere queste informazioni.
- Identificatore dell'output.
- Caratteristiche elettriche di un connettore di output DVI (Digital Video Interface).
Il sottosistema kernel della grafica DirectX può modificare le impostazioni seguenti chiamando DxgkDdiOPMConfigureProtectedOutput:
- Livello di protezione corrente di uno dei tipi di protezione dell'output. Ad esempio, DxgkDdiOPMConfigureProtectedOutput può abilitare o disabilitare HDCP e può disattivare la protezione ACP o modificare il livello di protezione ACP corrente.
- SRM HDCP corrente usato dall'output protetto.
- Standard di segnalazione corrente usato dall'output protetto. Questa modifica può essere eseguita solo se l'output ha semantica COPP.
Il sottosistema kernel della grafica DirectX chiama DxgkDdiOPMDestroyProtectedOutput al termine dell'uso dell'oggetto di output protetto.