Инициализация минидрайвера AVStream

Минидрайвер AVStream, который не обрабатывает инициализацию устройства самостоятельно, вызывает KsInitializeDriver из функции DriverEntry минидрайвера. KsInitializeDriver инициализирует объект драйвера AVStream, а также диспетчеризацию IRP-запросов, добавление устройств в PnP, и выгрузку.

При вызове KsInitializeDriver минидрайвер передает указатель на объект драйвера для инициализации указателя на путь реестра, а при необходимости — объекта дескриптора устройства. Обратите внимание, что передача объекта KSDEVICE_DESCRIPTOR не требуется. Если минидрайвер передает дескриптор устройства, AVStream создает устройство с указанными характеристиками в момент выполнения функции AddDevice.

Объект дескриптора устройства содержит указатель на структуру KSDEVICE_DISPATCH , а также массив дескрипторов фильтров. Укажите KSFILTER_DESCRIPTOR для каждого типа фильтра, который поддерживает миникодрайвер. Когда миничастный драйвер вызывает KsInitializeDriver, AVStream создает объект завода фильтров для каждого типа фильтра, предоставляемого миничастным драйвером. Затем отдельные фильтры создаются фабрикой фильтров после получения запроса на создание IRP для связанного создаваемого элемента. Каждый дескриптор фильтра содержит указатель на массив объектов KSPIN_DESCRIPTOR_EX . AVStream создает объект пинов в соответствующем фильтре для каждого типа пина, который минидрайвер предоставляет через этот фильтр.

При подключении к заданному типу пина в фильтре фабрика пинов AVStream создает объект пина. Обратите внимание, что каждый фильтр должен предоставлять по крайней мере один штырь. Минидрайвер использует элемент InstancesNecessary KSPIN_DESCRIPTOR_EX для определения числа экземпляров этого типа контакта, необходимых для правильной работы фильтра. Аналогичным образом минидрайвер может установить максимальное ограничение на количество пинов, которые фабрика пинов может создать с помощью члена InstancesPossible этой структуры.

AVStream поддерживает два типа обработки: обработку, ориентированную на фильтрацию, и пин-центричную обработку. При создании дескрипторов решите, какой тип обработки будет выполняться каждый тип фильтра.

Установка мини-driver AVStream

Минидрайвер AVStream должен иметь INF файл, который система использует для установки драйвера. INF-файл AVStream основан на общем формате INF, описанном в разделе "Создание INF-файла". Вы также можете обращаться к INF-файлам, предоставленным в примерах драйверов AVStream в комплекте драйверов Windows (WDK). Имейте в виду следующие рекомендации, относящиеся к AVStream.

Если вы пишете мини-driver для родительского устройства, раздел AddReg файла INF должен содержать следующее:

[ParentName.AddReg]
HKR,"ENUM\[DeviceName]",pnpid,,"[string]"

Если вы пишете минидрайвер для дочернего устройства, раздел AddReg должен содержать:

[Manufacturer]
...=ChildName
[ChildName]
...=ChildName.Device,AVStream\[string]

Обратите внимание, что "AVStream" будет "Stream" для драйвера класса потока.

Для всех мини-drivers AVStream строка ссылки на фильтр в INF-файле должна соответствовать элементу ReferenceGuid структуры KSFILTER_DESCRIPTOR .

Дополнительные сведения о дескрипторах см. в статье AVStream Descriptors.