Freigeben über


Behandeln einer IRP, die vom Framework nicht unterstützt wird

[Gilt nur für KMDF]

Das Framework unterstützt keine E/A-Anforderungen mit den folgenden wichtigen IRP-Codes:

Wenn das Framework eine IRP empfängt, die einen dieser E/A-Funktionscodes enthält, verarbeitet das Framework die IRP nicht. Wenn ihr Treiber ein Filtertreiber ist, übergibt das Framework den IRP an den nächstniedrigen Treiber im Treiberstapel. Wenn Ihr Treiber kein Filtertreiber ist, ruft das Framework IoCompleteRequest auf, um die IRP mit dem status Wert STATUS_INVALID_DEVICE_REQUEST abzuschließen.

Wenn Ihr Treiber IRPs verarbeiten muss, die einen dieser E/A-Funktionscodes enthalten, muss der Treiber WdfDeviceInitAssignWdmIrpPreprocessCallback aufrufen, um eine EvtDeviceWdmIrpPreprocess-Ereignisrückruffunktion für einen E/A-Funktionscode zu registrieren.

Wenn der Treiber eine IRP empfängt, die einen E/A-Funktionscode enthält, für den der Treiber eine EvtDeviceWdmIrpPreprocess-Rückruffunktion registriert hat, übergibt das Framework die IRP an die Rückruffunktion. Die Rückruffunktion muss dann den IRP verarbeiten, indem sie die WDM-Regeln für die Behandlung von IRPs erfüllt. Der Treiber muss IoCompleteRequest aufrufen, um die IRP abzuschließen, oder er muss IoCallDriver aufrufen, um den IRP an den nächstniedrigen Treiber zu übergeben.

Ein Beispiel für eine EvtDeviceWdmIrpPreprocess-Rückruffunktion , die eine vom Framework nicht unterstützte IRP verarbeitet, finden Sie im Serial-Beispieltreiber .