Développement et débogage de pilotes DRM
La liste de contrôle suivante peut aider les rédacteurs de pilotes à éviter certains pièges courants :
Si le pilote désactive la capture en ondes sortantes et la sortie S/PDIF pendant la lecture du contenu protégé par DRM, le pilote doit se rappeler de les activer à nouveau une fois le contenu protégé par DRM lu (et la mémoire tampon DRM est détruite).
Si l’appareil effectue le mélange de matériel, le pilote doit effectuer le suivi de toutes les modifications apportées aux droits d’utilisation composite qui se produisent lorsque des flux sont ajoutés ou supprimés de la combinaison. Chaque fois que la combinaison inclut un ou plusieurs flux DRM protégés par copie, par exemple, la capture doit être désactivée. Il doit rester muet si la capture est activée pendant la lecture du mix protégé.
Après une modification apportée au graphique de filtre ou aux paramètres de propriété associés à un flux, le pilote peut avoir besoin de mettre à jour immédiatement les paramètres de protection contre la copie et d’activation de sortie du flux. Le pilote doit synchroniser son opération pour empêcher la copie du contenu protégé dans une mémoire tampon de capture ou une sortie numérique. Par exemple, lorsque le flux d’entrée d’un multiplexeur de capture change, le pilote ne doit pas autoriser le contenu sécurisé à devenir vulnérable pendant le temps nécessaire pour activer et désactiver le son.
Le pilote système DRMK empêche le débogueur du noyau de se connecter pendant la lecture du contenu protégé par DRM. L’armure anti-débogage est l’une des mesures que DRMK utilise pour rendre le contenu protégé opaque. Toutefois, une fois que votre pilote est prêt à être testé, vous pouvez déboguer ses fonctionnalités compatibles DRM à l’aide de la technique suivante :
Modifiez temporairement la méthode SetState du flux d’ondes (par exemple, consultez IMiniportWavePciStream::SetState) pour appeler IDrmAudioStream::SetContentId et définir le membre CopyProtect du paramètre DRMRIGHTS sur TRUE.
Une fois le débogage terminé, n’oubliez pas de supprimer l’appel SetContentId .
Avec cette technique, vous pouvez lire du contenu non protégé comme s’il s’agissait d’un contenu protégé par DRM, mais évitez de désactiver le débogueur.
Par exemple, vous pouvez utiliser le débogueur pour vérifier que votre pilote empêche l’enregistrement du contenu. Essayez d’inciter le pilote à activer l’enregistrement du flux de vagues sortantes via l’expérience MUX de capture en modifiant les paramètres de volume et de muet du programme SndVol32. Les curseurs doivent refléter les modifications que vous apportez à leurs paramètres, qui sont persistantes, mais l’expérience MUX de capture doit continuer à désactiver le flux de vagues jusqu’à la fin de la lecture du contenu « protégé ». Ce n’est qu’alors que les nouveaux paramètres doivent prendre effet.