Usando o modelo de evento do Media Foundation
[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 do 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 do 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.]
Os métodos assíncronos compatíveis com as APIs Estendidas do Cliente DRM do Windows Media usam o mesmo modelo de evento usado pelo SDK do Media Foundation. Cada objeto que dá suporte a métodos assíncronos implementa a interface IWMDRMEventGenerator , que pode ser usada para recuperar um evento quando uma operação assíncrona é concluída.
A interface IWMDRMEventGenerator herda da interface IMFMediaEventGenerator , que está documentada na documentação do SDK do Media Foundation.
O código de exemplo no Exemplo de Individualização do DRM usa o método IMFMediaEventGenerator::GetEvent para recuperar eventos da fila um de cada vez. Usar GetEvent é mais simples do que usar IMFMediaEventGenerator::BeginGetEvent e IMFMediaEventGenerator::EndGetEvent com um retorno de chamada, o que torna os exemplos de código mais fáceis de entender. Se você usar GetEvent em seu código ou implementar IMFAsyncCallback e usar BeginGetEvent e EndGetEvent, a lógica para manipular o evento após ele ter sido recebido é a mesma.
Vários dos métodos assíncronos geram eventos que contêm referências a objetos que podem ser usados para obter informações de status mais detalhadas. Nesses casos, o evento gerado tem um ponteiro IUnknown como seu valor, que pode ser consultado para recuperar a interface status. A lista a seguir resume as relações entre chamadas assíncronas, eventos gerados e outras interfaces.
- O método IWMDRMLicenseManagement::BackupLicenses gera eventos MEWMDRMLicenseBackupProgress com interfaces IWMDRMLicenseBackupRestoreStatus associadas.
- O método IWMDRMLicenseManagement::RestoreLicenses gera eventos MEWMDRMLicenseRestoreProgress com interfaces IWMDRMLicenseBackupRestoreStatus associadas.
- O método IWMDRMSecurity::P erformSecurityUpdate , quando usado para executar a individualização, gera eventos MEWMDRMIndividualizationProgress com interfaces IWMDRMIndividualizationStatus associadas.
- O método IWMDRMLicenseManagement::AcquireLicense , quando usado para preparar dados para aquisição de licença não silenciosa, gera um evento MEWMDRMLicenseAcquisitionCompleted com uma interface IWMDRMNonSilentLicenseAquisition associada.
Tópicos relacionados