Инициализация minidriver AVStream
Мини-driver AVStream, который не обрабатывает инициализацию устройства самостоятельно, вызывает KsInitializeDriver из подпрограммы DriverEntry мини-драйвера. KsInitializeDriver инициализирует объект драйвера AVStream, помимо отправки IRP, добавления сообщений устройства PnP и выгрузки.
При вызове KsInitializeDriver мини-диск передает указатель на объект драйвера, чтобы инициализировать указатель на путь к реестру и при необходимости объект дескриптора устройства. Обратите внимание, что передача объекта KSDEVICE_DESCRIPTOR не требуется. Если мини-диск передает дескриптор устройства, AVStream создает устройство с указанными характеристиками во время AddDevice.
Объект дескриптора устройства содержит указатель на структуру KSDEVICE_DISPATCH , а также массив дескрипторов фильтра. Укажите KSFILTER_DESCRIPTOR для каждого типа фильтра, который поддерживает мини-driver. Когда мини-диск вызывает KsInitializeDriver, AVStream создает объект фабрики фильтров для каждого типа фильтра, предоставляемого мини-driver. Отдельные фильтры затем создаются фабрикой фильтров после получения IRP создания для связанного элемента создания. Каждый дескриптор фильтра содержит указатель на массив KSPIN_DESCRIPTOR_EX объектов. AVStream создает фабрику контактов в соответствующем фильтре для каждого типа закрепления, предоставляемого мини-driver с помощью этого фильтра.
При подключении к заданному типу закреплений в фильтре фабрика контактов AVStream создает закрепленный объект. Обратите внимание, что каждый фильтр должен предоставлять по крайней мере один контакт. Мини-driver использует элемент InstancesNecessary KSPIN_DESCRIPTOR_EX, чтобы определить количество экземпляров этого типа закрепления, необходимых для правильной работы фильтра. Аналогичным образом мини-диск может наложить максимальное количество контактов, экземпляр которых фабрика контактов может создать с помощью элемента InstancesPossible этой структуры.
AVStream поддерживает два типа обработки: фильтрацию и обработку, ориентированную на пин-код. При раскладке дескрипторов решите, какой тип обработки будет выполнять каждый тип фильтра.
Установка minidriver AVStream
Мини-driver AVStream должен иметь INF-файл, который система использует для установки драйвера. INF-файл AVStream основан на общем формате INF, который описан в разделе Создание INF-файла. Вы также можете ссылаться на INF-файлы, поставляемые с примерами драйверов AVStream в комплекте драйверов Windows (WDK). Помните о следующих рекомендациях, относящихся к AVStream.
Если вы пишете мини-накопитель для родительского устройства, раздел AddReg INF-файла должен содержать:
[ParentName.AddReg]
HKR,"ENUM\[DeviceName]",pnpid,,"[string]"
Если вы пишете мини-диск для дочернего устройства, раздел AddReg должен содержать:
[Manufacturer]
...=ChildName
[ChildName]
...=ChildName.Device,AVStream\[string]
Обратите внимание, что "AVStream" будет "Stream" для драйвера класса потока.
Для всех мини-драйверов AVStream строка ссылки на фильтр в INF-файле должна соответствовать элементу ReferenceGuidструктуры KSFILTER_DESCRIPTOR .
Дополнительные сведения о дескрипторов см. в разделе Дескрипторы AVStream.