Condividi tramite


EVT_WDF_DPC funzione di callback (wdfdpc.h)

[Si applica solo a KMDF]

La funzione di callback EvtDpcFunc di un driver esegue operazioni definite dal driver in IRQL = DISPATCH_LEVEL.

Sintassi

EVT_WDF_DPC EvtWdfDpc;

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

Parametri

[in] Dpc

Handle per un oggetto DPC del framework.

Valore restituito

nessuno

Osservazioni

Per registrare una funzione di callback EvtDpcFunc , il driver deve inserire l'indirizzo della funzione in una struttura WDF_DPC_CONFIG e chiamare WdfDpcCreate.

I driver in genere completano le richieste di I/O nelle funzioni di callback EvtDpcFunc .

La funzione di callback EvtDpcFunc viene eseguita in DISPATCH_LEVEL e non deve accedere al codice pageable . Se una funzione di callback EvtDpcFunc deve eseguire operazioni in IRQL = PASSIVE_LEVEL, può usare gli elementi di lavoro del framework.

Invece di fornire funzioni di callback EvtDpcFunc , molti driver forniscono una singola funzione di callback EvtInterruptDpc per ogni tipo di interrupt supportato dai dispositivi. Se il driver crea più oggetti coda del framework per ogni dispositivo, è consigliabile usare un oggetto DPC separato e una funzione di callback EvtDpcFunc per ogni coda.

Per pianificare l'esecuzione di una funzione di callback EvtDpcFunc , il driver deve chiamare WdfDpcEnqueue. I driver in genere chiamano WdfDpcEnqueue da una funzione di callback EvtInterruptIsr .

Quando un driver chiama WdfDpcEnqueue, il sistema aggiunge l'oggetto DPC alla coda DPC del sistema. Se il sistema non esegue attività con priorità più alta, rimuove l'oggetto dalla coda e chiama la funzione di callback EvtDpcFunc dell'oggetto.

Il sistema non aggiunge l'oggetto DPC alla coda DPC se l'oggetto è già in coda. Una funzione di callback EvtInterruptIsr può essere chiamata più volte prima che il sistema chiami la funzione di callback EvtDpcFunc . Pertanto, la funzione di callback EvtDpcFunc deve essere in grado di elaborare le informazioni da diversi interrupt e deve elaborare tutti gli interrupt che si sono verificati dopo l'ultima chiamata.

In genere, è necessario sincronizzare l'esecuzione della funzione di callback EvtDpcFunc di un driver con l'esecuzione di altre funzioni di callback. Per altre informazioni, vedere Sincronizzazione del codice di interruzione.

Per ottenere un handle per l'oggetto padre di un oggetto DPC, la funzione di callback EvtDpcFunc può chiamare WdfDpcGetParentObject. Per ottenere un puntatore alla struttura KDPC sottostante di un oggetto DPC, la funzione di callback EvtDpcFunc può chiamare WdfDpcWdmGetDpc.

Per altre informazioni sull'uso delle funzioni di callback EvtDpcFunc, vedere Servicing an Interrupt .For more information about using EvtDpcFunc callback functions, see Servicing an Interrupt.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Intestazione wdfdpc.h (include Wdf.h)
IRQL DISPATCH_LEVEL

Vedi anche

EvtInterruptDpc

EvtInterruptIsr

WDF_DPC_CONFIG

WdfDpcCreate

WdfDpcEnqueue

WdfDpcGetParentObject

WdfDpcWdmGetDpc