Sviluppo e debug di driver DRM
L'elenco di controllo seguente può aiutare gli autori di driver a evitare alcune insidie comuni:
Se il driver disabilita l'acquisizione wave-out e l'output S/PDIF durante la riproduzione di contenuti protetti da DRM, il driver deve ricordarsi di abilitarli di nuovo al termine della riproduzione del contenuto protetto da DRM e il buffer DRM viene eliminato definitivamente.
Se il dispositivo esegue la combinazione di hardware, il driver deve tenere traccia delle modifiche apportate ai diritti di utilizzo compositi che si verificano quando i flussi vengono aggiunti o rimossi dalla combinazione. Ogni volta che la combinazione include uno o più flussi DRM protetti dalla copia, ad esempio, l'acquisizione deve essere disattivata. Deve rimanere disattivato se l'acquisizione è attivata durante la riproduzione della combinazione protetta.
Dopo una modifica al grafico del filtro o alle impostazioni delle proprietà associate a un flusso, il driver potrebbe dover aggiornare immediatamente le impostazioni di protezione della copia e dell'abilitazione dell'output del flusso. Il driver deve sincronizzare l'operazione per impedire che il contenuto protetto venga copiato in un buffer di acquisizione o in un output digitale. Ad esempio, quando il flusso di input in un multiplexer acquisisce modifiche, il driver non deve consentire a contenuto sicuro di diventare vulnerabile durante il tempo necessario per attivare e disattivare l'attivazione e la disattivazione.
Il driver di sistema DRMK impedisce al debugger del kernel di connettersi durante la riproduzione del contenuto protetto da DRM. L'armatura anti-debug è una delle diverse misure usate da DRMK per rendere opaco il contenuto protetto. Una volta che il driver è pronto per essere testato, tuttavia, è possibile eseguire il debug delle funzionalità conformi a DRM usando la tecnica seguente:
Modificare temporaneamente il metodo SetState del flusso d'onda (ad esempio, vedere IMiniportWavePciStream::SetState) per chiamare IDrmAudioStream::SetContentId e impostare il membro CopyProtect del parametro DRMRIGHTS su TRUE.
Al termine del debug, ricordarsi di rimuovere la chiamata SetContentId .
Con questa tecnica, è possibile riprodurre contenuto non protetto come se fosse contenuto protetto da DRM, ma evitare di disabilitare il debugger.
Ad esempio, è possibile usare il debugger per verificare che il driver impedisca la registrazione del contenuto. Provare a ingannare il driver per abilitare la registrazione del flusso wave-out attraverso il MUX di acquisizione modificando le impostazioni del volume e del mute del programma SndVol32. I dispositivi di scorrimento devono riflettere le modifiche apportate alle impostazioni, che sono persistenti, ma il MUX di acquisizione deve continuare a disattivare il flusso di onda fino al termine della riproduzione del contenuto "protetto". Solo in questo caso le nuove impostazioni verranno applicate.