Функция 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 (include Drmk.h)
Библиотека Drmk.lib
IRQL пассивный уровень

См. также

DrmAddContentHandlers

DrmForwardContentToDeviceObject

IDrmAudioStream

IDrmAudioStream::SetContentId

IDrmPort::ForwardContentToInterface

IoCallDriver

PcForwardContentToInterface