Freigeben über


EVT_WDFDEVICE_WDM_IRP_DISPATCH Rückruffunktion (wdfdevice.h)

[Gilt für KMDF und UMDF]

Die EvtDeviceWdmIrpDispatch-Ereignisrückruffunktion eines Treibers empfängt einen IRP, bevor das Framework die IRP verarbeitet.

Syntax

EVT_WDFDEVICE_WDM_IRP_DISPATCH EvtWdfdeviceWdmIrpDispatch;

NTSTATUS EvtWdfdeviceWdmIrpDispatch(
  [in]      WDFDEVICE Device,
  [in]      UCHAR MajorFunction,
  [in]      UCHAR MinorFunction,
  [in]      ULONG Code,
  [in]      WDFCONTEXT DriverContext,
  [in, out] PIRP Irp,
  [in]      WDFCONTEXT DispatchContext
)
{...}

Parameter

[in] Device

Ein Handle für ein Framework-Geräteobjekt.

[in] MajorFunction

Einer der wichtigsten IRP-Funktionscodes, die in wdm.h definiert sind.

[in] MinorFunction

Einer der E/A-IRP-Nebenfunktionscodes, die in wdm.h für den MajorFunction-Code definiert sind.

[in] Code

Gibt einen E/A-Steuerelementcodewert an. Dieser Parameter ist nur gültig, wenn MajorFunction auf IRP_MJ_DEVICE_CONTROL festgelegt ist.

[in] DriverContext

Ein nicht typisierter Zeiger auf vom Treiber definierte Kontextinformationen, die der Treiber beim Aufrufen von WdfDeviceConfigureWdmIrpDispatchCallback bereitgestellt hat.

[in, out] Irp

Ein Zeiger auf eine IRP-Struktur.

[in] DispatchContext

Ein nicht typisierter Zeiger auf die Dispatchkontextinformationen des Frameworks. Der Treiber muss diesen Parameter bereitstellen, wenn er WdfDeviceWdmDispatchIrp aufruft.

Rückgabewert

Die Rückruffunktion EvtDeviceWdmIrpDispatch muss:

  • Gibt den Wert zurück, den die WdfDeviceWdmDispatchIrp-Methode zurückgibt, wenn die Rückruffunktion diese Methode aufruft.
  • Gibt den Wert zurück, den die WdfDeviceWdmDispatchIrpToIoQueue-Methode zurückgibt, wenn die Rückruffunktion diese Methode aufruft.
  • nur KMDF

    Legen Sie das IoStatus.Status-Element des IRP auf STATUS_SUCCESS oder einen anderen status Wert fest, für den NT_SUCCESS(status) true entspricht, und geben Sie denselben Wert (nach dem Aufruf von IoCompleteRequest) zurück, wenn die Rückruffunktion die empfangene IRP erfolgreich abgeschlossen hat.
  • nur KMDF

    Legen Sie das IoStatus.Status-Element des IRP auf einen status Wert fest, für den NT_SUCCESS(status) false entspricht, und geben Sie denselben Wert (nach dem Aufruf von IoCompleteRequest) zurück, wenn die Rückruffunktion einen Fehler erkennt.
  • nur KMDF

    Gibt STATUS_PENDING zurück, wenn die Rückruffunktion IoMarkIrpPending aufruft.

Hinweise

Die Rückruffunktion EvtDeviceWdmIrpDispatch sollte nur verwendet werden, um eine bestimmte Warteschlange für eine IRP auszuwählen. Dazu ruft der Treiber die WdfDeviceWdmDispatchIrpToIoQueue-Methode innerhalb der Rückruffunktion auf.

Wenn der Treiber nach der Überprüfung eines IRP in dieser Rückruffunktion nicht weiß, wie er die IRP sendet, kann der Treiber WdfDeviceWdmDispatchIrp aufrufen, um die IRP für die Standardbehandlung an das Framework zurückzugeben.

Ein UMDF-Treiber muss entweder WdfDeviceWdmDispatchIrp oder WdfDeviceWdmDispatchIrpToIoQueue über diese Rückruffunktion aufrufen. Ein KMDF-Treiber hat die zusätzliche Möglichkeit, beides aufzurufen und stattdessen die IRP abzuschließen oder ausstehend zu markieren.

Um eine EvtDeviceWdmIrpDispatch-Rückruffunktion zu registrieren, muss Ihr Treiber WdfDeviceConfigureWdmIrpDispatchCallback aufrufen.

In seiner Rückruffunktion EvtDeviceWdmIrpDispatch sollte ein Treiber keine Vervollständigungsroutine festlegen. Wenn eine Vervollständigungsroutine erforderlich ist, kann ein KMDF-Treiber anstelle von EvtDeviceWdmIrpDispatch eine EvtDeviceWdmIrpDispatch-Rückruffunktion bereitstellen.

Weitere Informationen zum Angeben von Warteschlangen für IRPs finden Sie unter Senden von IRPs an E/A-Warteschlangen.

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.11
UMDF-Mindestversion 2.17
Kopfzeile wdfdevice.h (einschließen von Wdf.h)
IRQL <=DISPATCH_LEVEL

Weitere Informationen

WdfDeviceConfigureWdmIrpDispatchCallback

WdfDeviceWdmDispatchIrp

WdfDeviceWdmDispatchIrpToIoQueue