Convertendo um arquivo de DRM-Protected em um fluxo drm 10 do Windows Media para dispositivos de rede
Depois que um dispositivo for registrado e validado, você poderá começar a processar mensagens de solicitação de licença dele. As mensagens de solicitação de licença são enviadas por dispositivos quando a ação do aplicativo é necessária. A única ação com suporte no momento é "Reproduzir", que é uma solicitação de dados seguros para reprodução.
Ao receber uma mensagem de solicitação de licença, execute as seguintes etapas:
- Analise a mensagem de solicitação de licença chamando o método IWMDRMMessageParser::P arseLicenseRequestMsg .
- Obtenha a interface IWMRegisteredDevice para o dispositivo chamando o método IWMDeviceRegistration::GetRegisteredDeviceByID , passando o certificado e o número de série obtidos na etapa 1.
- Verifique se o dispositivo está pronto para receber dados seguros:
- Chame IWMRegisteredDevice::IsApproved para verificar se o dispositivo foi aprovado. A aprovação sempre deve ser baseada na preferência do usuário.
- Chame IWMRegisteredDevice::IsValid para verificar se o dispositivo foi validado nas últimas 48 horas. Se o dispositivo não for válido, você precisará executar a detecção de proximidade. Para obter mais informações, consulte Executando a detecção de proximidade.
- Chame IWMRegisteredDevice::IsOpened para verificar se o dispositivo foi aberto. Se o dispositivo não estiver aberto, você poderá abri-lo chamando IWMRegisteredDevice::Open. Você só pode ter 10 dispositivos abertos no computador por vez. É possível que você precise fechar outro dispositivo antes de abrir aquele para o qual está processando a solicitação. Para fechar um dispositivo, chame o método IWMRegisteredDevice::Close .
- Crie uma instância do objeto transcryptor DRM chamando a função WMCreateDRMTranscryptor .
- Chame o método IWMDRMTranscryptor::Initialize para inicializar o transcryptor. Esse método usa um ponteiro para a implementação da interface IWMStatusCallback, que ele usa para fornecer mensagens status. Esse método também retorna uma mensagem de solicitação de licença que deve ser enviada ao dispositivo antes de continuar.
- Quando o método IWMStatusCallback::OnStatus do aplicativo receber a mensagem WMT_TRANSCRYPTOR_INIT status, chame o método IWMDRMTranscryptor::Seek para buscar a posição inicial apropriada no arquivo. Para começar no início do arquivo, você deve chamar Seek com o tempo 0.
- O transcryptor envia uma mensagem WMT_TRANSCRYPTOR_SEEKED quando está pronto para entregar dados do arquivo no novo momento da apresentação. Faça chamadas repetidas para o método IWMDRMTranscryptor::Read para obter partes convertidas de dados de mídia. Cada chamada é assíncrona e não é concluída até que uma mensagem WMT_TRANSCRYPTOR_READ seja recebida. Ao receber a mensagem, você pode enviar os dados para o dispositivo receptor.
- Quando você recebe uma mensagem WMT_TRANSCRYPTOR_READ com o parâmetro hr definido como NS_S_TRANSCRYPTOR_EOF, todo o arquivo foi lido. Neste ponto, chame o método IWMDRMTranscryptor::Close para fechar o arquivo e liberar recursos.
- Quando a mensagem WMT_TRANSCRYPTOR_CLOSED é recebida, você pode liberar a interface IWMDRMTranscryptor .
Observação
O DRM não é compatível com a versão baseada em x64 deste SDK.
Tópicos relacionados