Freigeben über


Hauptfunktionscodes für IRP

Each driver-specific I/O stack location (IO_STACK_LOCATION) for every IRP contains a major function code (IRP_MJ_XXX), which tells the driver what operation it or the underlying device driver should carry out to satisfy the I/O request. Jeder Kernelmodustreiber muss Verteilerroutinen für die wichtigsten Funktionscodes bereitstellen, die unterstützt werden müssen.

The specific operations a driver carries out for a given IRP_MJ_XXX code depend somewhat on the underlying device, particularly for IRP_MJ_DEVICE_CONTROL and IRP_MJ_INTERNAL_DEVICE_CONTROL requests. Beispielsweise unterscheiden sich die Anforderungen, die an einen Tastaturtreiber gesendet werden, zwangsläufig von denen, die an einen Datenträgertreiber gesendet werden. Der E/A-Manager definiert jedoch die Parameter und den I/O-Stapelspeicherort für jeden systemdefinierten Hauptfunktionscode.

Every higher-level driver must set up the appropriate I/O stack location in IRPs for the next-lower-level driver and call IoCallDriver, either with each input IRP, or with a driver-created IRP (if the higher-level driver holds on to the input IRP). Folglich muss jeder Zwischentreiber eine Dispatch-Routine für jeden wichtigen Funktionscode bereitstellen, den der zugrunde liegende Gerätetreiber verarbeitet. Andernfalls wird ein neuer Zwischentreiber die Kette "unterbrechen", wenn eine Anwendung oder immer noch höherer Ebene versucht, eine E/A-Anforderung an den zugrunde liegenden Gerätetreiber zu senden.

File system drivers and legacy file system filter drivers also handle a required subset of system-defined IRP_MJ_XXX function codes, some with subordinate IRP_MN_XXX function codes. Weitere Informationen zum Behandeln dieser IRPs finden Sie unter IRP-Hauptfunktionscodes für Dateisystemtreiber und ältere FS-Filtertreiber.

Treiber behandeln IRPs, die mit einigen oder allen folgenden Hauptfunktionscodes festgelegt sind:

IRP_MJ_CLEANUP

IRP_MJ_CLOSE

IRP_MJ_CREATE

IRP_MJ_DEVICE_CONTROL

IRP_MJ_FILE_SYSTEM_CONTROL

IRP_MJ_FLUSH_BUFFERS

IRP_MJ_INTERNAL_DEVICE_CONTROL

IRP_MJ_PNP

IRP_MJ_POWER

IRP_MJ_QUERY_INFORMATION

IRP_MJ_READ

IRP_MJ_SET_INFORMATION

IRP_MJ_SHUTDOWN

IRP_MJ_SYSTEM_CONTROL

IRP_MJ_WRITE

Die in diesem Abschnitt beschriebenen Eingabe- und Ausgabeparameter sind die funktionsspezifischen Parameter im IRP.

For more information about IRPs, see Handling IRPs.