Função DrmForwardContentToInterface (drmk.h)

A DrmForwardContentToInterface função aceita um ponteiro para a interface COM de um objeto para o qual o chamador pretende encaminhar conteúdo protegido. A função autentica o objeto e envia ao objeto a ID de conteúdo e os direitos de DRM atribuídos pelo sistema ao conteúdo protegido.

Sintaxe

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

Parâmetros

[in] ContentId

Especifica a ID de conteúdo drm. Esse parâmetro identifica um fluxo de áudio KS protegido.

[in] pUnknown

Ponteiro para uma interface COM que recebe diretamente dados de fluxo de áudio KS para um filtro de áudio KS.

[in] NumMethods

Especifica o número total de métodos na interface COM para o qual pUnknown aponta, incluindo todos os métodos em suas interfaces base.

Retornar valor

DrmForwardContentToInterface retornará STATUS_SUCCESS se a chamada tiver sido bem-sucedida. Caso contrário, o método retorna um código de erro apropriado. A tabela a seguir mostra alguns dos possíveis códigos de retorno status.

Código de retorno Descrição
STATUS_NOT_IMPLEMENTED
Indica que o fluxo de áudio KS associado ao pUnknown não dá suporte aos direitos de conteúdo DRM atribuídos ao ContentId.

Comentários

Antes de permitir que o conteúdo protegido flua por um caminho de dados, o sistema verifica se o caminho de dados é seguro. Para fazer isso, o sistema autentica cada módulo no caminho de dados começando no final upstream do caminho de dados e movendo-se para baixo. À medida que cada módulo é autenticado, esse módulo fornece ao sistema informações sobre o próximo módulo no caminho de dados para que ele também possa ser autenticado. Para ser autenticado com êxito, o arquivo binário de um módulo deve ser assinado como compatível com DRM.

Se dois módulos adjacentes no caminho de dados se comunicarem entre si por meio da interface COM do módulo downstream, o módulo upstream chamará a DrmForwardContentToInterface função para fornecer ao sistema um ponteiro para a interface COM. (Se os dois módulos se comunicarem por meio da função IoCallDriver ou dos manipuladores de conteúdo do módulo downstream, o módulo upstream chamará DrmForwardContentToDeviceObject ou DrmAddContentHandlers em vez disso.)

DrmForwardContentToInterface autentica o módulo que implementa os métodos na interface COM apontada por pUnknown. (Se os métodos forem distribuídos entre vários módulos, a função autentica todos esses módulos.) Essa interface definida pelo fornecedor deve ser compreendida pelo módulo que chama a interface e o módulo que implementa a interface. DrmForwardContentToInterface não faz suposições sobre essa interface além de que ela é derivada de IUnknown.

Se DrmForwardContentToInterface for bem-sucedido na autenticação do driver ou da biblioteca, ele fará o seguinte:

  • Consulta a interface pUnknown para sua interface IDrmAudioStream . Observe que, embora o DrmForwardContentToInterface autentique todos os métodos na interface pUnknown , ele não chama nenhum método na interface pUnknown diferente dos métodos IUnknown base.
  • Chama IDrmAudioStream::SetContentId para definir a ID de conteúdo drm e os direitos de conteúdo DRM no fluxo de áudio. Antes de retornar, DrmForwardContentToInterface libera a interface IDrmAudioStream .
O parâmetro pUnknown segue as convenções de contagem de referência para objetos COM.

DrmForwardContentToInterface executa a mesma função que PcForwardContentToInterface e IDrmPort::ForwardContentToInterface. Para obter mais informações, consulte Funções e interfaces drm.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho drmk.h (inclua Drmk.h)
Biblioteca Drmk.lib
IRQL PASSIVE_LEVEL

Confira também

DrmAddContentHandlers

DrmForwardContentToDeviceObject

IDrmAudioStream

IDrmAudioStream::SetContentId

IDrmPort::ForwardContentToInterface

IoCallDriver

PcForwardContentToInterface