Inhalts-IDs und Inhaltsrechte

Eine Inhalts-ID (Bezeichner) ist ein ULONG-Wert, den der DRMK-Systemtreiber zur Laufzeit generiert, um DRM-geschützte Inhalte im Audiodatenstrom zu identifizieren, der in einen bestimmten Pin einspeist.

Inhaltsrechte sind eine digitale Darstellung der Rechte, die der Inhaltsanbieter dem Benutzer zum Wiedergeben und Kopieren von DRM-geschützten Inhalten gewährt. Inhaltsrechte werden in Form einer DRMRIGHTS-Struktur angegeben, die DRMK an den Audiotreiber übergibt.

DRMRIGHTS enthält zwei Flags: DigitalOutputDisable und CopyProtect. Wenn das Flag DigitalOutputDisable festgelegt ist, muss der Treiber alle digitalen Ausgaben deaktivieren, die eine Verbindung mit externen Geräten herstellen (z. B. über einen S/PDIF-Connector). Wenn das CopyProtect-Flag festgelegt ist, muss der Treiber Features deaktivieren, die eine dauerhafte Kopie des sicheren Inhalts auf dem Datenträger oder in einer anderen Form von nicht flüchtigem Speicher ermöglichen. Mit der typischen Audiohardware kann beispielsweise ein Wiedergabesignal über den Aufnahmekanal weitergeleitet werden. Wenn dieses Signal in digitaler Form ist, kann das erfasste Signal eine perfekte digitale Kopie des Eingangssignals sein. Wenn die Wiedergabemischung Daten aus einem beliebigen Stream enthält, für den das CopyProtect-Flag festgelegt ist, muss der Treiber den Pfad für wiedergabe-aufzeichnung stummschalten.

Ein DRM-kompatibler Audiotreiber muss die IDrmAudioStream-Schnittstelle für seine WaveCyclic- und WavePci-Miniporttreiberobjekte unterstützen, die Senkennadeln zum Rendern von Audiodaten verfügbar machen. Um einen Verweis auf ein IDrmAudioStream-Objekt vom Treiber abzurufen, ruft DRMK die QueryInterface-Methode am Pin auf. Der Pin verfügt über eine Schnittstelle vom Typ IMiniportWaveCyclicStream oder IMiniportWavePciStream. Die IDrmAudioStream-Schnittstelle unterstützt nur eine Methode, IDrmAudioStream::SetContentId (zusätzlich zu den drei IUnknown-Methoden ). Wenn DRMK SetContentId aufruft, übergibt es eine Inhalts-ID und Inhaltsrechte, die der Treiber dem Datenstrom der Pin ordnet.

Anstatt die DRM-Funktionen in Drmk.sys direkt aufzurufen, kann ein WaveCyclic- oder WavePci-Miniporttreiber über die IDrmPort2-Schnittstelle auf die DRM-Funktionen zugreifen (IDrmPort2 wird von der Basisklasse IDrmPort abgeleitet). In Microsoft Windows XP und höher unterstützen die WaveCyclic- und WavePci-Porttreiber IDrmPort2. Der Miniporttreiber ruft einen Verweis auf die IDrmPort2-Schnittstelle des Porttreibers ab, indem er die QueryInterface-Methode des Portobjekts mit REFIID IID_IDrmPort2 aufruft.

Einige Audiotreiber unterstützen die Hardwaremischung und können mehrere Eingabedatenströme gleichzeitig verarbeiten. Dieser Treibertyp muss sowohl die Inhalts-IDs für die einzelnen Streams als auch die zusammengesetzten Inhaltsrechte aller Streams nachverfolgen. Der Treiber ruft IDrmPort::CreateContentMixed auf, um die zusammengesetzten Rechte für einen gemischten Stream zu bestimmen und eine Inhalts-ID zu erstellen, um diesen Stream zu identifizieren. Wenn der Treiber die Verwendung der Inhalts-ID abgeschlossen hat, muss er IDrmPort::D estroyContent aufrufen, um die Inhalts-ID zu löschen.

Jedes Mal, wenn ein Eingabestream zu einem Mixer hinzugefügt oder aus diesem entfernt wird, muss der Treiber die Inhalts-ID für den alten Mix löschen und eine neue Inhalts-ID für die neue Mischung erstellen. Vor dem Löschen einer alten Inhalts-ID muss der Treiber zunächst erfolgreich eine neue Inhalts-ID an alle Streams weiterleiten, an die er zuvor die alte Inhalts-ID weitergeleitet hat. Weitere Informationen finden Sie unter Weiterleiten von DRM-Inhalts-IDs.