Разработка и отладка драйверов DRM
Следующий контрольный список поможет авторам драйверов избежать некоторых распространенных ошибок:
Если драйвер отключает функцию захвата волн и выходные данные S/PDIF во время воспроизведения содержимого, защищенного DRM, драйвер не забудьте включить их снова после завершения воспроизведения содержимого с защитой DRM (а буфер DRM будет уничтожен).
Если устройство выполняет смешивание оборудования, драйвер должен отслеживать любые изменения в правах составного использования, которые происходят при добавлении потоков или удалении из него. Например, когда набор включает один или несколько защищенных от копирования потоков DRM, запись должна быть отключена. Если запись включена во время воспроизведения защищенного набора, она должна оставаться отключенной.
После изменения графа фильтра или параметров свойств, связанных с потоком, драйверу может потребоваться немедленно обновить параметры защиты от копирования и вывода потока. Драйвер должен синхронизировать свою операцию, чтобы предотвратить копирование защищенного содержимого в буфер захвата или цифровой выход. Например, при изменении входного потока в мультиплексор записи драйвер не должен допускать уязвимости защищенного содержимого в течение времени, необходимого для включения и выключения звука.
Системный драйвер DRMK не позволяет отладчику ядра подключаться во время воспроизведения содержимого, защищенного DRM. Защита от отладки — это одна из нескольких мер, которые DRMK использует, чтобы сделать защищенное содержимое непрозрачным. После того как драйвер будет готов к тестированию, вы можете отладить его функции, совместимые с DRM, с помощью следующей методики:
Временно измените метод SetState потока волн (например, см. раздел IMiniportWavePciStream::SetState), чтобы вызвать IDrmAudioStream::SetContentId и задать для параметра DRMRIGHTS элемент CopyProtectзначение TRUE.
После завершения отладки не забудьте удалить вызов SetContentId .
С помощью этого метода вы можете воспроизводить незащищенное содержимое так, как если бы это было содержимое, защищенное DRM, но не отключать отладчик.
Например, можно использовать отладчик, чтобы убедиться, что драйвер предотвращает запись содержимого. Попробуйте заставить драйвер включить запись потока волнистой передачи через мультиплексный набор средств захвата, изменив громкость и параметры отключения звука в программе SndVol32. Ползунки должны отражать изменения, которые вы вносите в их параметры, которые являются постоянными, но мультиплексирование захвата должно продолжать отключать поток волнистой передачи до тех пор, пока "защищенное" содержимое не завершит воспроизведение. Только тогда новые параметры вступают в силу.