Condividi tramite


Funzione DrmForwardContentToInterface (drmk.h)

La funzione DrmForwardContentToInterface accetta un puntatore all'interfaccia COM di un oggetto a cui il chiamante intende inoltrare contenuto protetto. La funzione autentica l'oggetto e invia all'oggetto l'ID contenuto e i diritti DRM assegnati dal sistema al contenuto protetto.

Sintassi

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

Parametri

[in] ContentId

Specifica l'ID contenuto DRM. Questo parametro identifica un flusso audio KS protetto.

[in] pUnknown

Puntatore a un'interfaccia COM che riceve direttamente i dati del flusso audio KS per un filtro audio KS.

[in] NumMethods

Specifica il numero totale di metodi nell'interfaccia COM a cui pUnknown punta, inclusi tutti i metodi nelle interfacce di base.

Valore restituito

DrmForwardContentToInterface restituisce STATUS_SUCCESS se la chiamata ha avuto esito positivo. In caso contrario, il metodo restituisce un codice di errore appropriato. La tabella seguente illustra alcuni dei possibili codici di stato restituiti.

Codice restituito Descrizione
STATUS_NOT_IMPLEMENTED
Indica che il flusso audio KS associato a pUnknown non supporta i diritti di contenuto DRM assegnati a ContentId.

Osservazioni

Prima di consentire il flusso del contenuto protetto attraverso un percorso dati, il sistema verifica che il percorso dati sia sicuro. A tale scopo, il sistema esegue l'autenticazione di ogni modulo nel percorso dati a partire dalla fine upstream del percorso dati e lo spostamento a valle. Quando ogni modulo viene autenticato, tale modulo fornisce le informazioni di sistema sul modulo successivo nel percorso dati in modo che possa anche essere autenticato. Per l'autenticazione corretta, il file binario di un modulo deve essere firmato come conforme a DRM.

Se due moduli adiacenti nel percorso dati comunicano tra loro tramite l'interfaccia COM del modulo downstream, il modulo upstream chiama la funzione DrmForwardContentToInterface per fornire al sistema un puntatore all'interfaccia COM. Se i due moduli comunicano tramite la funzione IoCallDriver o i gestori di contenuto del modulo downstream, il modulo upstream chiama DrmForwardContentToDeviceObject o DrmAddContentHandlers.

DrmForwardContentToInterface autentica il modulo che implementa i metodi nell'interfaccia COM a cui punta pUnknown. Se i metodi vengono distribuiti tra più moduli, la funzione autentica tutti questi moduli. Questa interfaccia definita dal fornitore deve essere compresa sia dal modulo che chiama l'interfaccia che dal modulo che implementa l'interfaccia. DrmForwardContentToInterface non presuppone che questa interfaccia non sia derivata da IUnknown.

Se DrmForwardContentToInterface ha esito positivo nell'autenticazione del driver o della libreria, esegue le operazioni seguenti:

  • Esegue una query sull'interfaccia pUnknown per l'interfaccia IDrmAudioStream. Si noti che anche se il DrmForwardContentToInterface autentica tutti i metodi nell'interfaccia pUnknown, non chiama metodi nell'interfaccia pUnknown diverso dai metodi di base IUnknown.
  • Chiama IDrmAudioStream::SetContentId per impostare l'ID contenuto DRM e i diritti di contenuto DRM nel flusso audio. Prima di tornare, DrmForwardContentToInterface rilascia l'interfaccia IDrmAudioStream.
Il parametro pUnknown segue le convenzioni di conteggio dei riferimenti per gli oggetti COM.

DrmForwardContentToInterface esegue la stessa funzione di PcForwardContentToInterface e IDrmPort::ForwardContentToInterface. Per altre informazioni, vedere funzioni DRM e interfacce.

Fabbisogno

Requisito Valore
piattaforma di destinazione Universale
intestazione drmk.h (include Drmk.h)
libreria Drmk.lib
IRQL PASSIVE_LEVEL

Vedere anche

DrmAddContentHandlers

DrmForwardContentToDeviceObject

IDrmAudioStream

IDrmAudioStream::SetContentId

IDrmPort::ForwardContentToInterface

IoCallDriver

PcForwardContentToInterface