Bustreiber
Ein Bustreiber verwendet einen Buscontroller, einen Adapter oder eine Brücke (siehe Abbildung mögliche Treiberebenen ). Microsoft bietet Bustreiber für die meisten gängigen Busse wie PCI, PnpISA, SCSI und USB. Andere Bustreiber können von IHVs oder OEMs bereitgestellt werden. Bustreiber sind erforderliche Treiber; es gibt einen Bustreiber für jeden Bustyp auf einem Computer. Ein Bustreiber kann mehrere Busse bedienen, wenn mehrere Busse desselben Typs auf dem Computer vorhanden sind.
Die Hauptaufgaben eines Busfahrers sind:
Listet die Geräte auf dem Bus auf.
Reagieren Sie auf Plug & Play IRPs und Energieverwaltungs-IRPs.
Multiplex-Zugriff auf den Bus (für einige Busse).
Verwalten Sie die Geräte auf ihrem Bus generisch.
Bustreiber sind im Wesentlichen Funktionstreiber , die auch untergeordnete Elemente auflisten.
Während der Enumeration identifiziert ein Bustreiber die Geräte auf seinem Bus und erstellt Geräteobjekte für sie. (Informationen zu Geräteobjekten finden Sie unter Geräteobjekte und Gerätestapel.) Die Methode, die ein Bustreiber zum Identifizieren verbundener Geräte verwendet, hängt vom jeweiligen Bus ab.
Ein Bustreiber führt bestimmte Vorgänge im Namen der Geräte auf seinem Bus aus, einschließlich des Zugriffs auf Geräteregister, um den Energiezustand eines Geräts physisch zu ändern. Wenn das Gerät beispielsweise in den Energiesparmodus wechselt, legt der Bustreiber die Geräteregister so fest, dass das Gerät in den richtigen Gerätestromzustand versetzt wird.
Beachten Sie jedoch, dass ein Bustreiber keine Lese- und Schreibanforderungen für die untergeordneten Geräte verarbeitet, die mit seinem Bus verbunden sind. Lese- und Schreibanforderungen an ein untergeordnetes Gerät werden vom Funktionstreiber des untergeordneten Geräts verarbeitet. Nur wenn das untergeordnete Gerät im rohen Modus verwendet wird, verarbeitet der übergeordnete Bustreiber Lese- und Schreibvorgänge für das Gerät.
Da ein Bustreiber als Funktionstreiber für seinen Controller, Adapter oder seine Brücke fungiert, verwaltet er auch die Gerätestromrichtlinie für diese Komponenten.
Ein Bustreiber kann als Treiber/Minidriver-Paar implementiert werden, so wie ein SCSI-Port/Miniport-Treiberpaar einen SCSI-Hostbusadapter (HBA) antreibt. Bei solchen Treiberpaaren ist der Minidriver mit dem zweiten Treiber verknüpft, bei dem es sich um eine DLL handelt.