Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der E/A-Manager, Plug-and Play-Manager und Power Manager verwenden E/A-Anforderungspakete (IRPs), um mit Kernelmodustreibern zu kommunizieren und Treibern die Kommunikation miteinander zu ermöglichen.
Der E/A-Manager führt die folgenden Schritte aus:
Akzeptiert E/A-Anforderungen, die in der Regel von Anwendungen im Benutzermodus stammen.
Erstellt IRPs, die die E/A-Anforderungen darstellen.
Leitet die IRPs an die entsprechenden Treiber weiter.
Verfolgt die IRPs, bis sie abgeschlossen sind.
Gibt den Status an den ursprünglichen Anforderer jeder E/A-Operation zurück.
Ein IRP kann an mehrere Treiber weitergeleitet werden. Beispielsweise kann eine Anforderung zum Öffnen einer Datei auf einem Datenträger zuerst zu einem Dateisystemtreiber, über einen Zwischenspiegeltreiber und letztendlich an einen Datenträgertreiber und möglicherweise an einen PnP-Hardwarebustreiber gehen. Diese Gruppe von Treibern wird als Treiberstapel bezeichnet.
Daher verfügt jedes IRP über einen festen Teil und einen treiberspezifischen E/A-Stapelort für jeden Treiber, der das Gerät steuert:
Im festen Teil (oder Header) verwaltet der E/A-Manager Informationen über die ursprüngliche Anforderung, z. B. die Thread-ID und parameter des Aufrufers, die Adresse des Geräteobjekts, auf dem eine Datei geöffnet ist, usw. Der feste Teil enthält auch einen E/A-Statusblock, in dem Treiber Informationen zum Status des angeforderten E/A-Vorgangs festlegen.
An der höchsten Ebene des I/O-Stacks des Treibers legt der E/A-Manager, der Plug-and-Play-Manager oder der Power-Manager treiberspezifische Parameter fest, wie den Funktionscode des angeforderten Vorgangs und den Kontext, den der jeweilige Treiber nutzt, um zu bestimmen, was er tun soll. Jeder Treiber richtet wiederum die E/A-Stapelposition des nächsten niedrigeren Treibers im Treiberstapel ein.
Da jeder Treiber ein IRP verarbeitet, kann er auf seine I/O-Stapelposition im IRP zugreifen und das IRP in jeder Phase des Treiberbetriebs wiederverwenden. Darüber hinaus können Treiber auf höherer Ebene IRPs erstellen (oder wiederverwenden), um Anforderungen an noch niedrigere Treiber zu senden.
Eine ausführliche Erläuterung der IRPs finden Sie unter Behandeln von IRPs.