Funções e interfaces DRM

Os componentes do driver do sistema Drmk.sys e Portcls.sys implementar uma coleção de funções e interfaces DRM que os drivers usam para gerenciar os direitos digitais do conteúdo de áudio de streaming de kernel. O componente Drmk.sys implementa várias funções DrmXxx e Portcls.sys implementa um conjunto específico de DRM de funções PcXxx e também as interfaces IDrmPort e IDrmPort2 .

As seguintes funções DRM estão disponíveis:

DrmAddContentHandlers

Fornece ao sistema uma interface de driver que consiste em uma lista de funções para lidar com conteúdo protegido. DrmCreateContentMixed

Cria uma ID de conteúdo DRM para identificar um fluxo de áudio KS que contém conteúdo misto de vários fluxos de entrada. DrmDestroyContent

Exclui uma ID de conteúdo DRM. DrmForwardContentToDeviceObject

Autentica um driver e envia a ID de conteúdo drm e os direitos de conteúdo atribuídos pelo sistema a um fluxo que contém conteúdo protegido. DrmForwardContentToFileObject

Função obsoleta. DrmForwardContentToInterface

Autentica um objeto driver e envia a ID de conteúdo drm e os direitos de conteúdo atribuídos pelo sistema a um fluxo que contém conteúdo protegido. DrmGetContentRights

Recupera os direitos de conteúdo drm atribuídos pelo sistema a uma ID de conteúdo DRM. As funções nesta lista são declaradas no arquivo de cabeçalho Drmk.h. O driver do sistema DRMK no modo kernel, Drmk.sys, exporta os pontos de entrada para essas funções.

No Windows XP e posterior, o driver do sistema PortCls, Portcls.sys, exporta um conjunto diferente de pontos de entrada para o mesmo conjunto de funções DRM. Os nomes das funções PortCls são semelhantes aos da lista anterior, exceto pelo uso do prefixo Pc em vez de Drm:

PcAddContentHandlers

PcCreateContentMixed

PcDestroyContent

PcForwardContentToDeviceObject

PcForwardContentToFileObject

PcForwardContentToInterface

PcGetContentRights

Esses nomes de função são declarados no arquivo de cabeçalho Portcls.h. Os pontos de entrada no Portcls.sys não fazem nada mais do que chamar as funções correspondentes em Drmk.sys. Os pontos de entrada PortCls são fornecidos simplesmente para conveniência para que um driver de áudio que já esteja conectado ao Portcls.sys não precise carregar explicitamente Drmk.sys.

No Windows XP e posterior, o mesmo conjunto de funções também é exposto como métodos nas interfaces IDrmPort e IDrmPort2 :

IDrmPort2::AddContentHandlers

IDrmPort::CreateContentMixed

IDrmPort::D estroyContent

IDrmPort2::ForwardContentToDeviceObject

IDrmPort::ForwardContentToFileObject

IDrmPort::ForwardContentToInterface

IDrmPort::GetContentRights

As interfaces IDrmPort e IDrmPort2 são declaradas no arquivo de cabeçalho Portcls.h e implementadas em Portcls.sys. Esses métodos não fazem nada mais do que chamar as funções correspondentes em Drmk.sys. Um driver de miniporto obtém uma referência a uma interface IDrmPortx consultando seu driver de porta para essa interface. A vantagem de usar uma interface IDrmPortx em vez das funções Correspondentes drmXxx ou PcXxx é que o driver pode usar essa consulta para determinar em tempo de execução se a versão do sistema operacional dá suporte ou não ao DRM. Isso simplifica a tarefa de escrever um único driver que pode ser executado em versões mais recentes do Windows que dão suporte ao DRM e em versões mais antigas que não. IDrmPort2 é derivado de IDrmPort e fornece dois métodos adicionais.

Os drivers de porta WaveCyclic e WavePci usam a interface IDrmAudioStream se houver suporte para o driver de miniporte correspondente. O driver de porta chama o método IDrmAudioStream::SetContentId para atribuir proteção DRM ao conteúdo digital em um fluxo de áudio.

A macro DEFINE_DRMRIGHTS_DEFAULT , que é definida no arquivo de cabeçalho Drmk.h, inicializa os membros de uma estrutura DRMRIGHTS com seus valores padrão.