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


Мини-драйверы потоковой передачи

Примечание В этом разделе подробно описан устаревший драйвер класса Stream.sys . С выпуском Microsoft Windows XP корпорация Майкрософт поддерживает Stream.sys только для существующих драйверов. В этом выпуске корпорация Майкрософт рекомендует поставщикам рассмотреть возможность разработки новых видео- или аудио- и мультимедийных драйверов с использованием модели драйвера класса AVStream. Дополнительные сведения см. в обзоре AVStream. При разработке драйвера только для аудио следует написать драйвер аудио минипорта в драйвере класса Portcls.sys корпорации Майкрософт. Дополнительные сведения см. в разделе Аудиодрайверы минипорта.

Поставщики могут поддерживать только видеоустройства или аудио- и видеоустройства, предоставляя мини-диск, работающий с драйвером классаStream.sys корпорации Майкрософт. В этой документации мини-накопители, предоставляемые поставщиком в Stream.sys , называются мини-дисками потоковой передачи.

Например, устройства захвата видео и DVD-проигрыватели могут поддерживаться с мини-дисками потоковой передачи. Сведения о конкретных технологиях см. в разделе Устройства захвата видео и мини-накопители декодера DVD.

Мини-драйверы потоковой передачи поддерживают семантику потоковой передачи ядра. Чтобы использовать этот документ, разработчики драйверов должны быть знакомы с основными понятиями потоковой передачи ядра, как описано в разделе Потоковая передача ядра.

Драйвер класса stream предназначен для упрощения написания аппаратных драйверов для устройств потоковой передачи, обрабатывая многие аспекты взаимодействия с операционной системой.

  • Мини-драйвер может разрешить драйверу класса потока обрабатывать синхронизацию от своего имени. Например, драйвер класса потока может при необходимости сериализовать запросы ввода-вывода для мини-драйвера. Разрешение драйверу класса обрабатывать синхронизацию делает мини-отвертку многопроцессорной, но невосстановленной. Это подходит для оборудования низкого и среднего уровня.

  • Драйвер класса автоматически синхронизирует операции с файлами. Например, открытие потока и устройство правильно сериализуются без использования мини-драйвера с использованием мьютексов, семафоров или событий.

  • Драйвер класса абстрагирует реализацию семантики потоковой передачи ядра из мини-драйвера.

  • Драйвер класса обрабатывает все взаимодействия с диспетчером PnP. Пример:

    • Драйвер класса создает объект функционального устройства от имени мини-драйвера.
    • Драйвер класса управляет конфигурацией ресурсов (например, преобразованием адресов портов, преобразованием и сопоставлением диапазонов памяти, а также прерываниями подключения).
    • Драйвер класса обрабатывает PnP IRP, например IRP_MN_START_DEVICE или IRP_MN_STOP_DEVICE.
  • Все низкоуровневое управление буфером обрабатывается драйвером класса:

    • При необходимости выделите объект адаптера DMA.
    • Сопоставление буферов и создание точечных и сборных списков для DMA.
    • Правильная блокировка и очистка буферов для DMA и PIO.
  • Вся проверка параметров IOCTL выполняется драйвером класса.

  • Все запросы задаются драйвером класса с таймером наблюдения.

  • Мини-драйвер не создает объект устройства, но при необходимости предоставляет общий доступ к объекту устройства драйвера класса. Это позволяет сэкономить системные ресурсы.

  • Для каждого адаптера создается только один объект устройства. Несколько вложенных компонентов (называемых потоками), поддерживаемых адаптером, представлены контактами потоковой передачи ядра.