EVT_WDF_INTERRUPT_DPC funzione di callback (wdfinterrupt.h)
[Si applica a KMDF e UMDF]
La funzione di callback dell'evento EvtInterruptDpc di un driver elabora le informazioni di interruzione archiviate dalla funzione di callback del driver EvtInterruptIsr .
Sintassi
EVT_WDF_INTERRUPT_DPC EvtWdfInterruptDpc;
void EvtWdfInterruptDpc(
[in] WDFINTERRUPT Interrupt,
[in] WDFOBJECT AssociatedObject
)
{...}
Parametri
[in] Interrupt
Handle per un oggetto di interruzione del framework.
[in] AssociatedObject
Handle per l'oggetto dispositivo framework passato al driver WdfInterruptCreate.
Valore restituito
nessuno
Osservazioni
Per registrare una funzione di callback EvtInterruptDpc , il driver deve inserire l'indirizzo della funzione di callback in una struttura di WDF_INTERRUPT_CONFIG prima di chiamare WdfInterruptCreate.
I driver in genere completano le richieste di I/O nelle funzioni di callback EvtInterruptDpc .
La funzione di callback EvtInterruptDpc viene eseguita in DISPATCH_LEVEL e non deve accedere al codice paginabile . Se una funzione di callback EvtInterruptDpc deve eseguire operazioni in IRQL = PASSIVE_LEVEL, può usare elementi di lavoro del framework.
In KMDF versione 1.11 e successiva, il driver può supportare interruzioni a livello passivo e fornire una funzione di callback EvtInterruptWorkItem o EvtInterruptDpc . Se il driver supporta interruzioni a livello passivo e fornisce una funzione di callback EvtInterruptDpc , il driver non può acquisire il blocco di interruzioni a livello passivo dall'interno del callback.
La maggior parte dei driver usa una singola funzione di callback EvtInterruptDpc per ogni tipo di interruzione. Se il driver crea più oggetti coda del framework per ogni dispositivo, è possibile usare un oggetto DPC separato e una funzione di callback EvtDpcFunc per ogni coda.
Per pianificare l'esecuzione di una funzione di callback EvtInterruptDpc, il driver deve chiamare WdfInterruptQueueDpcForIsr dall'interno della funzione di callback evtInterruptIsr.
Quando un driver pianifica l'esecuzione di una funzione di callback EvtInterruptDpc , il sistema aggiunge un oggetto DPC alla coda DPC del sistema. Se il sistema non esegue attività con priorità superiore, rimuove l'oggetto dalla coda e chiama la funzione di callback EvtInterruptDpc .
Il sistema non aggiunge l'oggetto DPC alla coda DPC se l'oggetto è già in coda. Una funzione di callback evtInterruptIsr potrebbe essere chiamata più volte prima che il sistema chiami la funzione di callback EvtInterruptDpc . Pertanto, la funzione di callback EvtInterruptDpc deve essere in grado di elaborare le informazioni da diversi interruzioni e deve elaborare tutti gli interruzioni che si sono verificati dall'ultima volta che è stato chiamato.
In genere, è necessario sincronizzare l'esecuzione della funzione di callback evtInterruptDpc di un driver con l'esecuzione di altre funzioni di callback. Per altre informazioni, vedere Sincronizzazione del codice di interruzione.
Per altre informazioni sulla gestione degli interruzioni nei driver basati su framework, vedere Gestione degli interruzioni hardware.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1.0 |
Versione UMDF minima | 2,0 |
Intestazione | wdfinterrupt.h (include Wdf.h) |
IRQL | Vedere la sezione Note. |