Поделиться через


Функции и интерфейсы DRM

The system driver components Drmk.sys and Portcls.sys implement a collection of DRM functions and interfaces that drivers use for managing the digital rights of kernel-streaming audio content. The Drmk.sys component implements a number of DrmXxx functions, and Portcls.sys implements a DRM-specific set of PcXxx functions, and also the IDrmPort and IDrmPort2 interfaces.

Доступны следующие функции DRM:

DrmAddContentHandlers

Предоставляет систему с интерфейсом драйвера, состоящим из списка функций для обработки защищенного содержимого. DrmCreateContentMixed

Создает идентификатор содержимого DRM для идентификации аудиопотока KS, содержащего смешанное содержимое из нескольких входных потоков. DrmDestroyContent

Удаляет идентификатор содержимого DRM. DrmForwardContentToDeviceObject

Проверяет подлинность драйвера и отправляет ему идентификатор содержимого DRM и права содержимого, назначенные системе потоку, содержащее защищенное содержимое. DrmForwardContentToFileObject

Obsolete function. DrmForwardContentToInterface

Проверяет подлинность объекта драйвера и отправляет ему идентификатор содержимого DRM и права содержимого, назначенные системе потоку, содержащее защищенное содержимое. DrmGetContentRights

Извлекает права на содержимое DRM, назначенные системе идентификатору содержимого DRM. Функции в этом списке объявляются в файле заголовка Drmk.h. Системный драйвер DRMK в режиме ядра, Drmk.sys, экспортирует точки входа для этих функций.

В Windows XP и более поздних версиях системный драйвер PortCls Portcls.sysэкспортирует другой набор точек входа для одного набора функций DRM. Имена функций PortCls аналогичны именам в предыдущем списке, за исключением того, что они используют префикс Pc вместо Drm:

PcAddContentHandlers

PcCreateContentMixed

PcDestroyContent

PcForwardContentToDeviceObject

PcForwardContentToFileObject

PcForwardContentToInterface

PcGetContentRights

Эти имена функций объявляются в файле заголовка Portcls.h. Точки входа в Portcls.sys не делают ничего больше, чем вызов соответствующих функций в Drmk.sys. Точки входа PortCls предоставляются просто для удобства, чтобы звуковой драйвер, уже подключенный к Portcls.sys, не должен явно загружать Drmk.sys.

In Windows XP and later, the same set of functions is also exposed as methods in the IDrmPort and IDrmPort2 interfaces:

IDrmPort2::AddContentHandlers

IDrmPort::CreateContentMixed

IDrmPort::DestroyContent

IDrmPort2::ForwardContentToDeviceObject

IDrmPort::ForwardContentToFileObject

IDrmPort::ForwardContentToInterface

IDrmPort::GetContentRights

The IDrmPort and IDrmPort2 interfaces are declared in header file Portcls.h and are implemented in Portcls.sys. Эти методы не делают ничего больше, чем вызов соответствующих функций в Drmk.sys. A miniport driver obtains a reference to a IDrmPortx interface by querying its port driver for this interface. The advantage to using a IDrmPortx interface instead of the corresponding DrmXxx or PcXxx functions is that the driver can use this query to determine at run time whether the operating system version supports DRM or not. Это упрощает написание одного драйвера, который может запускаться как в более новых версиях Windows, поддерживающих DRM, так и в более старых версиях, которые не выполняются. IDrmPort2 is derived from IDrmPort and provides two additional methods.

The WaveCyclic and WavePci port drivers use the IDrmAudioStream interface if it is supported by the corresponding miniport driver. The port driver calls the IDrmAudioStream::SetContentId method to assign DRM protection to the digital content in an audio stream.

The DEFINE_DRMRIGHTS_DEFAULT macro, which is defined in header file Drmk.h, initializes the members of a DRMRIGHTS structure to their default values.