Partager via


DrmForwardContentToInterface, fonction (drmk.h)

La fonction DrmForwardContentToInterface 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 aux droits DRM et ID de contenu attribués par le système 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 des 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 qui pUnknown pointe vers, y compris toutes les méthodes de ses interfaces de base.

Valeur de retour

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 d’état de retour possibles.

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

Remarques

Avant d’autoriser le contenu protégé à circuler via 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 à partir de la fin en amont du chemin de données et se déplace en aval. À mesure que chaque module est authentifié, ce module fournit des informations système sur le module suivant dans le chemin de données afin qu’il puisse également être authentifié. Pour être authentifié avec succès, 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 en amont appelle la fonction DrmForwardContentToInterface 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 en amont appelle DrmForwardContentToDeviceObject ou DrmAddContentHandlers à la place.)

DrmForwardContentToInterface authentifie le module qui implémente les méthodes de 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 par le module qui appelle l’interface et le module qui implémente l’interface. DrmForwardContentToInterface ne fait aucune hypothèse concernant cette interface autre que celle qui est dérivée de IUnknown.

Si DrmForwardContentToInterface réussit à authentifier le pilote ou la bibliothèque, procédez comme suit :

  • Interroge l’interface pUnknown pour son interface IDrmAudioStream. Notez que même si la DrmForwardContentToInterface authentifie toutes les méthodes de l’interface pUnknown, elle n’appelle aucune méthode dans l’interface pUnknown autre que les méthodes de base IUnknown.
  • 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 de référence pour les objets COM.

DrmForwardContentToInterface effectue la même fonction que PcForwardContentToInterface et IDrmPort ::ForwardContentToInterface. Pour plus d’informations, consultez fonctions et interfaces DRM.

Exigences

Exigence Valeur
plateforme cible Universel
d’en-tête drmk.h (include Drmk.h)
bibliothèque Drmk.lib
IRQL PASSIVE_LEVEL

Voir aussi

DrmAddContentHandlers

DrmForwardContentToDeviceObject

IDrmAudioStream

IDrmAudioStream ::SetContentId

IDrmPort ::ForwardContentToInterface

IoCallDriver

PcForwardContentToInterface