初始化 AVStream 微型驱动程序

不自行处理设备初始化的 AVStream 微型驱动程序从微型驱动程序的 DriverEntry 例程调用 KsInitializeDriver。 除了 IRP 调度、PnP 添加设备消息和卸载之外,KsInitializeDriver 还初始化 AVStream 驱动程序的驱动程序对象。

在调用 KsInitializeDriver 时,微型驱动程序传递指向驱动程序对象的指针,以初始化指向注册表路径的指针,并选择性地传递设备描述符对象。 请注意,不需要传递 KSDEVICE_DESCRIPTOR 对象。 如果微型驱动程序确实传递了设备描述符,AVStream 将在 AddDevice 时间创建具有指定特征的设备。

设备描述符对象包含指向 KSDEVICE_DISPATCH 结构的指针以及筛选器描述符数组。 为微型驱动程序支持的每个筛选器类型提供 KSFILTER_DESCRIPTOR 。 当微型驱动程序调用 KsInitializeDriver 时,AVStream 会为微型驱动程序公开的每种类型的筛选器创建筛选器工厂对象。 然后,在收到关联创建项的创建 IRP 后,筛选器工厂将实例化单个筛选器。 每个筛选器描述符都包含指向KSPIN_DESCRIPTOR_EX对象的数组 指针。 AVStream 在相关筛选器上为微型驱动程序通过该筛选器公开的每种类型的引脚创建一个引脚工厂。

当与筛选器上的给定引脚类型建立连接时,AVStream 引脚工厂将创建一个引脚对象。 请注意,每个筛选器必须至少公开一个引脚。 微型驱动程序使用 KSPIN_DESCRIPTOR_EX 的 InstancesNecessary 成员来标识筛选器正常运行所需的此引脚类型的实例数。 同样,微型驱动程序可以对引脚工厂通过使用此结构的 InstancesPossible 成员实例化的引脚数施加最大值。

AVStream 支持两种类型的处理: 以筛选器为中心的处理以引脚为中心的处理。 在布局描述符时,确定每种筛选器类型将执行的处理类型。

安装 AVStream 微型驱动程序

AVStream 微型驱动程序必须具有系统用于安装驱动程序的 INF 文件。 AVStream INF 文件基于通用 INF 格式,如 创建 INF 文件中所述。 还可以参考 Windows 驱动程序工具包 (WDK) 中 AVStream 示例驱动程序提供的 INF 文件。 请记住以下特定于 AVStream 的准则。

如果要为父设备编写微型驱动程序,INF 文件的 AddReg 部分应包含:

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

如果要为子设备编写微型驱动程序, AddReg 部分应包含:

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

请注意,流类驱动程序的“AVStream”将是“Stream”。

对于所有 AVStream 微型驱动程序,INF 文件中特定于筛选器的引用字符串必须与 KSFILTER_DESCRIPTOR 结构的 ReferenceGuid 成员匹配。

有关描述符的详细信息,请参阅 AVStream 描述符