为硬件编写 AVStream 微型驱动程序

在供应商提供的 AVStrMiniDeviceStart 中,支持硬件的 AVStream 微型驱动程序应首先分析资源列表,然后调用 IoConnectInterrupt (ISR) 注册中断服务例程。

如果驱动程序支持直接内存访问 (DMA) ,则需要执行其他步骤。 如果驱动程序实现了 DMA,请参阅 AVStream DMA 服务

如果多个应用程序可能会使用设备同时生成筛选器图,则必须注意防止图形之间的干扰。 具体而言,如果使用设备在应用程序中构造图形,则不得干扰使用处于不停止状态的设备的应用程序。

可以通过在图形转换为KSSTATE_ACQUIRE后加载微代码来避免干扰。 这将保护当前正在运行的图形,因为当另一个图形当前正在运行时,新图形不会转换为 KSSTATE_ACQUIRE 。 若要接收引脚状态更改通知,请在 KSPIN_DISPATCH 结构中提供 AVStrMiniPinSetDeviceState 回调例程。

但是,为了最大程度地减少图形启动时间,可能需要在图形到达KSSTATE_ACQUIRE之前加载微代码。 在这种情况下,请考虑在启动期间在低优先级后台线程中加载微代码。 此解决方案不会干扰其他应用程序,减少图形启动时间,如果异步执行,则不应延长启动时间。

但是,启动后,在图形到达KSSTATE_ACQUIRE之前,不要重新加载微代码或操作硬件寄存器。

若要查看新图形的连接如何干扰正在运行的图形,请考虑支持编码和解码但一次只执行其中一项任务的视频捕获设备。 微型驱动程序公开编码筛选器和解码筛选器。

应用程序生成包含编码筛选器的筛选器图。 微型驱动程序在引脚连接时加载微代码进行编码。 筛选器图开始,硬件开始编码。

当硬件进行编码时,另一个应用程序在筛选器图中放置解码筛选器。 连接解码引脚 时,在引脚状态更改为KSSTATE_ACQUIRE之前,微型驱动程序会尝试配置硬件进行解码。 此重新配置会干扰当前活动的编码图,并可能导致驱动程序不稳定。