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 ele a ID de conteúdo e os direitos de DRM que o sistema atribuiu 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. Defina como NULL.
[in] DrmForward
Ponteiro para uma estrutura DRMFORWARD especificando 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 o KSPROPERTY_DRMAUDIOSTREAM_CONTENTIDsolicitação set-property passa para o dispositivo.
Retornar valor
DrmForwardContentToDeviceObject
retornará STATUS_SUCCESS se a chamada tiver sido bem-sucedida. Caso contrário, ele retornará 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 no final 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 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 de 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.)
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 de dispositivo que representa o driver (o módulo downstream).
DrmForwardContentToDeviceObject
usa o objeto de dispositivo para autenticar o driver. Se tiver êxito, a função definirá a propriedade KSPROPERTY_DRMAUDIOSTREAM_CONTENTID no dispositivo enviando uma solicitação set-property 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 para o 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 Context apontará para um objeto de arquivo que especifica o pino KS para o qual aDrmForwardContentToDeviceObject
função envia a solicitação de propriedade. Em outras palavras, o membro Context 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.
DrmForwardContentToDeviceObject
copia esses valores para o valor da propriedade da solicitação. DrmForwardContentToDeviceObject
não faz mais uso do objeto de 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 drm.
A propriedade KSPROPERTY_DRMAUDIOSTREAM_CONTENTID atribui a ID de conteúdo drm e os direitos de conteúdo DRM a um pino de áudio KS.
Tabela de Resumo de Uso
Get | Set | Destino | Tipo de descritor de propriedade | Tipo de valor da propriedade |
---|---|---|---|---|
No | Yes | Pin |
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 status que indica se o filtro KS pode impor os direitos de conteúdo 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 drm especificados. |
STATUS_NOT_IMPLEMENTED | O filtro KS não pode impor os direitos de conteúdo 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 for bem-sucedida, os direitos de conteúdo DRM e ID de conteúdo DRM definidos anteriormente permanecerão em vigor no fluxo de áudio do 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, confirmar 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 status código INVALID_DEVICE_REQUEST.
DrmForwardContentToDeviceObject é um ponto de entrada no driver do sistema DRMK, Drmk.sys. O DRMK envia uma solicitação de IOCTL_KS_PROPERTY para a propriedade KSPROPERTY_DRMAUDIOSTREAM_CONTENTID no PASSIVE_LEVEL IRQL.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | drmk.h (inclua Drmk.h) |
Biblioteca | Drmk.lib |
IRQL | PASSIVE_LEVEL |
Confira também
IDrmPort2::ForwardContentToDeviceObject