Trabalhando com níveis de proteção de saída

[O recurso associado a esta página, Windows Media Format 11 SDK, é um recurso herdado. Ele foi substituído por Leitor de Origem e Gravador de Coletor. O Leitor de Origem e o Gravador de Coletor foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o Leitor de Origem e o Gravador de Coletor em vez do SDK do Windows Media Format 11, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

As licenças criadas usando o SDK do Windows Media Rights Manager 10 podem especificar restrições de ação usando OPLs (níveis de proteção de saída). As OPLs permitem que um criador de licença permita algumas ações somente em dispositivos com tecnologias específicas. Os benefícios do uso de OPLs é que você obtém mais flexibilidade na criação de restrições de licença do que as versões anteriores. Além disso, as OPLs são expansíveis para acomodar tecnologias futuras. Você pode dar suporte a essas licenças em seus aplicativos usando os métodos da interface IWMDRMReader2 .

Para ler arquivos protegidos por uma licença que especifica OPLs, você deve marcar o OPL para a ação desejada. A tecnologia de saída que seu aplicativo está usando deve ser permitida pela OPL na licença. Por exemplo, algumas licenças para áudio protegido podem exigir que você use o caminho de áudio seguro para reproduzi-lo.

Configurando o leitor para avaliar os níveis de proteção de saída

Antes de marcar OPLs para arquivos carregados no leitor, você deve chamar o método IWMDRMReader2::SetEvaluateOutputLevelLicenses, passando TRUE para o parâmetro fEvaluate. Se você não chamar esse método, as licenças que exigem OPLs não estarão visíveis para seu aplicativo.

Avaliando os níveis de proteção de saída de cópia

Para obter níveis de proteção de saída para a ação de cópia, chame o método IWMDRMReader2::GetCopyOutputLevels . Os dados recebidos da chamada são armazenados em uma estrutura DRM_COPY_OPL . A estrutura contém um nível de proteção de saída base, que especifica o nível mínimo de saída para a ação de cópia na licença. No entanto, a estrutura DRM_COPY_OPL também contém duas listas de identificadores de tecnologia: uma para tecnologias permitidas classificadas em uma OPL inferior à base e outra para tecnologias classificadas como iguais ou superiores à OPL base, mas que são restritas pela licença. Você deve marcar as inclusões e exclusões para garantir que a tecnologia que seu aplicativo está usando seja permitida pela licença.

Avaliando os níveis de proteção de saída de reprodução

Para obter níveis de proteção de saída para a ação de reprodução, chame o método IWMDRMReader2::GetPlayOutputLevels . Os dados recebidos da chamada são armazenados em uma estrutura DRM_PLAY_OPL . A estrutura contém várias outras estruturas. Os níveis de proteção de saída base para a ação de reprodução são armazenados em uma estrutura DRM_MINIMUM_OUTPUT_PROTECTION_LEVELS (o membro minOPL de DRM_PLAY_OPL), que define o OPL mínimo necessário para reproduzir o conteúdo em uma variedade de formatos. Você deve marcar o membro para o tipo de formatos de saída que seu aplicativo fornece.

A estrutura de DRM_PLAY_OPL define dois tipos de restrições: amostragem inativa necessária e identificadores de proteção de saída de vídeo permitidos.

A amostragem down necessária é definida como uma lista de identificadores de tecnologia de saída (o membro oplIdDownsample de DRM_PLAY_OPL) que, se usado, pode receber o conteúdo para reprodução somente se o conteúdo for primeiro amostrado para baixo para uma taxa de bits mais baixa.

Os identificadores de proteção de saída de vídeo permitidos são definidos como uma lista de tecnologias de saída de vídeo com informações de configuração para cada um.

Manipulando várias licenças

Alguns arquivos podem ter várias licenças associadas a eles no repositório de licenças local. Ao avaliar OPLs para um arquivo que está lendo, você pode marcar para licenças adicionais chamando o método IWMDRMReader2::TryNextLicense. Você deve continuar tentando licenças até encontrar uma que permita a ação que deseja executar ou até que TryNextLicense retorne DRM_S_FALSE, o que indica que não há mais licenças.

Em alguns casos, um arquivo pode ter uma licença associada que requer uma OPL que seu aplicativo não pode dar suporte. Nesse caso, é importante marcar para licenças adicionais porque pode existir uma licença que não especifique OPLs.

Nota O DRM não é compatível com a versão baseada em x64 deste SDK.

Habilitando o suporte a DRM

IWMDRMReader2 Interface