Trabalhando com níveis de proteção de saída
[A funcionalidade associada a esta página, Windows Media Format 11 SDK, é uma funcionalidade herdada. Foi substituído por Source Reader e Sink Writer. Source Reader e Sink Writer foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize o Leitor de Fontes e o Gravador de Destino em vez do SDK do Windows Media Format 11 , sempre que 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 níveis de proteção de saída (OPLs). As OPLs permitem que um criador de licenças permita algumas ações apenas em dispositivos com tecnologias específicas. Os benefícios de usar 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, os OPLs são expansíveis para acomodar tecnologias futuras. Você pode oferecer suporte a essas licenças em seus aplicativos usando os métodos da interfaceIWMDRMReader2.
Para ler arquivos protegidos por uma licença que especifica OPLs, você deve verificar a 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 um caminho de áudio seguro para reproduzi-lo.
Configurando o leitor para avaliar os níveis de proteção de saída
Antes de verificar OPLs para ficheiros carregados no leitor, 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 serã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étodoIWMDRMReader2::GetCopyOutputLevels. Os dados que você recebe 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 que são classificadas em uma OPL inferior à base e outra para tecnologias que são classificadas como iguais ou superiores à OPL base, mas que são restritas pela licença. Você deve verificar as inclusões e exclusões para garantir que a tecnologia que seu aplicativo está usando é permitida pela licença.
Avaliando os níveis de proteção de saída de jogo
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 numa estrutura de DRM_MINIMUM_OUTPUT_PROTECTION_LEVELS (o membro minOPL de DRM_PLAY_OPL), que define o OPL mínimo necessário para reproduzir conteúdo em uma variedade de formatos. Você deve verificar qual membro é responsável pelo tipo de formatos de saída que a sua aplicação suporta.
A estrutura DRM_PLAY_OPL define dois tipos de restrições: redução de amostragem necessária e identificadores de proteção de saída de vídeo permitidos.
A amostragem reduzida necessária é definida como uma lista de identificadores de tecnologia de saída (o oplIdDownsample membro de DRM_PLAY_OPL) que, se usados, podem receber o conteúdo para reprodução somente se o conteúdo primeiro for reduzido 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 uma.
Tratamento de várias licenças
Alguns ficheiros podem ter várias licenças associadas a eles na loja de licenças local. Ao avaliar OPLs para um ficheiro que está a ler, pode verificar se existem 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 suportar. Nesse caso, é importante verificar se há licenças adicionais, pois pode existir uma licença que não especifique OPLs.
Observação DRM não é suportado pela versão baseada em x64 deste SDK.
Tópicos relacionados