Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[Gilt für KMDF und UMDF]
Die EvtInterruptDpc Ereignisrückruffunktion verarbeitet Informationen, die die EvtInterruptIsr Rückruffunktion des Treibers gespeichert haben.
Syntax
EVT_WDF_INTERRUPT_DPC EvtWdfInterruptDpc;
VOID EvtWdfInterruptDpc(
[in] WDFINTERRUPT Interrupt,
[in] WDFOBJECT AssociatedObject
)
{...}
Die Parameter
[in] Interrupt
Ein Handle zu einem Framework-Interruptobjekt.
[in] AssociatedObject
Ein Handle für das Framework-Geräteobjekt, das der Treiber an WdfInterruptCreateübergeben hat.
Rückgabewert
Nichts
Bemerkungen
Um eine EvtInterruptDpc- Rückruffunktion zu registrieren, muss der Treiber die Adresse der Rückruffunktion in einer WDF_INTERRUPT_CONFIG-Struktur platzieren, bevor WdfInterruptCreateaufgerufen wird.
Treiber in der Regel vollständige E/A-Anforderungen in ihren EvtInterruptDpc Rückruffunktionen.
Die EvtInterruptDpc Rückruffunktion wird bei DISPATCH_LEVEL ausgeführt und darf nicht auf ausgelagerten Code zugreifen. Wenn eine EvtInterruptDpc Rückruffunktion Vorgänge bei IRQL = PASSIVE_LEVEL ausführen muss, kann Framework-Arbeitsaufgabenverwendet werden.
In KMDF, Version 1.11 und höher, kann Ihr Treiber passiven Unterbrechungen unterstützen und entweder eine EvtInterruptWorkItem- oder ein EvtInterruptDpc Rückruffunktion bereitstellen. Wenn Ihr Treiber Unterbrechungen auf passiver Ebene unterstützt und eine EvtInterruptDpc Rückruffunktion bereitstellt, kann der Treiber die Passive-Level-Unterbrechungssperre nicht innerhalb des Rückrufs abrufen.
Die meisten Treiber verwenden eine einzelne EvtInterruptDpc Rückruffunktion für jeden Interrupttyp. Wenn Ihr Treiber mehrere Framework-Warteschlangenobjekte für jedes Gerät erstellt, sollten Sie für jede Warteschlange ein separates DPC-Objekt und EvtDpcFunc Rückruffunktion verwenden.
Um die Ausführung eines EvtInterruptDpc Rückruffunktion zu planen, muss der Treiber WdfInterruptQueueDpcForIsr innerhalb der EvtInterruptIsr Rückruffunktion aufrufen.
Wenn ein Treiber die Ausführung eines EvtInterruptDpc Rückruffunktion plant, fügt das System der DPC-Warteschlange des Systems ein DPC-Objekt hinzu. Wenn das System keine Aufgaben mit höherer Priorität ausführt, entfernt es das Objekt aus der Warteschlange und ruft die EvtInterruptDpc Rückruffunktion auf.
Das System fügt das DPC-Objekt nicht der DPC-Warteschlange hinzu, wenn das Objekt bereits in die Warteschlange eingereiht ist. Eine EvtInterruptIsr- Rückruffunktion kann mehrmals aufgerufen werden, bevor das System die EvtInterruptDpc Rückruffunktion aufruft. Daher muss die EvtInterruptDpc Rückruffunktion In der Lage sein, Informationen aus mehreren Unterbrechungen zu verarbeiten, und sie muss alle Unterbrechungen verarbeiten, die seit dem letzten Aufruf aufgetreten sind.
In der Regel ist es erforderlich, die Ausführung der EvtInterruptDpc Rückruffunktion mit der Ausführung anderer Rückruffunktionen zu synchronisieren. Weitere Informationen finden Sie unter Synchronisieren von Interruptcode-.
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".) |