Freigeben über


Beispiel-E/A-Anforderung – Übersicht

Die folgende Abbildung zeigt eine Übersicht darüber, was geschieht, wenn ein Subsystem ein Dateiobjekt öffnet, das eine Datendatei im Auftrag einer Anwendung darstellt.

Diagramm, das das Öffnen eines Dateiobjekts veranschaulicht.

  1. Das Subsystem ruft einen E/A-Systemdienst auf, um eine benannte Datei zu öffnen.

  2. Der E/A-Manager ruft den Objekt-Manager auf, um die benannte Datei nachzuschlagen und symbolische Verknüpfungen für das Dateiobjekt aufzulösen. Außerdem wird der Sicherheitsverweismonitor aufgerufen, um zu überprüfen, ob das Subsystem über die richtigen Zugriffsrechte zum Öffnen dieses Dateiobjekts verfügt.

  3. Wenn das Volume noch nicht eingebunden ist, hält der E/A-Manager die geöffnete Anforderung vorübergehend an und ruft ein oder mehrere Dateisysteme auf, bis eines von ihnen das Dateiobjekt als etwas erkennt, das es auf einem der vom Dateisystem verwendeten Massenspeichergeräte gespeichert hat. Wenn das Dateisystem das Volume eingebunden hat, setzt der E/A-Manager die Anforderung fort.

  4. Der E/A-Manager weist Arbeitsspeicher für die offene Anforderung zu und initialisiert eine IRP. Für Treiber entspricht ein geöffneter einer "Create"-Anforderung.

  5. Der E/A-Manager ruft den Dateisystemtreiber auf und übergibt ihn über das IRP. Der Dateisystemtreiber greift auf seinen E/A-Stapelspeicherort im IRP zu, um zu bestimmen, welchen Vorgang er ausführen muss, überprüft die Parameter, bestimmt, ob sich die angeforderte Datei im Cache befindet, und richtet, falls nicht, den E/A-Stapelspeicherort des nächstniedrigen Treibers im IRP ein.

  6. Beide Treiber verarbeiten die IRP und schließen den angeforderten E/A-Vorgang ab und rufen dabei Kernelmodus-Supportroutinen auf, die vom E/A-Manager und von anderen Systemkomponenten bereitgestellt werden (nicht in der vorherigen Abbildung dargestellt).

  7. Die Treiber geben die IRP an den E/A-Manager zurück, wobei der E/A-status-Block im IRP festgelegt ist, um anzugeben, ob der angeforderte Vorgang erfolgreich war oder warum er fehlgeschlagen ist.

  8. Der E/A-Manager ruft die E/A-status vom IRP ab, damit er status Informationen über das geschützte Subsystem an den ursprünglichen Aufrufer zurückgeben kann.

  9. Der E/A-Manager gibt die abgeschlossene IRP frei.

  10. Der E/A-Manager gibt ein Handle für das Dateiobjekt an das Subsystem zurück, wenn der Öffnenvorgang erfolgreich war. Wenn ein Fehler aufgetreten ist, wird die entsprechende status an das Subsystem zurückgegeben.

Nachdem ein Subsystem erfolgreich ein Dateiobjekt geöffnet hat, das eine Datendatei, ein Gerät oder ein Volume darstellt, verwendet das Subsystem das zurückgegebene Handle, um das Dateiobjekt in nachfolgenden Anforderungen für Geräte-E/A-Vorgänge (in der Regel Lese-, Schreib- oder Geräte-E/A-Steuerungsanforderungen) zu identifizieren. Um eine solche Anforderung zu stellen, ruft das Subsystem E/A-Systemdienste auf. Der E/A-Manager leitet diese Anforderungen als IRPs weiter, die an die entsprechenden Treiber gesendet werden.