Freigeben über


Geräteobjektbeispiel für einen SCSI-HBA

Die folgende Abbildung zeigt die Geräteobjekte, die für ein System mit einem PCI IEEE 1394-Controller und einem PCI-SCSI-Adapter mit angeschlossenem CD-ROM und partitionierbarem Datenträgergerät erstellt werden. Objekte für Geräte, die an den IEEE 1394-Controller angefügt sind, werden unter Device Object Example for an IEEE 1394 Controller (Device Object Example for an IEEE 1394 Controller) angezeigt und beschrieben.

Geräteobjekte, die für ein System mit einem PCI IEEE 1394-Controller und einem PCI-SCSI-Adapter mit angeschlossenem CD-ROM und partitionierbarem Datenträgergerät erstellt werden.

Geräteobjektstruktur für CD-ROM- und Datenträgergeräte in einem SCSI-HBA

Ausgehend vom unteren Rand der Abbildung werden die einzelnen Geräteobjekte und der zugehörige Treiber wie folgt beschrieben:

  1. Der Speicherbustreiber erstellt die FDO für den Speicherbus und fügt sie an die vom PnP-Manager erstellte Speicherbus-PDO an (nicht in dieser Abbildung dargestellt). Die Struktur der Geräteobjektstruktur unterhalb des Speicherbus-FDO hängt vom Speicherbus und seiner Integration in das System ab. Speichertreiber oberhalb der Porttreiberebene interagieren nicht mit diesen niedrigeren Objekten.

    Diese Abbildung zeigt die vom PCI-Bustreiber erstellte Speicherbus-FDO für ein System mit einem PCI-Bus.

  2. Der PCI-Bustreiber listet auf und erstellt eine PDO für jeden Speicheradapter auf seinem Bus. Der entsprechende Speicherporttreiber erstellt eine FDO und fügt sie für den Adapter an das PDO an.

    Diese Abbildung zeigt zwei Adapter-PDOs: eine für einen IEEE 1394-Controller (beschrieben in Device Object Example for an IEEE 1394 Controller) und eine andere für einen SCSI-HBA. Der SCSI-Porttreiber und ein zugehöriger Miniporttreiber erstellen eine FDO und fügen sie an die SCSI-Adapter-PDO an.

  3. Der Speicherporttreiber virtualisiert Zielgeräte, indem er ein PDO für jedes Zielgerät erstellt, das an den Adapter angeschlossen ist. Diese Abbildung zeigt zwei solche PDOs, die von den SCSI-Port-/Miniporttreibern erstellt wurden: eine für ein Festplattenlaufwerk und eins für eine CD-ROM.

  4. Mindestens ein Filtertreiber kann ein Filtergeräteobjekt (Filter DO) an eine Zielgerät-PDO anfügen, die von einem Speicherporttreiber exportiert wird. Ein solcher Filtertreiber kann Anforderungen abfangen und ändern, die vom Klassentreiber an das Zielgerät gesendet werden, um beispielsweise gerätespezifische Probleme zu umgehen, ohne hardwarespezifische Änderungen an der generischen Klasse oder den Porttreibern zu erfordern.

    Diese Abbildung zeigt eine Filter-DO, die von einem CD-Audiofiltertreiber an das PDO der CD-ROM angefügt ist.

  5. Ein Speicherklassentreiber erstellt eine FDO und fügt sie an das nächstniedrige Geräteobjekt an. Dabei handelt es sich entweder um einen Zielgeräte-PDO, der von einem Speicherporttreiber exportiert wird, oder um eine Filter-DO, die durch einen dazwischen liegenden Filtertreiber an den Stapel angefügt ist. Der Klassentreiber stellt alle nachfolgenden Anforderungen an das Speichergerät über das Geräteobjekt des unteren Treibers aus.

    Diese Abbildung zeigt zwei solche FDOs: einen, der ein CD-ROM-Gerät darstellt, und eine, die Partition 0 eines Festplattenlaufwerks darstellt. Partition 0 stellt den gesamten Rohdatenträger dar und ist immer vorhanden, unabhängig davon, ob das Laufwerk partitioniert ist oder nicht.

  6. Ein Klassentreiber kann auch als Bustreiber fungieren und eine Liste von PDOs zurückgeben, wenn der PnP-Manager nach seinen untergeordneten Geräten fragt (IRP_MN_QUERY_DEVICE_RELATIONS mit BusRelations). Beispielsweise kann ein Treiber eines partitionierten Mediengeräts, z. B. eines Wechseldatenträgers, eine Liste von PDOs zurückgeben, die seine Partitionen darstellen. Übergeordnete Treiber fügen FDOs an diese PDOs an.

    Diese Abbildung zeigt drei solche PDOs, die jeweils eine Datenträgerpartition darstellen, die als Zielgerät adressiert werden kann.

    Bei einem festen Datenträger fügt der Partitions-Manager an die FDO an, die Partition 0 darstellt, und verarbeitet PnP-Vorgänge im Namen aller Partitionen. Die Aktivitäten des Partitions-Managers sind für den Datenträgerklassentreiber und alle Filtertreiber der oberen Ebene transparent.

  7. Mindestens ein Filtertreiber kann über einem Klassentreiber angefügt werden. Im Gegensatz zu einem Filtertreiber der unteren Ebene fängt ein Filtertreiber der oberen Ebene IRPs ab, die an den Klassentreiber gesendet werden, und kann diese ändern, bevor sie an das nächstniedrige Geräteobjekt weitergeleitet werden. Der Filtertreiber kann alle Lese-/Schreibanforderungen abfangen und die Daten nach Bedarf transformieren sowie zusätzliche E/A-Steuerungscodes (IOCTLs) definieren, z. B. damit eine Benutzeranwendung Kennwörter oder andere zugehörige Informationen bereitstellen kann.

    Diese Abbildung zeigt eine Filter-DO, die von einem Datenträgerverschlüsselungsfiltertreiber erstellt und an den Datenträger-PDO für Partition 1 angefügt ist.