Функция DrmAddContentHandlers (drmk.h)

Функция DrmAddContentHandlers предоставляет системе список функций, которые обрабатывают защищенное содержимое.

Синтаксис

NTSTATUS DrmAddContentHandlers(
  [in] ULONG ContentId,
  [in] PVOID *paHandlers,
  [in] ULONG NumHandlers
);

Параметры

[in] ContentId

Указывает идентификатор содержимого DRM. Этот параметр определяет защищенный аудиопоток KS.

[in] paHandlers

Указатель на массив указателей функций. Каждый элемент массива указывает на обработчик содержимого.

[in] NumHandlers

Указывает количество указателей функций в массиве paHandlers .

Возвращаемое значение

DrmAddContentHandlers возвращает STATUS_SUCCESS, если вызов был выполнен успешно. В противном случае возвращается соответствующий код ошибки.

Комментарии

Прежде чем разрешить защищенному содержимому проходить через путь к данным, система проверяет, что путь к данным является безопасным. Для этого система проверяет подлинность каждого модуля в пути к данным, начиная с вышестоящий конца пути к данным и перемещаясь вниз. По мере проверки подлинности каждого модуля этот модуль предоставляет системным сведения о следующем модуле в пути к данным, чтобы его также можно было пройти проверку подлинности. Для успешной проверки подлинности двоичный файл модуля должен быть подписан как совместимый с DRM.

Если два смежных модуля взаимодействуют друг с другом с помощью функции IoCallDriver или COM-интерфейса подчиненного модуля, модуль вышестоящий вызывает функцию DrmForwardContentToInterface или DrmForwardContentToDeviceObject соответственно, чтобы предоставить системе сведения о подчиненном модуле. Однако если два модуля используют какой-либо другой тип интерфейса для обмена данными, модуль вышестоящий вызывает вместо этого функциюDrmAddContentHandlers.

Массив paHandlers содержит указатели функций на точки входа в нижестоящем модуле. DrmAddContentHandlers проверяет подлинность модуля, реализующего эти функции. (Если точки входа распределены между несколькими модулями, функция проверяет подлинность всех этих модулей.) Определяемые поставщиком функции в этом массиве составляют интерфейс, понятный как модулю, который вызывает функции, так и модулю, реализующем функции. DrmAddContentHandlers не вызывает напрямую ни одну из этих функций.

Модуль вышестоящий может передать идентификатор содержимого и права на содержимое в подчиненный модуль, используя для этой цели одну из функций в массиве paHandlers. Нижестоящему модулю требуется идентификатор содержимого, чтобы сообщить системе о любых модулях, в которые отправляется защищенное содержимое.

DrmAddContentHandlers выполняет ту же функцию, что и PcAddContentHandlers и IDrmPort2::AddContentHandlers. Дополнительные сведения см. в разделе Функции и интерфейсы DRM.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть drmk.h (включая Drmk.h)
Библиотека Drmk.lib
IRQL PASSIVE_LEVEL

См. также раздел

DrmForwardContentToDeviceObject

DrmForwardContentToInterface

IDrmPort2::AddContentHandlers

IoCallDriver

PcAddContentHandlers