Freigeben über


EVT_WDF_INTERRUPT_WORKITEM Rückruffunktion (wdfinterrupt.h)

[Gilt für KMDF und UMDF]

Die EvtInterruptWorkItem eines Treibers Ereignisrückruffunktion verarbeitet Informationen, die der Treiber EvtInterruptIsr Rückruffunktion gespeichert hat.

Syntax

EVT_WDF_INTERRUPT_WORKITEM EvtWdfInterruptWorkitem;

VOID EvtWdfInterruptWorkitem(
  [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

Die EvtInterruptWorkItem Rückruffunktion wird bei 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 WdfInterruptCreateaufgerufen wird.

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

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

Wenn Ihr Treiber mehrere Framework-Interruptobjekte für jedes Gerät erstellt, sollten Sie für jeden Interrupt ein separates EvtInterruptWorkItem- Rückruf verwenden.

Treiber, die entweder die DIRQL-Interruptbehandlung oder die passive Unterbrechungsbehandlung implementieren, können ein EvtInterruptWorkItem- Rückruf in die Warteschlange stellen.

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

Wenn der Treiber die AutomaticSerialization Member in der WDF_INTERRUPT_CONFIG Struktur des Interrupts auf TRUE festgelegt hat, synchronisiert das Framework die Ausführung des EvtInterruptWorkItem Rückruffunktion mit Rückruffunktionen aus anderen Objekten, die sich unter dem übergeordneten Objekt des Interrupts befinden. Informationen zu Rückrufsynchronisierungssperren finden Sie unter Using Framework Locks.

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

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

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

Anforderungen

Anforderung Wert
Zielplattform universell
Minimale KMDF-Version 1.11
Mindest-UMDF-Version 2.0
Kopfzeile wdfinterrupt.h (einschließen Wdf.h)
IRQL PASSIVE_LEVEL