Erforderliche Dispatchroutinen
Die meisten Treiber müssen die folgenden Dispatchroutinen verarbeiten:
-
IRP_MJ_PNP gibt eine Anforderung an, die PnP-Geräteerkennung, Hardwarekonfiguration oder Ressourcenzuordnung umfasst. Solche Anforderungen werden in der Regel vom PnP-Manager oder von einem eng gekoppelten Treiber auf höherer Ebene an einen Gerätetreiber gesendet.
-
IRP_MJ_POWER gibt eine Anforderung an, die sich auf den Energiezustand des Geräts oder des Systems bezieht. Solche Anforderungen werden entweder vom Power Manager oder einem eng gekoppelten Treiber auf höherer Ebene an den Gerätetreiber gesendet.
-
IRP_MJ_CREATE gibt entweder an, dass ein durch den Benutzermodus geschütztes Subsystem, möglicherweise im Namen einer Anwendung oder eines subsystemspezifischen Treibers, ein Handle für das Dateiobjekt angefordert hat, das dem Zielgerätobjekt zugeordnet ist, oder dass ein Treiber auf höherer Ebene sein Geräteobjekt mit dem Zielgerätobjekt verbindet oder anfügt.
-
IRP_MJ_CLOSE gibt an, dass das letzte Handle des Dateiobjekts, das dem Zielgerätobjekt zugeordnet war, geschlossen und freigegeben wurde. Alle E/A-Anforderungen wurden abgeschlossen oder abgebrochen, sodass keine ausstehenden Verweise auf den Dateiobjektzeiger vorhanden sind.
-
IRP_MJ_READ gibt eine E/A-Anforderung zum Übertragen von Daten vom zugrunde liegenden physischen Gerät an das System an.
-
IRP_MJ_WRITE gibt eine E/A-Anforderung an, um Daten vom System auf das zugrunde liegende physische Gerät zu übertragen.
-
IRP_MJ_DEVICE_CONTROL gibt eine Anforderung an, die einen systemdefinierten, gerätetypspezifischen E/A-Steuerungscode enthält, der einen gerätetypspezifischen Vorgang angibt. Übergeordnete Treiber übergeben diese IRPs an ihre zugrunde liegenden Gerätetreiber, die die Anforderung in der Regel durch Zugriff auf das Gerät verarbeiten.
-
IRP_MJ_INTERNAL_DEVICE_CONTROL gibt eine Anforderung an, die an den Gerätetreiber gesendet wird, in den meisten Fällen von einem eng gekoppelten Treiber auf höherer Ebene, in der Regel mit einem privat definierten, treiberspezifischen und gerätetypspezifischen oder gerätespezifischen E/A-Steuerungscode, der einen gerätetypspezifischen oder gerätespezifischen Vorgang anfordert.
Nur bestimmte Arten von Treibern sind erforderlich, um systemdefinierte interne Geräte-E/A-Steuerungsanforderungen zu verarbeiten, einschließlich bestimmter SCSI-Treiber, Tastatur- oder Mausgerätetreiber und paralleler Treiber, die mit vom System bereitgestellten Treibern zusammenarbeiten.
-
IRP_MJ_SYSTEM_CONTROL wird verwendet, um WMI-Anforderungen an Treiber anzugeben. Weitere Informationen zu WMI finden Sie unter Windows-Verwaltungsinstrumentation.
Die Dispatchroutinen, die ein Treiber bereitstellen muss, variieren je nach Typ und Funktionalität des zugrunde liegenden physischen Geräts. Gerätetypspezifische Informationen zu IRP-Hauptfunktionscodes, die Treiber verarbeiten müssen, finden Sie in der gerätetypspezifischen Dokumentation im Windows Driver Kit (WDK).