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 fonctionDrmForwardContentToDeviceObject
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.
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 |
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
IDrmPort2 ::ForwardContentToDeviceObject