Partilhar via


Executando a individualização de DRM

[A funcionalidade associada a esta página, Windows Media Format 11 SDK, é uma funcionalidade herdada. Foi substituído por "Source Reader" e "Sink Writer". do Source Reader e Sink Writer foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize Source Reader e Sink Writer 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.]

A individualização é o processo de atualizar o componente DRM no computador cliente, criptografá-lo e torná-lo exclusivo. Quando um computador é individualizado, o componente DRM está vinculado ao computador e não poderá decodificar conteúdo em nenhum outro computador. As APIs estendidas do cliente DRM do Windows Media fornecem suporte para individualizar o componente DRM em computadores cliente.

A individualização é realizada chamando o método IWMDRMSecurity::PerformSecurityUpdate. Você pode chamar PerformSecurityUpdate para que ele seja individualizado somente se a versão no servidor for mais recente do que a instalada no computador cliente, ou você pode forçar a individualização sem considerar as versões de segurança relativas. A bandeira para a individualização conforme necessário é WMDRM_SECURITY_PERFORM_INDIV. A bandeira da individualização forçada é WMDRM_SECURITY_PERFORM_FORCE_INDIV.

PerformSecurityUpdate é uma chamada assíncrona. Ele retornará rapidamente e, em seguida, gerará eventos para fornecer informações de status sobre o processo de individualização. A maioria dos eventos gerados será de eventos MEWMDRMIndividualizationProgress, e cada um tem uma interface IWMDRMIndividualizationStatus associada. Para obter a interface de estado, deve-se chamar IMFMediaEvent::GetValue para recuperar um ponteiro IUnknown que está no mesmo objeto e, em seguida, consultá-lo quanto a IWMDRMIndividualizationStatus.

Você pode obter dados para uma estrutura de WM_INDIVIDUALIZE_STATUS chamando IWMDRMIndividualizeStatus::GetStatus. Cada evento que é gerado tem seu próprio objeto com status, então você deve passar pelo processo de obter o valor do evento e consultar a interface de status sempre.

Dependendo do tamanho do download, pode haver dezenas ou até centenas de eventos MEWMDRMIndividualizationProgress. Após a conclusão do processo de individualização, é gerado um evento MEWMDRMIndividualizationCompleted.

Quando a individualização é concluída, os únicos objetos existentes que refletirão o novo estado individualizado são aqueles que herdam de IWMDRMSecurity. Todos os outros objetos existentes não serão atualizados. Você deve liberar e recriar quaisquer outros objetos para que eles reflitam o novo estado individualizado.

Exemplo de individualização de DRM

Guia de Programação

Usando o modelo de evento do Media Foundation

de práticas recomendadas de individualização do Windows Media DRM