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


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

Компоненты системного драйвера Drmk.sys и Portcls.sys реализовать коллекцию функций и интерфейсов DRM, которые драйверы используют для управления цифровыми правами потокового аудиосодержимого ядра. Компонент Drmk.sys реализует ряд функций DrmXxx , а Portcls.sys реализует набор функций PcXxx , а также интерфейсы IDrmPort и IDrmPort2 .

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

DrmAddContentHandlers

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

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

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

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

Устаревшая функция. DrmForwardContentToInterface

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

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

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

PcAddContentHandlers

PcCreateContentMixed

PcDeкистройКонтент

PcForwardContentToDeviceObject

PcForwardContentToFileObject

PcForwardContentToInterface

PcGetContentRights

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

В Windows XP и более поздних версиях тот же набор функций также предоставляется в качестве методов в интерфейсах IDrmPort и IDrmPort2 :

IDrmPort2::AddContentHandlers

IDrmPort::CreateContentMixed

IDrmPort::D etraitsContent

IDrmPort2::ForwardContentToDeviceObject

IDrmPort::ForwardContentToFileObject

IDrmPort::ForwardContentToInterface

IDrmPort::GetContentRights

Интерфейсы IDrmPort и IDrmPort2 объявляются в файле заголовка Portcls.h и реализуются в Portcls.sys. Эти методы выполняют только вызов соответствующих функций в Drmk.sys. Драйвер мини-порта получает ссылку на интерфейс IDrmPortx , запрашивая драйвер порта для этого интерфейса. Преимущество использования интерфейса IDrmPortx вместо соответствующих функций DrmXxx или PcXxx заключается в том, что драйвер может использовать этот запрос для определения во время выполнения, поддерживает ли версия операционной системы DRM. Это упрощает создание одного драйвера, который может работать как в более новых версиях Windows, поддерживающих DRM, так и в более старых версиях, которые этого не делают. IDrmPort2 является производным от IDrmPort и предоставляет два дополнительных метода.

Драйверы портов WaveCyclic и WavePci используют интерфейс IDrmAudioStream , если он поддерживается соответствующим драйвером miniport. Драйвер порта вызывает метод IDrmAudioStream::SetContentId , чтобы назначить защиту DRM цифровому содержимому в аудиопотоке.

Макрос DEFINE_DRMRIGHTS_DEFAULT , определенный в файле заголовка Drmk.h, инициализирует элементы структуры DRMRIGHTS значениями по умолчанию.