EVT_WDF_INTERRUPT_WORKITEM Rückruffunktion (wdfinterrupt.h)

[Gilt für KMDF und UMDF]

Die EvtInterruptWorkItem-Ereignisrückruffunktion eines Treibers verarbeitet Unterbrechungsinformationen, die von der EvtInterruptIsr-Rückruffunktion des Treibers gespeichert wurden.

Syntax

EVT_WDF_INTERRUPT_WORKITEM EvtWdfInterruptWorkitem;

void EvtWdfInterruptWorkitem(
  [in] WDFINTERRUPT Interrupt,
  [in] WDFOBJECT AssociatedObject
)
{...}

Parameter

[in] Interrupt

Ein Handle für ein Framework-Interruptobjekt.

[in] AssociatedObject

Ein Handle für das Framework-Geräteobjekt, das der Treiber an WdfInterruptCreate übergeben hat.

Rückgabewert

Keine

Bemerkungen

Die EvtInterruptWorkItem-Rückruffunktion wird unter IRQL = PASSIVE_LEVEL ausgeführt.

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

Die meisten Treiber verwenden eine einzelne EvtInterruptWorkItem-Rückruffunktion für jeden Interrupttyp.

Um die Ausführung einer EvtInterruptWorkItem-Rückruffunktion zu planen, muss der Treiber WdfInterruptQueueWorkItemForIsr aus der Rückruffunktion EvtInterruptIsr aufrufen.

Wenn Ihr Treiber mehrere Framework-Interruptobjekte für jedes Gerät erstellt, können Sie die Verwendung eines separaten EvtInterruptWorkItem-Rückrufs für jeden Interrupt in Betracht ziehen.

Treiber, die entweder die DIRQL-Interruptbehandlung oder die Behandlung passiver Interrupts implementieren, können einen EvtInterruptWorkItem-Rückruf in die Warteschlange stellen.

Ein Treiber kann nicht sowohl einen EvtInterruptDpc - als auch einen EvtInterruptWorkItem-Rückruf in die Warteschlange stellen.

Wenn der Treiber den AutomaticSerialization-Member in der WDF_INTERRUPT_CONFIG-Struktur des Interrupts auf TRUE festgelegt hat, synchronisiert das Framework die Ausführung der EvtInterruptWorkItem-Rückruffunktion des Interruptobjekts mit Rückruffunktionen aus anderen Objekten, die sich unterhalb des übergeordneten Objekts des Interrupts befinden. Informationen zu Rückrufsynchronisierungssperren finden Sie unter Verwenden von Frameworksperren.

Wenn der Treiber die passive Sperre des Interruptobjekts aus EvtInterruptWorkItem abrufen muss, sollte der Treiber den AutomaticSerialization-Member von WDF_INTERRUPT_CONFIG auf FALSE festlegen und dann WdfInterruptAcquireLock aus EvtInterruptWorkItem aufrufen.

Wenn AutomaticSerialization auf TRUE festgelegt ist, sollte die EvtInterruptWorkItem-Rückruffunktion eines Treibers keine der folgenden Methoden aufrufen:

WdfInterruptAcquireLockWdfInterruptSynchronizeWdfInterruptDisableWdfInterruptEnable Weitere Informationen zur Behandlung von Interrupts in frameworkbasierten Treibern finden Sie unter Behandeln von Hardwareunterbrechungen.

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.11
UMDF-Mindestversion 2.0
Kopfzeile wdfinterrupt.h (einschließen von Wdf.h)
IRQL PASSIVE_LEVEL