Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Идентификатор содержимого (идентификатор) — это значение ULONG, которое системный драйвер DRMK создает во время выполнения для идентификации содержимого, защищенного DRM, в потоке аудио-данных, который передается в определенный пин-код.
Права на содержимое — это цифровое представление прав, предоставленных поставщиком контента пользователю для воспроизведения и копирования защищенного DRM содержимого. Права на содержимое указываются в виде структуры DRMRIGHTS , которая DRMK передается звуковому драйверу.
DRMRIGHTS содержит два флага: DigitalOutputDisable и CopyProtect. Если установлен флаг DigitalOutputDisable , драйвер должен отключить любые цифровые выходные данные, подключающиеся к внешним устройствам (например, через соединитель S/PDIF). Если установлен флаг CopyProtect , драйвер должен отключить функции, которые могут разрешить сохраняемую копию защищенного содержимого сохраняться на диске или в любой другой форме неактивного хранилища. Например, обычное звуковое оборудование позволяет маршрутизировать сигнал воспроизведения через канал захвата. Если этот сигнал находится в цифровой форме, захваченный сигнал может быть идеальной цифровой копией входного сигнала. Если сочетание воспроизведения содержит данные из любого потока, который имеет установленный флаг CopyProtect, драйвер должен отключить путь воспроизведение-запись.
Звуковой драйвер, совместимый с DRM, должен поддерживать интерфейс IDrmAudioStream на своих объектах минипорт-драйверов WaveCyclic и WavePci, которые предоставляют штырьки приемника для воспроизведения аудиоданных. Чтобы получить ссылку на объект IDrmAudioStream из драйвера, DRMK вызывает метод QueryInterface на пин-коде. Пин имеет интерфейс типа IMiniportWaveCyclicStream или IMiniportWavePciStream. Интерфейс IDrmAudioStream поддерживает только один метод IDrmAudioStream::SetContentId (помимо трех методов IUnknown ). Когда DRMK вызывает SetContentId, он передает идентификатор содержимого и права содержимого, которые драйвер связывает с потоком данных пин-кода.
Вместо вызова функций DRM в Drmk.sys напрямую драйвер miniport WaveCyclic или WavePci может получить доступ к функциям DRM через интерфейс IDrmPort2 (IDrmPort2 является производным от базового класса IDrmPort). В Microsoft Windows XP и более поздних версиях драйверы портов WaveCyclic и WavePci поддерживают IDrmPort2. Драйвер минипорта получает ссылку на интерфейс IDrmPort2 драйвера порта, вызывая метод QueryInterface объекта порта с параметром REFIID IID_IDrmPort2.
Некоторые звуковые драйверы поддерживают сочетание оборудования и могут одновременно обрабатывать несколько входных потоков данных. Этот тип драйвера должен отслеживать идентификаторы содержимого для отдельных потоков и составные права содержимого всех потоков. Драйвер вызывает IDrmPort::CreateContentMixed , чтобы определить составные права для смешанного потока и создать идентификатор содержимого для идентификации этого потока. После завершения использования идентификатора содержимого драйвер должен вызвать IDrmPort::D esiContent , чтобы удалить идентификатор содержимого.
При каждом добавлении или удалении входного потока из миксера драйвер должен удалить идентификатор содержимого для старой смеси и создать новый идентификатор содержимого для новой смеси. Перед удалением старого идентификатора содержимого драйвер должен сначала успешно перенаправить новый идентификатор содержимого во все потоки, в которые он ранее переадресовал старый идентификатор содержимого. Дополнительные сведения см. в разделе " Перенаправление идентификаторов содержимого DRM".