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