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


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

Функция DrmForwardContentToInterface принимает указатель на COM-интерфейс объекта, в который вызывающий объект намерен пересылать защищенное содержимое. Функция проверяет подлинность объекта и отправляет объекту идентификатор содержимого и права DRM, назначенные системой защищенному содержимому.

Синтаксис

NTSTATUS DrmForwardContentToInterface(
  [in] ULONG    ContentId,
  [in] PUNKNOWN pUnknown,
  [in] ULONG    NumMethods
);

Параметры

[in] ContentId

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

[in] pUnknown

Указатель на COM-интерфейс, который напрямую получает данные аудиопотока KS для звукового фильтра KS.

[in] NumMethods

Указывает общее количество методов в интерфейсе COM, на которое указывает pUnknown , включая все методы в его базовых интерфейсах.

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

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

Код возврата Описание
STATUS_NOT_IMPLEMENTED
Указывает, что аудиопоток KS, связанный с pUnknown , не поддерживает права на содержимое DRM, назначенные ContentId.

Комментарии

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

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

DrmForwardContentToInterface проверяет подлинность модуля, реализующего методы в интерфейсе COM, на который указывает pUnknown. (Если методы распределены между несколькими модулями, функция выполняет проверку подлинности всех этих модулей.) Этот интерфейс, определяемый поставщиком, должен пониматься как модулем, который вызывает интерфейс, так и модулем, реализующим интерфейс. DrmForwardContentToInterface не делает предположений относительно этого интерфейса, кроме того, что он является производным от IUnknown.

Если DrmForwardContentToInterface проверка подлинности драйвера или библиотеки выполнена успешно, выполняется следующее:

  • Запрашивает интерфейс pUnknown для его интерфейса IDrmAudioStream . Обратите внимание, что хотя DrmForwardContentToInterface выполняет проверку подлинности всех методов в интерфейсе pUnknown , он не вызывает никакие методы в интерфейсе pUnknown , кроме базовых методов IUnknown .
  • Вызывает IDrmAudioStream::SetContentId , чтобы задать идентификатор содержимого DRM и права на содержимое DRM в аудиопотоке. Перед возвратом DrmForwardContentToInterface освобождает интерфейс IDrmAudioStream .
Параметр pUnknown соответствует соглашениям о подсчете ссылок для COM-объектов.

DrmForwardContentToInterface выполняет ту же функцию, что и PcForwardContentToInterface и IDrmPort::ForwardContentToInterface. Дополнительные сведения см. в разделе Функции и интерфейсы DRM.

Требования

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

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

DrmAddContentHandlers

DrmForwardContentToDeviceObject

IDrmAudioStream

IDrmAudioStream::SetContentId

IDrmPort::ForwardContentToInterface

IoCallDriver

PcForwardContentToInterface