Unterstützung asynchroner E/A-Vorgänge
Der E/A-Manager bietet asynchrone E/A-Unterstützung, sodass der Absender einer E/A-Anforderung (in der Regel eine Benutzermodusanwendung, manchmal aber ein anderer Treiber) die Ausführung fortsetzen kann, anstatt auf den Abschluss der E/A-Anforderung zu warten. Die asynchrone E/A-Unterstützung verbessert sowohl den Gesamtsystemdurchsatz als auch die Leistung von Code, der eine E/A-Anforderung stellt.
Bei asynchroner E/A-Unterstützung verarbeiten Kernelmodustreiber E/A-Anforderungen nicht unbedingt in derselben Reihenfolge, in der sie an den E/A-Manager gesendet wurden. Der E/A-Manager oder ein Treiber auf höherer Ebene kann E/A-Anforderungen neu anordnen, sobald sie empfangen werden. Ein Treiber kann eine große Datenübertragungsanforderung in kleinere Übertragungsanforderungen aufteilen. Darüber hinaus kann ein Treiber die E/A-Anforderungsverarbeitung überlappen, insbesondere in einer symmetrischen Multiprozessorplattform, wie in Multiprocessor-Safe erwähnt.
Darüber hinaus wird die Verarbeitung einer einzelnen E/A-Anforderung durch einen Kernelmodustreiber nicht unbedingt serialisiert. Das heißt, ein Treiber verarbeitet nicht unbedingt jedes IRP bis zum Abschluss, bevor er mit der Verarbeitung der nächsten eingehenden E/A-Anforderung beginnt.
Wenn ein Treiber ein IRP empfängt, antwortet er, indem er so viele IRP-spezifische Verarbeitungen wie möglich ausführt. Wenn der Treiber die asynchrone IRP-Verarbeitung unterstützt, kann er bei Bedarf ein IRP an den nächsten Treiber senden und mit der Verarbeitung des nächsten IRP beginnen, ohne auf den Abschluss des ersten IRP zu warten. Der Treiber kann eine "Vervollständigungsroutine" registrieren, die der E/A-Manager aufruft, wenn ein anderer Treiber die Verarbeitung eines IRP abgeschlossen hat. Treiber stellen einen status Wert im I/O-status-Block des IRP bereit, auf den andere Treiber zugreifen können, um die status einer E/A-Anforderung zu bestimmen.
Treiber können Zustandsinformationen zu ihren aktuellen E/A-Vorgängen in einem speziellen Teil ihrer Geräteobjekte verwalten, der als Geräteerweiterung bezeichnet wird.
Weitere Informationen finden Sie unter Behandeln von IRPs und Eingabe-/Ausgabetechniken.