Chauffeurs d’autobus
Un pilote de bus met en service un contrôleur de bus, un adaptateur ou un pont (voir la figure Couches de pilotes possibles ). Microsoft fournit des pilotes de bus pour les bus les plus courants, tels que PCI, PnpISA, SCSI et USB. D’autres chauffeurs d’autobus peuvent être fournis par des IVS ou des fabricants oem. Les conducteurs d’autobus sont des conducteurs obligatoires; il y a un pilote de bus pour chaque type de bus sur une machine. Un chauffeur de bus peut servir plusieurs bus s’il y a plusieurs bus du même type sur la machine.
Les principales responsabilités d’un pilote d’autobus sont les suivantes :
Énumérez les appareils sur son bus.
Répondre à Plug-and-Play IRP et aux IRP de gestion de l’alimentation.
Accès multiplex au bus (pour certains bus).
Administrer de manière générique les appareils sur son bus.
Les pilotes de bus sont essentiellement des pilotes de fonction qui énumèrent également les enfants.
Pendant l’énumération, un pilote de bus identifie les appareils de son bus et crée des objets de périphérique pour ceux-ci. (Pour plus d’informations sur les objets d’appareil, consultez Device Objects and Device Stacks.) La méthode utilisée par un pilote de bus pour identifier les appareils connectés dépend du bus particulier.
Un pilote de bus effectue certaines opérations pour le compte des appareils de son bus, notamment l’accès aux registres d’appareils pour modifier physiquement l’état d’alimentation d’un appareil. Par exemple, lorsque l’appareil est mis en veille, le pilote de bus définit les registres de périphérique pour placer l’appareil dans l’état d’alimentation approprié.
Notez toutefois qu’un pilote de bus ne gère pas les demandes de lecture et d’écriture pour les appareils enfants connectés à son bus. Les demandes de lecture et d’écriture adressées à un appareil enfant sont gérées par le pilote de fonction de l’appareil enfant. Ce n’est que si l’appareil enfant est utilisé en mode brut que le pilote de bus parent gère les lectures et les écritures pour l’appareil.
Étant donné qu’un pilote de bus agit en tant que pilote de fonction pour son contrôleur, adaptateur ou pont, il gère également la stratégie d’alimentation des appareils pour ces composants.
Un pilote de bus peut être implémenté en tant que paire pilote/minidriver, de la façon dont une paire de pilotes port/miniport SCSI pilote un adaptateur de bus hôte (HBA) SCSI. Dans ces paires de pilotes, le minidriver est lié au deuxième pilote, qui est une DLL.