WdfInterruptQueueDpcForIsr-Funktion (wdfinterrupt.h)

[Gilt für KMDF und UMDF]

Die WdfInterruptQueueDpcForIsr-Methode stellt die Rückruffunktion EvtInterruptDpc eines Framework-Interruptobjekts für die Ausführung in die Warteschlange.

Syntax

BOOLEAN WdfInterruptQueueDpcForIsr(
  [in] WDFINTERRUPT Interrupt
);

Parameter

[in] Interrupt

Ein Handle für ein Framework-Interruptobjekt.

Rückgabewert

WdfInterruptQueueDpcForIsr gibt TRUE zurück, wenn die Rückruffunktion EvtInterruptDpc des Interruptobjekts erfolgreich in die Warteschlange gestellt wird. Die -Methode gibt FALSE zurück, wenn die Rückruffunktion zuvor in eine Warteschlange eingereiht wurde und nicht ausgeführt wurde.

Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.

Hinweise

Treiber rufen WdfInterruptQueueDpcForIsr in einer EvtInterruptIsr-Rückruffunktion auf.

Die Rückruffunktion EvtInterruptDpc eines Interruptobjekts kann nur einmal in die Warteschlange gestellt werden, bevor es ausgeführt wird. Wenn also ein Aufruf von WdfInterruptQueueDpcForIsr erfolgreich ist, geben nachfolgende Aufrufe FALSE zurück, bis das Framework die Rückruffunktion EvtInterruptDpc dequeuet .

Der EvtInterruptDpc-Rückruf wird auf dem Prozessor ausgeführt, der ihn in die Warteschlange gestellt hat. Wenn Ihr Treiber WdfInterruptQueueDpcForIsr aufruft , um einen anderen DPC in die Warteschlange zu stellen, während eine EvtInterruptDpc-Rückruffunktion bereits dequeuiert oder ausgeführt wird, wird der zweite EvtInterruptDpc-Rückruf möglicherweise sogar ausgeführt, bevor der erste abgeschlossen ist.

Weitere Informationen zum Behandeln von Interrupts in frameworkbasierten Treibern finden Sie unter Behandeln von Hardwareunterbrechungen.

In KMDF 1.11 und höher kann ein Treiber WdfInterruptQueueDpcForIsr von einem ISR auf passiver Ebene aufrufen. Beachten Sie, dass ein Treiber ein Arbeitselement oder einen DPC registrieren kann, aber nicht beides.

Beispiele

Das folgende Codebeispiel zeigt, wie eine EvtInterruptIsr-Rückruffunktion eine EvtInterruptDpc-Rückruffunktion in die Warteschlange stellen soll.

BOOLEAN
MyEvtInterruptIsr(
    IN WDFINTERRUPT Interrupt,
    IN ULONG  MessageID
    )
{
    BOOLEAN queueDpcSuccess;

    //
    // Save interrupt information for the
    // EvtInterruptDpc function.
    //
...
    //
    // Queue the EvtInterruptDpc function.
    //
    queueDpcSuccess = WdfInterruptQueueDpcForIsr(Interrupt);
...
}

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.0
UMDF-Mindestversion 2.0
Kopfzeile wdfinterrupt.h (einschließen von Wdf.h)
Bibliothek Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DIRQL
DDI-Complianceregeln DriverCreate(kmdf)

Weitere Informationen

EvtInterruptDpc

EvtInterruptIsr

WdfInterruptCreate