Freigeben über


EVT_WDF_INTERRUPT_ISR Rückruffunktion (wdfinterrupt.h)

[Gilt für KMDF und UMDF]

Die EvtInterruptIsr Ereignisrückruffunktion eines Treibers einen Hardwareunterbruch.

Syntax

EVT_WDF_INTERRUPT_ISR EvtWdfInterruptIsr;

BOOLEAN EvtWdfInterruptIsr(
  [in] WDFINTERRUPT Interrupt,
  [in] ULONG MessageID
)
{...}

Die Parameter

[in] Interrupt

Ein Handle zu einem Framework-Interruptobjekt.

[in] MessageID

Wenn das Gerät nachrichtensignalierte Interrupts (MSIs) verwendet, ist dieser Parameter die Nachrichtennummer, die die Hardwareunterbrechungsnachricht des Geräts identifiziert. Andernfalls ist dieser Wert 0.

Rückgabewert

Die EvtInterruptIsr- Rückruffunktion muss TRUE- zurückgeben, wenn die Funktion die Hardware unterbricht. Andernfalls muss diese Funktion FALSE-zurückgeben.

Bemerkungen

Um eine EvtInterruptIsr Rückruffunktion zu registrieren, muss der Treiber die Adresse der Rückruffunktion in einer WDF_INTERRUPT_CONFIG-Struktur platzieren, bevor WdfInterruptCreateaufgerufen wird.

Die EvtInterruptIsr Rückruffunktion ist eine frameworkbasierte Interruptdienstroutine (ISR), die aufgerufen wird, wenn ein Hardware-Interrupt auftritt.

Wenn der Interrupt nicht von der Hardware stammt, die dieser EvtInterruptIsr Rückruffunktionsdienste zurückgibt, muss der Treiber FALSE-zurückgeben. Wenn der Interruptvektor freigegeben wird, ruft das System eine weitere Interruptdienstroutine auf.

Wenn der Treiber keine Behandlung auf passiver Ebene für ein Interruptobjekt angefordert hat, ruft das Framework die EvtInterruptIsr Rückruffunktion auf, löst das Framework die IRQL des Prozessors in die IRQL (DIRQL) des Geräts aus und ruft die Drehsperre ab, die der Treiber in der WDF_INTERRUPT_CONFIG Struktur des Interruptobjekts angegeben hat.

Da die EvtInterruptIsr Rückruffunktion bei einem relativ hohen IRQL ausgeführt wird, kann es nur sehr wenige Framework-Objektmethoden oder Systemroutinen aufrufen. Darüber hinaus kann diese Rückruffunktion nicht auf ausgelagerten Code zugreifen.

In der Regel löscht die EvtInterruptIsr- Rückruffunktion den Hardwareunterbruch und speichert alle Informationen, die nach rückgabe der Rückruffunktion verloren gehen können, und das System senkt die IRQL (da durch das Senken der IRQL zusätzliche Unterbrechungen auftreten können). Frameworkbasierte Treiber speichern Informationen zum Interrupt im Kontextbereich des Interruptobjekts.

Treiber stellen in der Regel eine EvtInterruptDpc Rückruffunktion bereit, um die gespeicherten Informationen in einem niedrigeren IRQL zu verarbeiten. (Einige Treiber stellen eine oder mehrere EvtDpcFunc Rückruffunktionen anstelle einer EvtInterruptDpc Rückruffunktion bereit.) Informationen zum Planen eines EvtInterruptDpc Rückruffunktion für die Ausführung finden Sie unter Servicing an Interrupt.

Die EvtInterruptIsr Rückruffunktion muss mehrere Unterbrechungen verarbeiten können, bevor die EvtInterruptDpc Rückruffunktion ausgeführt wird. Daher muss der Treiber Unterbruchdaten von mehreren Unterbrechungen speichern, und die EvtInterruptIsr undEvtInterruptDpc Rückruffunktionen müssen möglicherweise bestimmen, welche Unterbrechungsdaten vom Treiber vollständig verarbeitet wurden und welche nicht.

Ab Version 1.11 von KMDF kann Ihr Treiber passive Unterbrechungsbehandlungbereitstellen. Wenn der Treiber die Behandlung auf passiver Ebene für ein Interruptobjekt angefordert hat, ruft das Framework vor dem Aufrufen der EvtInterruptIsr Rückruffunktion bei IRQL = PASSIVE_LEVEL die Passive-Level-Interrupt-Sperre ab, die der Treiber in der WDF_INTERRUPT_CONFIG Struktur des Interruptobjekts konfiguriert hat. Wie bei der Unterbrechungsbehandlung bei DIRQL sollte die EvtInterruptIsr--Funktion weiterhin Informationen zum Interrupt für die spätere Verarbeitung speichern.

Treiber, die die Behandlung passiver Unterbrechungen unterstützen, können entweder eine EvtInterruptWorkItem- oder ein EvtInterruptDpc Rückruffunktion bereitstellen, um die gespeicherten Informationen zu verarbeiten.

Weitere Informationen zum Behandeln von Unterbrechungen in frameworkbasierten Treibern finden Sie unter Behandeln von Hardware-Interrupts.

Anforderungen

Anforderung Wert
Zielplattform universell
Minimale KMDF-Version 1.0
Mindest-UMDF-Version 2.0
Kopfzeile wdfinterrupt.h (einschließen Wdf.h)
IRQL (Siehe Abschnitt "Hinweise".)

Siehe auch

EvtDpcFunc

EvtInterruptDpc

WDF_INTERRUPT_CONFIG

WdfInterruptCreate

WdfInterruptGetDevice

WdfInterruptGetInfo-

WdfInterruptWdmGetInterrupt