ID de contenu et droits de contenu
Un ID de contenu (identificateur) est une valeur ULONG que le pilote système DRMK génère au moment de l’exécution pour identifier le contenu protégé par DRM dans le flux de données audio qui alimente une broche particulière.
Les droits de contenu sont une représentation numérique des droits accordés par le fournisseur de contenu à l’utilisateur pour lire et copier du contenu protégé par DRM. Les droits de contenu sont spécifiés sous la forme d’une structure DRMRIGHTS que DRMK transmet au pilote audio.
DRMRIGHTS contient deux indicateurs : DigitalOutputDisable et CopyProtect. Si l’indicateur DigitalOutputDisable est défini, le pilote doit désactiver toutes les sorties numériques qui se connectent à des appareils externes (via un connecteur S/PDIF, par exemple). Si l’indicateur CopyProtect est défini, le pilote doit désactiver les fonctionnalités susceptibles de permettre l’enregistrement d’une copie persistante du contenu sécurisé sur le disque ou dans toute autre forme de stockage non volatile. Par exemple, le matériel audio classique permet d’acheminer un signal de lecture via le canal de capture. Si ce signal est sous forme numérique, le signal capturé peut être une copie numérique parfaite du signal d’entrée. Si la combinaison de lecture contient des données provenant d’un flux dont l’indicateur CopyProtect est défini, le pilote doit désactiver le chemin d’accès lecture-capture.
Un pilote audio compatible DRM doit prendre en charge l’interface IDrmAudioStream sur ses objets de pilote miniport WaveCyclique et WavePci, qui exposent des broches récepteur pour le rendu des données audio. Pour obtenir une référence à un objet IDrmAudioStream à partir du pilote, DRMK appelle la méthode QueryInterface sur la broche. La broche a une interface de type IMiniportWaveCycliqueStream ou IMiniportWavePciStream. L’interface IDrmAudioStream ne prend en charge qu’une seule méthode, IDrmAudioStream::SetContentId (en plus des trois méthodes IUnknown ). Lorsque DRMK appelle SetContentId, il transmet un ID de contenu et des droits de contenu, que le pilote associe au flux de données de l’épingle.
Au lieu d’appeler directement les fonctions DRM dans Drmk.sys, un pilote miniport WaveCyclique ou WavePci peut accéder aux fonctions DRM via l’interface IDrmPort2 (IDrmPort2 est dérivé de la classe de base IDrmPort). Dans Microsoft Windows XP et versions ultérieures, les pilotes de port WaveCyclique et WavePci prennent en charge IDrmPort2. Le pilote miniport obtient une référence à l’interface IDrmPort2 du pilote de port en appelant la méthode QueryInterface de l’objet port avec reFIID IID_IDrmPort2.
Certains pilotes audio prennent en charge le mélange de matériel et peuvent gérer plusieurs flux de données d’entrée en même temps. Ce type de pilote doit suivre à la fois les ID de contenu pour les flux individuels et les droits de contenu composite de tous les flux. Le pilote appelle IDrmPort::CreateContentMixed pour déterminer les droits composites d’un flux mixte et créer un ID de contenu pour identifier ce flux. Lorsque le pilote a terminé d’utiliser l’ID de contenu, il doit appeler IDrmPort::D estroyContent pour supprimer l’ID de contenu.
Chaque fois qu’un flux d’entrée est ajouté ou supprimé d’un mélangeur, le pilote doit supprimer l’ID de contenu de l’ancien mélange et créer un nouvel ID de contenu pour la nouvelle combinaison. Avant de supprimer un ancien ID de contenu, le pilote doit d’abord transférer avec succès un nouvel ID de contenu à tous les flux vers lesquels il a précédemment transféré l’ancien ID de contenu. Pour plus d’informations, consultez Transfert des ID de contenu DRM.