Freigeben über


EVT_WDF_DPC Rückruffunktion (wdfdpc.h)

[Gilt nur für KMDF]

Die EvtDpcFunc Rückruffunktion eines Treibers führt treiberdefinierte Vorgänge bei IRQL = DISPATCH_LEVEL aus.

Syntax

EVT_WDF_DPC EvtWdfDpc;

void EvtWdfDpc(
  [in] WDFDPC Dpc
)
{...}

Die Parameter

[in] Dpc

Ein Handle zu einem Framework-DPC-Objekt.

Rückgabewert

Nichts

Bemerkungen

Um eine EvtDpcFunc Rückruffunktion zu registrieren, muss Ihr Treiber die Adresse der Funktion in einer WDF_DPC_CONFIG Struktur platzieren und WdfDpcCreateaufrufen.

Treiber in der Regel vollständige E/A-Anforderungen in ihren EvtDpcFunc Rückruffunktionen.

Die EvtDpcFunc Rückruffunktion wird bei DISPATCH_LEVEL ausgeführt und darf nicht auf ausgelagerten Code zugreifen. Wenn eine EvtDpcFunc Rückruffunktion Vorgänge bei IRQL = PASSIVE_LEVEL ausführen muss, kann Framework-Arbeitsaufgabenverwendet werden.

Anstatt EvtDpcFunc- Rückruffunktionen bereitzustellen, bieten viele Treiber für jede Art von Interrupt, die ihre Geräte unterstützen, einen einzelnen EvtInterruptDpc Rückruffunktion. Wenn Ihr Treiber mehrere Framework-Warteschlangenobjekte für jedes Gerät erstellt, können Sie ein separates DPC-Objekt verwenden und EvtDpcFunc Rückruffunktion für jede Warteschlange verwenden.

Um die Ausführung einer EvtDpcFunc Rückruffunktion zu planen, muss der Treiber WdfDpcEnqueueaufrufen. Treiber rufen in der Regel WdfDpcEnqueue- von einer EvtInterruptIsr Rückruffunktion auf.

Wenn ein Treiber WdfDpcEnqueueaufruft, fügt das System das DPC-Objekt der DPC-Warteschlange des Systems hinzu. Wenn das System keine Aufgaben mit höherer Priorität ausführt, entfernt es das Objekt aus der Warteschlange und ruft die EvtDpcFunc Rückruffunktion des Objekts 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 EvtDpcFunc Rückruffunktion aufruft. Daher muss die EvtDpcFunc 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 EvtDpcFunc Rückruffunktion eines Treibers mit der Ausführung anderer Rückruffunktionen zu synchronisieren. Weitere Informationen finden Sie unter Synchronisieren von Interruptcode-.

Um ein Handle für das übergeordnete Objekt eines DPC-Objekts abzurufen, kann die EvtDpcFunc- Rückruffunktion WdfDpcGetParentObjectaufrufen. Um einen Zeiger auf die zugrunde liegende KDPC--Struktur eines DPC-Objekts abzurufen, kann die EvtDpcFunc- Rückruffunktion WdfDpcWdmGetDpcaufrufen.

Weitere Informationen zur Verwendung von EvtDpcFunc Rückruffunktionen finden Sie unter Servicing an Interrupt.

Anforderungen

Anforderung Wert
Zielplattform universell
Minimale KMDF-Version 1.0
Kopfzeile wdfdpc.h (enthalten Wdf.h)
IRQL DISPATCH_LEVEL

Siehe auch

EvtInterruptDpc

EvtInterruptIsr

WDF_DPC_CONFIG

WdfDpcCreate

WdfDpcEnqueue

WdfDpcGetParentObject-

WdfDpcWdmGetDpc