Conversione di un file di DRM-Protected in un flusso DRM 10 di Windows Media per dispositivi di rete
Dopo aver registrato e convalidato un dispositivo, è possibile iniziare a elaborare i messaggi di richiesta di licenza da esso. I messaggi di richiesta di licenza vengono inviati dai dispositivi quando è necessaria l'azione dell'applicazione. L'unica azione attualmente supportata è "Play", che è una richiesta di dati sicuri per la riproduzione.
Quando si riceve un messaggio di richiesta di licenza, seguire questa procedura:
- Analizzare il messaggio di richiesta di licenza chiamando il metodo IWMDRMMessageParser::P arseLicenseRequestMsg .
- Ottenere l'interfaccia IWMRegisteredDevice per il dispositivo chiamando il metodo IWMDeviceRegistration::GetRegisteredDeviceByID , passando il certificato e il numero di serie ottenuto nel passaggio 1.
- Verificare che il dispositivo sia pronto per ricevere dati sicuri:
- Chiamare IWMRegisteredDevice::IsApproved per verificare che il dispositivo sia stato approvato. L'approvazione deve essere sempre basata sulla preferenza dell'utente.
- Chiamare IWMRegisteredDevice::IsValid per verificare che il dispositivo sia stato convalidato negli ultimi 48 ore. Se il dispositivo non è valido, è necessario eseguire il rilevamento della prossimità. Per altre informazioni, vedere Esecuzione del rilevamento prossimità.
- Chiamare IWMRegisteredDevice::IsOpened per verificare che il dispositivo sia stato aperto. Se il dispositivo non è aperto, è possibile aprirlo chiamando IWMRegisteredDevice::Open. È possibile avere solo 10 dispositivi aperti sul computer alla volta. È possibile che sia necessario chiudere un altro dispositivo prima di poter aprire quello per il quale si sta elaborando la richiesta. Per chiudere un dispositivo, chiamare il metodo IWMRegisteredDevice::Close .
- Creare un'istanza dell'oggetto transcryptor DRM chiamando la funzione WMCreateDRMTranscryptor .
- Chiamare il metodo IWMDRMTranscryptor::Initialize per inizializzare il transcryptor. Questo metodo accetta un puntatore all'implementazione dell'interfaccia IWMStatusCallback , che usa per recapitare messaggi di stato. Questo metodo restituisce anche un messaggio di richiesta di licenza che deve essere inviato al dispositivo prima di continuare.
- Quando il metodo IWMStatusCallback::OnStatus riceve il messaggio di stato WMT_TRANSCRYPTOR_INIT, chiamare il metodo IWMDRMTranscryptor::Seek per cercare la posizione iniziale appropriata nel file. Per iniziare all'inizio del file, è necessario chiamare Seek con il tempo 0.
- Il transcryptor invia un messaggio WMT_TRANSCRYPTOR_SEEKED quando è pronto per recapitare i dati dal file al momento della nuova presentazione. Effettuare chiamate ripetute al metodo IWMDRMTranscryptor::Read per ottenere blocchi convertiti di dati multimediali. Ogni chiamata è asincrona e non viene completata finché non viene ricevuto un messaggio WMT_TRANSCRYPTOR_READ. Quando si riceve il messaggio, è possibile inviare i dati al dispositivo di ricezione.
- Quando viene visualizzato un messaggio di WMT_TRANSCRYPTOR_READ con il parametro hr impostato su NS_S_TRANSCRYPTOR_EOF, l'intero file è stato letto. A questo punto, chiamare il metodo IWMDRMTranscryptor::Close per chiudere il file e liberare le risorse.
- Quando viene ricevuto il messaggio WMT_TRANSCRYPTOR_CLOSED, è possibile rilasciare l'interfaccia IWMDRMTranscryptor .
Nota
DRM non è supportato dalla versione basata su x64 di questo SDK.
Argomenti correlati