总线驱动程序为总线控制器、适配器或网桥提供服务(请参阅可能的驱动程序层图)。 Microsoft为最常见的总线(如 PCI、PnpISA、SCSI 和 USB)提供总线驱动程序。 其他总线驱动程序可由 IHV 或 OEM 提供。 总线驱动程序是必需的驱动程序;计算机上每种类型的总线都有一个总线驱动程序。 如果计算机上有多个相同类型的总线,总线控制器可以管理多个总线。
公交车司机的主要职责是:
在其总线上枚举设备。
响应即插即用 IRP 请求和电源管理 IRP 请求。
多路复用访问巴士(对于某些总线)。
通用地管理和控制其总线上的设备。
总线驱动程序本质上是同时枚举子级的 函数驱动程序 。
在枚举期间,总线驱动程序标识其总线上的设备,并为其创建设备对象。 (有关设备对象的信息,请参阅 设备对象和设备堆栈。总线驱动程序用于标识连接的设备的方法取决于特定的总线。
总线驱动程序代表其总线上的设备执行某些作,包括访问设备寄存器以物理方式更改设备的电源状态。 例如,当设备进入睡眠状态时,总线驱动程序会设置设备寄存器以将设备置于适当的设备电源状态。
总线驱动程序不会处理连接到其总线的子设备的读取和写入请求。 子设备的 函数驱动程序处理对子设备的读取和写入请求。 只有在 原始模式下 使用子设备时,父总线驱动程序才会处理设备的读取和写入。
由于总线驱动程序充当其控制器、适配器或桥的函数驱动程序,因此它还管理这些组件的设备电源策略。
总线驱动程序可以通过驱动程序/微型驱动程序对的方式实现,就像 SCSI 端口/微型端口驱动程序对驱动 SCSI 主机总线适配器(HBA)一样。 在此类驱动程序对中,微型驱动程序链接到第二个驱动程序,即 DLL。