Partager via


DrmForwardContentToDeviceObject, fonction (drmk.h)

La fonction DrmForwardContentToDeviceObject accepte un objet d’appareil représentant un appareil auquel l’appelant a l’intention de transférer du contenu protégé. La fonction authentifie l’appareil et l’envoie aux droits DRM et ID de contenu que le système a attribués au contenu protégé.

Syntaxe

NTSTATUS DrmForwardContentToDeviceObject(
  [in]           ULONG        ContentId,
  [in, optional] PVOID        Reserved,
  [in]           PCDRMFORWARD DrmForward
);

Paramètres

[in] ContentId

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

[in, optional] Reserved

Réservé pour une utilisation ultérieure. Défini sur NULL .

[in] DrmForward

Pointeur vers une structure DRMFORWARD spécifiant un objet d’appareil et un objet de fichier qui identifient l’appareil cible et une broche audio KS sur cet appareil, respectivement. La structure contient également la valeur de contexte que la demande de propriété set KSPROPERTY_DRMAUDIOSTREAM_CONTENTIDtransmet à l’appareil.

Valeur de retour

DrmForwardContentToDeviceObject retourne STATUS_SUCCESS si l’appel a réussi. Sinon, elle retourne un code d’erreur approprié.

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.

Deux modules adjacents dans le chemin de données peuvent communiquer entre eux de plusieurs façons. Si le module en amont appelle le module en aval via IoCallDriver, le module en aval fait partie d’un pilote WDM. Dans ce cas, le module en amont appelle la fonction DrmForwardContentToDeviceObject pour fournir au système l’objet d’appareil représentant le module en aval. (Si les deux modules communiquent via l’interface COM du module en aval ou les gestionnaires de contenu, le module en amont appelle DrmForwardContentToInterface ou DrmAddContentHandlers à la place.)

L’appelant remplit l'DeviceObject, FileObjectet les membres Context de la structure DRMFORWARD à laquelle le paramètre DrmForward pointe. DrmForwardContentToDeviceObject utilise ces valeurs comme suit :

  • DeviceObject spécifie l’objet d’appareil qui représente le pilote (le module en aval). DrmForwardContentToDeviceObject utilise l’objet d’appareil pour authentifier le pilote. Si elle réussit, la fonction définit la propriété KSPROPERTY_DRMAUDIOSTREAM_CONTENTID sur l’appareil en envoyant une demande de propriété définie à une broche KS sur l’appareil.
  • FileObject spécifie l’épingle KS à laquelle DrmForwardContentToDeviceObject envoie la requête de propriété.
  • Context spécifie une valeur de contexte que l’appelant passe au pilote par le biais de la demande de propriété. DrmForwardContentToDeviceObject copie la valeur de contexte dans le descripteur de propriété de la requête. La valeur de contexte est généralement un pointeur vers une mémoire tampon contenant des données dans un format personnalisé que l’appelant et le pilote comprennent. Par convention, si le module en aval est un filtre KS, le Context membre pointe vers un objet de fichier qui spécifie l’épingle KS à laquelle la fonction DrmForwardContentToDeviceObject envoie la requête de propriété. En d’autres termes, le Context membre pointe vers le même objet de fichier que le membre FileObject. Les pilotes audio USB doivent définir le paramètre Context sur une valeur de USBD_PIPE_HANDLE.
La demande de propriété contient également l’ID de contenu DRM du paramètre ContentId et les droits de contenu DRM appartenant à cet ID de contenu. DrmForwardContentToDeviceObject copie ces valeurs dans la valeur de propriété de la requête. DrmForwardContentToDeviceObject n’utilise plus l’objet de l’appareil après le retour.

DrmForwardContentToDeviceObject effectue la même fonction que PcForwardContentToDeviceObject et IDrmPort2 ::ForwardContentToDeviceObject. Pour plus d’informations, consultez fonctions et interfaces DRM.

La propriété KSPROPERTY_DRMAUDIOSTREAM_CONTENTID affecte l’ID de contenu DRM et les droits de contenu DRM à une broche audio KS.

tableau récapitulatif de l’utilisation de

Avoir Poser Cible Type de descripteur de propriété Type de valeur de propriété
Non Oui Épingler

KSP_DRMAUDIOSTREAM_CONTENTID

KSDRMAUDIOSTREAM_CONTENTID

 

La valeur de propriété (données d’opération) est une structure KSDRMAUDIOSTREAM_CONTENTID qui spécifie l’ID de contenu DRM et les droits de contenu DRM du flux.

valeur de retour

Une demande de propriété KSPROPERTY_DRMAUDIOSTREAM_CONTENTID retourne un code d’état qui indique si le filtre KS peut appliquer les droits de contenu DRM spécifiés, comme indiqué dans le tableau suivant.
Code d’état Signification
STATUS_SUCCESS Le filtre audio KS applique les droits de contenu DRM spécifiés.
STATUS_NOT_IMPLEMENTED Le filtre KS ne peut pas appliquer les droits de contenu DRM spécifiés.
 

La fonction DrmForwardContentToDeviceObject utilise cette propriété pour définir l’ID de contenu DRM et les droits de contenu sur le flux audio entrant la broche KS cible de la requête de propriété.

Un filtre audio KS gère cette requête de propriété de façon synchrone. Si la requête retourne STATUS_SUCCESS, tous les nœuds audio KS en aval (voir nœuds de topologie audio) de la broche audio KS cible ont également été correctement configurés avec l’ID de contenu DRM et les droits de contenu DRM spécifiés. (Notez qu’un nœud en aval est un récepteur direct ou indirect pour le contenu audio qui transite par une broche audio.)

Le système DRM peut définir cette propriété à tout moment pendant la durée de vie de l’objet de fichier qui représente une broche audio KS. Si la demande ne réussit pas, l’ID de contenu DRM défini précédemment et les droits de contenu DRM restent en vigueur sur le flux audio KS.

Le gestionnaire de la propriété KSPROPERTY_DRMAUDIOSTREAM_CONTENTID doit vérifier que l’IRP de requête de propriété provient du mode noyau (autrement dit, vérifiez que le champ RequestorMode iRP est égal à KernelMode). Si l’IRP provient du mode utilisateur, le gestionnaire doit échouer à l’IRP et retourner le code d’état INVALID_DEVICE_REQUEST.

DrmForwardContentToDeviceObject est un point d’entrée dans le pilote système DRMK , Drmk.sys. DRMK envoie une demande de IOCTL_KS_PROPERTY pour la propriété KSPROPERTY_DRMAUDIOSTREAM_CONTENTID à l’PASSIVE_LEVEL IRQL.

Exigences

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

Voir aussi

DRMFORWARD

DrmAddContentHandlers

DrmForwardContentToInterface

IDrmPort2 ::ForwardContentToDeviceObject

IoCallDriver

KSPROPERTY_DRMAUDIOSTREAM_CONTENTID

PcForwardContentToDeviceObject