Konvertieren einer DRM-Protected-Datei in einen Windows Medien-DRM 10 für Netzwerkgerätestream

Nachdem ein Gerät registriert und überprüft wurde, können Sie mit der Verarbeitung von Lizenzanforderungsnachrichten beginnen. Lizenzanforderungsnachrichten werden von Geräten gesendet, wenn eine Aktion von der Anwendung erforderlich ist. Die einzige derzeit unterstützte Aktion ist "Play", bei der es sich um eine Anforderung sicherer Daten für die Wiedergabe handelt.

Wenn Sie eine Lizenzanforderungsnachricht erhalten, sollten Sie die folgenden Schritte ausführen:

  1. Analysieren Sie die Lizenzanforderungsnachricht, indem Sie die IWMDRMMessageParser::P arseLicenseRequestMsg-Methode aufrufen.
  2. Rufen Sie die IWMRegisteredDevice-Schnittstelle für das Gerät ab, indem Sie die IWMDeviceRegistration::GetRegisteredDeviceByID-Methode aufrufen und das Zertifikat und die Seriennummer übergeben, die sie in Schritt 1 erhalten haben.
  3. Vergewissern Sie sich, dass das Gerät für den Empfang sicherer Daten bereit ist:
    • Rufen Sie IWMRegisteredDevice::IsApproved auf, um zu überprüfen, ob das Gerät genehmigt wurde. Die Genehmigung sollte immer auf der Einstellung des Benutzers basieren.
    • Rufen Sie IWMRegisteredDevice::IsValid auf, um zu überprüfen, ob das Gerät innerhalb der letzten 48 Stunden überprüft wurde. Wenn das Gerät ungültig ist, müssen Sie eine Näherungserkennung durchführen. Weitere Informationen finden Sie unter Durchführen der Näherungserkennung.
    • Rufen Sie IWMRegisteredDevice::IsOpened auf, um zu überprüfen, ob das Gerät geöffnet wurde. Wenn das Gerät nicht geöffnet ist, können Sie es öffnen, indem Sie IWMRegisteredDevice::Openaufrufen. Auf dem Computer können nur 10 Geräte gleichzeitig geöffnet sein. Möglicherweise müssen Sie ein anderes Gerät schließen, bevor Sie das Gerät öffnen können, für das Sie die Anforderung verarbeiten. Um ein Gerät zu schließen, rufen Sie die IWMRegisteredDevice::Close-Methode auf.
  4. Erstellen Sie eine Instanz des DRM-Transcryptorobjekts, indem Sie die WMCreateDRMTranscryptor-Funktion aufrufen.
  5. Rufen Sie die IWMDRMTranscryptor::Initialize-Methode auf, um den Transcryptor zu initialisieren. Diese Methode verwendet einen Zeiger auf Ihre Implementierung der IWMStatusCallback-Schnittstelle, die sie zum Übermitteln von Statusmeldungen verwendet. Diese Methode gibt auch eine Lizenzanforderungsnachricht zurück, die an das Gerät gesendet werden muss, bevor der Vorgang fortgesetzt wird.
  6. Wenn die IWMStatusCallback::OnStatus-Methode Ihrer Anwendung die WMT _ TRANSCRYPTOR _ INIT-Statusmeldung empfängt, rufen Sie die IWMDRMTranscryptor::Seek-Methode auf, um die entsprechende Startposition in der Datei zu suchen. Um am Anfang der Datei zu beginnen, müssen Sie Seek mit Zeit 0 aufrufen.
  7. Der Transcryptor sendet eine WMT _ TRANSCRYPTOR _ SEEKED-Nachricht, wenn er bereit ist, Daten aus der Datei zur neuen Präsentationszeit zu übermitteln. Wiederholte Aufrufe der IWMDRMTranscryptor::Read-Methode, um konvertierte Blöcke von Mediendaten abzurufen. Jeder Aufruf ist asynchron und erst abgeschlossen, wenn eine WMT _ TRANSCRYPTOR _ READ-Nachricht empfangen wird. Wenn Sie die Nachricht erhalten, können Sie die Daten an das empfangende Gerät senden.
  8. Wenn Sie eine WMT _ TRANSCRYPTOR _ READ-Nachricht erhalten, bei der der hr-Parameter auf NS _ S _ TRANSCRYPTOR EOF festgelegt _ ist, wurde die gesamte Datei gelesen. Rufen Sie nun die IWMDRMTranscryptor::Close-Methode auf, um die Datei zu schließen und Ressourcen frei zu machen.
  9. Wenn die WMT _ TRANSCRYPTOR _ CLOSED-Nachricht empfangen wird, können Sie die IWMDRMTranscryptor-Schnittstelle freigeben.

Hinweis

DRM wird von der x64-basierten Version dieses SDK nicht unterstützt.

Verwenden des Windows Media DRM 10 for Network Devices Protocol