Schützen von Dateien mit DRM Version 7 oder höher
[Das dieser Seite zugeordnete Feature Windows Media Format 11 SDK ist ein Legacyfeature. Es wurde von Source Reader und Sink Writer abgelöst. Source Reader und Sink Writer wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit quellleser und Senkenschreiber anstelle des Windows Media Format 11 SDK verwendet. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]
Verwenden Sie zum Schützen von Dateien mit Windows Media DRM Version 7 oder höher die IWMDRMWriter::SetDRMAttribute-Methode des Writer-Objekts, um DRM-Attribute festzulegen. Da DRM Version 7 und höher eindeutige Lizenzen für jede geschützte Datei oder Gruppe von Dateien ermöglichen, verfügt die IWMDRMWriter-Schnittstelle auch über Methoden zum Erstellen von Schlüsseln. Diese Methoden werden nur zur Vereinfachung bereitgestellt.
Führen Sie zum Schützen von ASF-Dateien mit DRM Version 7 oder höher die folgenden Schritte aus:
Link zu WMStubDRM.lib und bei Bedarf die Verknüpfung von wmvcore.lib aufheben.
Rufen Sie die WMCreateWriter-Funktion auf, um den DRM-Writer zu erstellen. Das erste Argument ist reserviert und muss auf NULL festgelegt werden.
Legen Sie ein Profil fest, das der Writer verwenden soll, indem Sie IWMWriter::SetProfile oder IWMWriter::SetProfileByID aufrufen. Sie müssen ein Profil im Writer festlegen, bevor Sie DRM-Attribute festlegen. DRM wird nur für Profile unterstützt, die die Codecs Windows Media Audio oder Windows Media Video verwenden.
Rufen Sie die IWMDRMWriter-Schnittstelle des Writer-Objekts ab.
Rufen Sie IWMDRMWriter::SetDRMAttribute auf, und legen Sie Use_Advanced_DRM auf TRUE fest.
Wenn Sie einen neuen Schlüsselstart generieren müssen, rufen Sie IWMDRMWriter::GenerateKeySeed auf. In den meisten Fällen verwenden Sie einen zuvor generierten Schlüsselkernwert wieder. Dieser Wert muss geheim bleiben. sie wird nicht in die Datei geschrieben.
Rufen Sie IWMDRMWriter::GenerateKeyID auf, um eine Schlüssel-ID zu erstellen. Dies ist der zweite Wert, der zum Erstellen des tatsächlichen Schlüssels verwendet wird. Im Gegensatz zum Schlüsselsamen ist die Schlüssel-ID öffentlich und wird im DRM-Header im Leerlauf in die Datei geschrieben. Erstellen Sie eine neue Schlüssel-ID für jede neue Datei, die Sie erstellen.
Rufen Sie bei Bedarf IWMDRMWriter::GenerateSigningKeyPair auf, um einen öffentlichen und privaten Schlüssel zu generieren, der zum Signieren des erweiterten DRM-ASF-Headerobjekts verwendet wird. Weitere Informationen zu diesen Schlüsseln finden Sie unter IWMDRMWriter::GenerateSigningKeyPair.
Rufen Sie bei Bedarf die Werte ab, um das digitale Signaturobjekt des DRM-Headers aufzufüllen. Wenn Sie keine funktionierende Version von Windows Media Rights Manager auf Ihrem System installiert haben, müssen Sie das digitale Signaturobjekt des ASF-Dateiheaders konfigurieren, indem Sie die folgenden vier Attribute angeben, die alle von Microsoft abgerufen werden müssen:
Wenn Sie Windows Media Rights Manager installiert haben, ist es nicht erforderlich, diese Attribute in Ihrer Anwendung festzulegen. Die DRM-Komponente ruft diese Attribute ab und verwendet sie, um den Header automatisch zu signieren. Wenn Sie über eine aktivierte Version von Windows Media Rights Manager auf einem anderen Computer verfügen und diese Werte für digitale Signaturobjekte wiederverwenden möchten, finden Sie sie in der Registrierung. Das Lizenzserverzertifikat wird unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server\Certs:cert1 und das Stammzertifikat unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server\Certs:cert2 gespeichert. Beim Schutz von Dateien mit DRM Version 7 müssen Sie die Werte aus diesen Registrierungsschlüsseln verwenden. Verwenden Sie für die eigenschaft DRM_LASignaturePrivKey entweder GenerateSigningKeysEx (über das Windows Media Rights Manager SDK), oder verwenden Sie den wert, der von Windows Media Rights Manager unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server:Info_Cert0 installiert wurde. Verwenden Sie für die eigenschaft DRM_LASignatureCert entweder GenerateSigningKeysEx (über das Windows Media Rights Manager SDK) oder den Wert, der von Windows Media Rights Manager unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server\Certs:cert0 installiert wird.
Rufen Sie IWMDRMWriter::SetDRMAttribute so oft wie erforderlich auf, um das Writer-Objekt zu konfigurieren. Dadurch werden die erforderlichen DRM-Headerattribute nach Bedarf festgelegt. Diese Eigenschaften bleiben für die Lebensdauer des Writer-Objekts oder bis sie mit einem neuen Wert zurückgesetzt werden. Sie müssen nicht für jede neue Datei, die Sie erstellen, zurückgesetzt werden.
Die folgenden Eigenschaften sind für das Writer-Objekt erforderlich:
Die folgenden Eigenschaften sind optional:
Darüber hinaus können Sie benutzerdefinierte DRM-Dateiattribute direkt mithilfe des DRM_DRMHeader Base-Attributs angeben. Sie können jedes beliebige zusätzliche Attribut hinzufügen, z. B. "DRMHeader.RequireSAP", um zusätzliche Informationen zu kommunizieren, die vom Lizenzserver beim Erstellen der Lizenz verwendet werden. Der Lizenzserver muss vor allen zusätzlichen Eigenschaften, die Sie hinzufügen, beachten. Es gibt keine Möglichkeit, unbekannte Eigenschaften programmgesteuert zu ermitteln.
Schreiben Sie die Datei mithilfe der IWMWriter-Schnittstellenmethoden , wie an anderer Stelle in dieser Dokumentation beschrieben. Um einen Live-DRM-Stream zu erstellen, schreiben Sie einfach in eine Netzwerksenke. Sie können auch in eine Pushsenke schreiben.
Erstellen Sie bei Bedarf eine Lizenz für die Datei mithilfe von Windows Media Rights Manager. Diese Aufgabe kann auch von einem Lizenzserver eines Drittanbieters ausgeführt werden. In Live-DRM-Szenarien müssen Endbenutzer eine Lizenz erwerben, bevor der Stream beginnt, oder wenn sie zum ersten Mal versuchen, eine Verbindung mit dem Datenstrom herzustellen.
Hinweis DRM wird von der x64-basierten Version dieses SDK nicht unterstützt.
Zugehörige Themen