Konvertieren einer DRM-Protected-Datei in einen Windows Media DRM 10-Stream für Netzwerkgeräte
Nachdem ein Gerät registriert und überprüft wurde, können Sie mit der Verarbeitung von Lizenzanforderungsmeldungen beginnen. Lizenzanforderungsmeldungen werden von Geräten gesendet, wenn eine Aktion aus der Anwendung erforderlich ist. Die einzige aktion, die derzeit unterstützt wird, ist "Play", d. h. eine Anforderung für sichere Daten für die Wiedergabe.
Wenn Sie eine Lizenzanforderungsmeldung erhalten, sollten Sie die folgenden Schritte ausführen:
- Analysieren Sie die Lizenzanforderungsnachricht, indem Sie die IWMDRMMessageParser::P arseLicenseRequestMsg-Methode aufrufen.
- Rufen Sie die IWMRegisteredDevice-Schnittstelle für das Gerät ab, indem Sie die IWMDeviceRegistration::GetRegisteredDeviceByID-Methode aufrufen und das in Schritt 1 abgerufene Zertifikat und die Seriennummer übergeben.
- Vergewissern Sie sich, dass das Gerät bereit ist, sichere Daten zu empfangen:
- Rufen Sie IWMRegisteredDevice::IsApproved auf, um zu überprüfen, ob das Gerät genehmigt wurde. Die Genehmigung sollte immer auf der Benutzerpräferenz 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 die 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::Open aufrufen. 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.
- Erstellen Sie eine instance des DRM-Transcryptorobjekts, indem Sie die Funktion WMCreateDRMTranscryptor aufrufen.
- Rufen Sie die IWMDRMTranscryptor::Initialize-Methode auf, um den Transcryptor zu initialisieren. Diese Methode verwendet einen Zeiger auf Ihre Implementierung der IWMStatusCallback-Schnittstelle, die zum Übermitteln status Nachrichten verwendet wird. Diese Methode gibt auch eine Lizenzanforderungsnachricht zurück, die vor dem Fortfahren an das Gerät gesendet werden muss.
- Wenn die IWMStatusCallback::OnStatus-Methode Ihrer Anwendung die WMT_TRANSCRYPTOR_INIT status Nachricht 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 der Zeit 0 aufrufen.
- Der Transcryptor sendet eine WMT_TRANSCRYPTOR_SEEKED-Nachricht, wenn er bereit ist, Daten aus der Datei zur neuen Präsentationszeit zu übermitteln. Führen Sie wiederholte Aufrufe der IWMDRMTranscryptor::Read-Methode aus, um konvertierte Blöcke von Mediendaten abzurufen. Jeder Aufruf ist asynchron und wird 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.
- Wenn Sie eine WMT_TRANSCRYPTOR_READ Nachricht mit dem hr-Parameter auf NS_S_TRANSCRYPTOR_EOF erhalten, wurde die gesamte Datei gelesen. Rufen Sie an diesem Punkt die IWMDRMTranscryptor::Close-Methode auf, um die Datei zu schließen und Ressourcen freizugeben.
- 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.
Zugehörige Themen