Função DrmForwardContentToDeviceObject (drmk.h)

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

Sintaxe

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

Parâmetros

[in] ContentId

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

[in, optional] Reserved

Reservado para uso futuro. Definido como NULL.

[in] DrmForward

Ponteiro para uma estrutura DRMFORWARD que especifica um objeto de dispositivo e um objeto de arquivo que identificam o dispositivo de destino e um pino de áudio KS nesse dispositivo, respectivamente. A estrutura também contém o valor de contexto que a solicitação KSPROPERTY_DRMAUDIOSTREAM_CONTENTIDset-property passa para o dispositivo.

Valor retornado

DrmForwardContentToDeviceObject retornará STATUS_SUCCESS se a chamada tiver sido bem-sucedida. Caso contrário, ele retorna um código de erro apropriado.

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 na extremidade upstream do caminho de dados e movendo-se downstream. À 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.

Dois módulos adjacentes no caminho de dados podem se comunicar entre si de uma das várias maneiras. Se o módulo upstream chamar o módulo downstream por meio do IoCallDriver, o módulo downstream faz parte de um driver WDM. Nesse caso, o módulo upstream chama a DrmForwardContentToDeviceObject função para fornecer ao sistema o objeto do dispositivo que representa o módulo downstream. (Se os dois módulos se comunicarem por meio da interface COM ou dos manipuladores de conteúdo do módulo downstream, o módulo upstream chamará DrmForwardContentToInterface ou DrmAddContentHandlers em vez disso.)

O chamador preenche os membros DeviceObject, FileObject e Context da estrutura DRMFORWARD para a qual o parâmetro DrmForward aponta. DrmForwardContentToDeviceObject usa esses valores da seguinte maneira:

  • DeviceObject especifica o objeto do dispositivo que representa o driver (o módulo downstream). DrmForwardContentToDeviceObject usa o objeto do dispositivo para autenticar o driver. Se tiver êxito, a função definirá a propriedade KSPROPERTY_DRMAUDIOSTREAM_CONTENTID no dispositivo enviando uma solicitação de propriedade definida para um pino KS no dispositivo.
  • FileObject especifica o pino KS para o qual DrmForwardContentToDeviceObject envia a solicitação de propriedade.
  • O contexto especifica um valor de contexto que o chamador passa para o driver por meio da solicitação de propriedade. DrmForwardContentToDeviceObject copia o valor de contexto no descritor de propriedade da solicitação. O valor de contexto normalmente é um ponteiro para um buffer que contém dados em algum formato personalizado que o chamador e o driver entendem. Por convenção, se o módulo downstream for um filtro KS, o membro contextual apontará para um objeto de arquivo que especifica o pino KS para o qual a DrmForwardContentToDeviceObject função envia a solicitação de propriedade. Em outras palavras, o membro contextual aponta para o mesmo objeto de arquivo que o membro FileObject . Os drivers de áudio USB devem definir o parâmetro Context como um valor USBD_PIPE_HANDLE.
A solicitação de propriedade também contém a ID de conteúdo drm do parâmetro ContentId e os direitos de conteúdo drm pertencentes a essa ID de conteúdo. DrmForwardContentToDeviceObject copia esses valores no valor da propriedade da solicitação. DrmForwardContentToDeviceObject não faz mais uso do objeto do dispositivo depois de retornar.

DrmForwardContentToDeviceObject executa a mesma função que PcForwardContentToDeviceObject e IDrmPort2::ForwardContentToDeviceObject. Para obter mais informações, consulte Funções e Interfaces do DRM.

A propriedade KSPROPERTY_DRMAUDIOSTREAM_CONTENTID atribui os direitos de ID de conteúdo drm e conteúdo drm a um pino de áudio KS.

Tabela resumo de uso

Obter Definir Destino Tipo de descritor de propriedade Tipo de valor da propriedade
No Yes Pin

KSP_DRMAUDIOSTREAM_CONTENTID

KSDRMAUDIOSTREAM_CONTENTID

 

O valor da propriedade (dados de operação) é uma estrutura KSDRMAUDIOSTREAM_CONTENTID que especifica a ID de conteúdo drm do fluxo e os direitos de conteúdo DRM.

Valor retornado

Uma solicitação de propriedade KSPROPERTY_DRMAUDIOSTREAM_CONTENTID retorna um código de status que indica se o filtro KS pode impor os direitos de conteúdo de DRM especificados, conforme mostrado na tabela a seguir.
Código de status Significado
STATUS_SUCCESS O filtro de áudio KS impõe os direitos de conteúdo de DRM especificados.
STATUS_NOT_IMPLEMENTED O filtro KS não pode impor os direitos de conteúdo de DRM especificados.
 

A função DrmForwardContentToDeviceObject usa essa propriedade para definir a ID de conteúdo drm e os direitos de conteúdo no fluxo de áudio inserindo o pino KS que é o destino da solicitação de propriedade.

Um filtro de áudio KS manipula essa solicitação de propriedade de forma síncrona. Se a solicitação retornar STATUS_SUCCESS, todos os nós de áudio KS downstream (consulte Nós de Topologia de Áudio) do pino de áudio KS de destino também foram configurados com êxito com a ID de conteúdo drm especificada e os direitos de conteúdo drm. (Observe que um nó downstream é um coletor direto ou indireto para o conteúdo de áudio que flui por meio de um pino de áudio.)

O sistema DRM pode definir essa propriedade a qualquer momento durante o tempo de vida do objeto de arquivo que representa um pino de áudio KS. Se a solicitação não tiver êxito, os direitos de conteúdo drm definidos anteriormente e os direitos de conteúdo drm permanecerão em vigor no fluxo de áudio KS.

O manipulador da propriedade KSPROPERTY_DRMAUDIOSTREAM_CONTENTID deve verificar se o IRP de solicitação de propriedade se origina no modo kernel (ou seja, confirme se o campo RequestorMode do IRP é igual a KernelMode). Se o IRP for originado no modo de usuário, o manipulador deverá falhar no IRP e retornar o código de status INVALID_DEVICE_REQUEST.

DrmForwardContentToDeviceObject é um ponto de entrada no driver do sistema DRMK, Drmk.sys. O DRMK envia uma solicitação IOCTL_KS_PROPERTY para a propriedade KSPROPERTY_DRMAUDIOSTREAM_CONTENTID no PASSIVE_LEVEL IRQL.

Requisitos

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

Confira também

DRMFORWARD

DrmAddContentHandlers

DrmForwardContentToInterface

IDrmPort2::ForwardContentToDeviceObject

IoCallDriver

KSPROPERTY_DRMAUDIOSTREAM_CONTENTID

PcForwardContentToDeviceObject