Мини-драйверы потоковой передачи
Примечание В этом разделе подробно описан устаревший драйвер класса 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 выполняется драйвером класса.
Все запросы задаются драйвером класса с таймером наблюдения.
Мини-драйвер не создает объект устройства, но при необходимости предоставляет общий доступ к объекту устройства драйвера класса. Это позволяет сэкономить системные ресурсы.
Для каждого адаптера создается только один объект устройства. Несколько вложенных компонентов (называемых потоками), поддерживаемых адаптером, представлены контактами потоковой передачи ядра.