Protezione del contenuto DDI

Questa sezione si applica solo a Windows 7 e versioni successive e Windows Server 2008 R2 e versioni successive del sistema operativo Windows.

Content Protection DDI è un'estensione dell'DDI Direct3D versione 9 per proteggere il video. Il DDI protezione dei contenuti è costituito dai punti di ingresso descritti in questa sezione.

Funzioni DDI di protezione del contenuto necessarie

Se la protezione del contenuto viene implementata nel driver di visualizzazione in modalità utente, il driver deve supportare le funzioni DDI di Protezione contenuto seguenti:

Funzionalità di protezione del contenuto

Il driver di visualizzazione in modalità utente segnala solo le funzionalità di protezione del contenuto se supporta ognuna delle funzioni DDI necessarie per la protezione del contenuto precedente. I valori di D3DDDICAPS_TYPE seguenti vengono usati dal runtime Direct3D per recuperare informazioni sulle funzionalità di protezione del contenuto supportate dal driver di visualizzazione in modalità utente. Il runtime imposta questi valori D3DDDICAPS_TYPE nel membro Type della struttura D3DDDIARG_GETCAPS a cui punta il parametro pData della funzione GetCaps del driver quando il runtime chiama GetCaps.

D3DDDICAPS_GETCONTENTPROTECTIONCAPS
Il runtime fornisce un puntatore a una struttura DDICONTENTPROTECTIONCAPS per la specifica combinazione di crittografia e decodifica che il driver deve usare. Il driver restituisce un puntatore a una struttura D3DCONTENTPROTECTIONCAPS popolata che descrive le capacità di protezione del contenuto del driver per la combinazione di criteri di crittografia e decodifica. Per altre informazioni sulle D3DCONTENTPROTECTIONCAPS, vedere la documentazione di DirectX SDK.

D3DDDICAPS_GETCERTIFICATESIZE
Il driver fornisce un puntatore a un numero che specifica le dimensioni, in byte, del certificato del driver usato per un canale o un tipo di crittografia. Il runtime Direct3D usa quindi questa dimensione per allocare un buffer per contenere le informazioni sul certificato ricevute dal runtime quando il runtime chiama GetCaps con D3DDDICAPS_GETCERTIFICATE.

D3DDDICAPS_GETCERTIFICATE
Il runtime fornisce un puntatore a una struttura DDICERTIFICATEINFO che descrive il certificato che deve essere recuperato dal driver.

Per un canale autenticato, il driver usa il certificato OPM esistente, ovvero un certificato X.509 firmato da Microsoft.

Un'applicazione può eseguire una query sul certificato del driver per determinare le informazioni seguenti:

  • Indica se il driver è attendibile.

  • Indica se il driver viene revocato.

  • Chiave pubblica del driver. L'applicazione usa la chiave pubblica del driver per stabilire una chiave di sessione per un canale autenticato usato per l'autenticazione.

Una chiamata a GetCaps con D3DDDICAPS_GETCERTIFICATE set ha esito negativo se viene chiamato per il canale autenticato Direct3D 9 perché questo canale non supporta un certificato o un'autenticazione.

Per una sessione di crittografia, il driver restituisce il certificato per il tipo di crittografia specificato. A seconda del tipo di crittografia e dello scambio di chiavi usato, un certificato potrebbe o meno essere usato. È anche possibile che diversi tipi di crittografia possano usare certificati diversi.

Funzioni DDI di protezione del contenuto facoltative

Il driver può facoltativamente supportare le funzioni DDI di Protezione contenuto seguenti:

  • La funzione EncryptionBlt legge i dati crittografati da una superficie protetta.

  • La funzione GetPitch recupera il passo di una superficie protetta.

  • La funzione StartSessionKeyRefresh restituisce un numero casuale che il decodificatore/applicazione e il driver/hardware possono successivamente usare per eseguire un'operazione OR esclusiva (XOR) con la chiave di sessione.

  • La funzione FinishSessionKeyRefresh indica che tutti i buffer di quel momento useranno il valore della chiave di sessione aggiornato.

  • La funzione GetEncryptionBltKey restituisce la chiave usata per decrittografare i dati restituiti dalla funzione EncryptionBlt del driver.

  • La funzione DecryptionBlt scrive i dati in una superficie protetta.

Risorse protette del contenuto

I flag di D3DDDI_RESOURCEFLAGS seguenti vengono usati dal runtime Direct3D per il contenuto protetto. Il runtime imposta questi flag D3DDDI_RESOURCEFLAGS nel membro Flags della struttura D3DDDIARG_CREATERESOURCE a cui punta il parametro pResource della funzione CreateResource del driver quando il runtime chiama CreateResource.

RestrictedContent
La risorsa potrebbe contenere contenuto protetto. Un'applicazione potrebbe avere o meno abilitato la protezione del contenuto in modo esplicito prima che l'applicazione crei una risorsa. Il driver deve assicurarsi che il runtime inserisca l'allocazione per la risorsa in un pool di memoria che può essere protetto. Il driver deve consentire la creazione di risorse protette bloccabili. Tuttavia, il driver dovrebbe fallire esplicitamente le chiamate alla funzione Lock per bloccare queste superfici mentre la protezione del contenuto è abilitata.

RestrictSharedAccess
Solo i processi specifici devono essere autorizzati ad accedere alla risorsa condivisa.

Il driver deve limitare l'accesso condiviso a questa risorsa. Il runtime può chiamare solo la funzione OpenResource del driver per aprire questa risorsa con dispositivi di visualizzazione (hDevice) all'interno del processo che ha creato la risorsa o da tali dispositivi a cui è stato concesso esplicitamente l'accesso tramite il canale autenticato.