Partager via


Fonction DrmForwardContentToInterface (drmk.h)

La DrmForwardContentToInterface fonction accepte un pointeur vers l’interface COM d’un objet vers lequel l’appelant a l’intention de transférer du contenu protégé. La fonction authentifie l’objet et envoie l’objet l’ID de contenu et les droits DRM que le système a attribués au contenu protégé.

Syntaxe

NTSTATUS DrmForwardContentToInterface(
  [in] ULONG    ContentId,
  [in] PUNKNOWN pUnknown,
  [in] ULONG    NumMethods
);

Paramètres

[in] ContentId

Spécifie l’ID de contenu DRM. Ce paramètre identifie un flux audio KS protégé.

[in] pUnknown

Pointeur vers une interface COM qui reçoit directement les données de flux audio KS pour un filtre audio KS.

[in] NumMethods

Spécifie le nombre total de méthodes dans l’interface COM vers lesquelles pUnknown pointe, y compris toutes les méthodes de ses interfaces de base.

Valeur retournée

DrmForwardContentToInterface retourne STATUS_SUCCESS si l’appel a réussi. Sinon, la méthode retourne un code d’erreur approprié. Le tableau suivant présente certains des codes status de retour possibles.

Code de retour Description
STATUS_NOT_IMPLEMENTED
Indique que le flux audio KS associé à pUnknown ne prend pas en charge les droits de contenu DRM attribués à ContentId.

Remarques

Avant d’autoriser le flux de contenu protégé dans un chemin de données, le système vérifie que le chemin d’accès aux données est sécurisé. Pour ce faire, le système authentifie chaque module dans le chemin de données en commençant à l’amont fin du chemin de données et en se déplaçant en aval. Comme chaque module est authentifié, ce module fournit au système des informations sur le module suivant dans le chemin des données afin qu’il puisse également être authentifié. Pour être correctement authentifié, le fichier binaire d’un module doit être signé en tant que conforme DRM.

Si deux modules adjacents dans le chemin de données communiquent entre eux via l’interface COM du module en aval, le module amont appelle la DrmForwardContentToInterface fonction pour fournir au système un pointeur vers l’interface COM. (Si les deux modules communiquent via la fonction IoCallDriver ou les gestionnaires de contenu du module en aval, le module amont appelle DrmForwardContentToDeviceObject ou DrmAddContentHandlers à la place.)

DrmForwardContentToInterface authentifie le module qui implémente les méthodes dans l’interface COM pointée par pUnknown. (Si les méthodes sont distribuées entre plusieurs modules, la fonction authentifie tous ces modules.) Cette interface définie par le fournisseur doit être comprise à la fois par le module qui appelle l’interface et par le module qui implémente l’interface. DrmForwardContentToInterface ne fait aucune hypothèse concernant cette interface, sauf qu’elle est dérivée de IUnknown.

Si DrmForwardContentToInterface l’authentification du pilote ou de la bibliothèque réussit, elle effectue les opérations suivantes :

  • Interroge l’interface pUnknown pour son interface IDrmAudioStream . Notez que bien que le DrmForwardContentToInterface authentifie toutes les méthodes de l’interface pUnknown , il n’appelle aucune méthode dans l’interface pUnknown autre que les méthodes IUnknown de base.
  • Appelle IDrmAudioStream ::SetContentId pour définir l’ID de contenu DRM et les droits de contenu DRM sur le flux audio. Avant de retourner, DrmForwardContentToInterface libère l’interface IDrmAudioStream .
Le paramètre pUnknown suit les conventions de comptage des références pour les objets COM.

DrmForwardContentToInterface exécute la même fonction que PcForwardContentToInterface et IDrmPort ::ForwardContentToInterface. Pour plus d’informations, consultez Fonctions et interfaces DRM.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête drmk.h (inclure Drmk.h)
Bibliothèque Drmk.lib
IRQL PASSIVE_LEVEL

Voir aussi

DrmAddContentHandlers

DrmForwardContentToDeviceObject

IDrmAudioStream

IDrmAudioStream ::SetContentId

IDrmPort ::ForwardContentToInterface

IoCallDriver

PcForwardContentToInterface