EVT_WDF_INTERRUPT_WORKITEM funzione di callback (wdfinterrupt.h)

[Si applica a KMDF e UMDF]

La funzione di callback dell'evento EvtInterruptWorkItem di un driver elabora le informazioni di interruzione archiviate dalla funzione di callback evtInterruptIsr del driver.

Sintassi

EVT_WDF_INTERRUPT_WORKITEM EvtWdfInterruptWorkitem;

void EvtWdfInterruptWorkitem(
  [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 WdfInterruptCreate.

Valore restituito

nessuno

Osservazioni

La funzione di callback EvtInterruptWorkItem viene eseguita in IRQL = PASSIVE_LEVEL.

Per registrare una funzione di callback EvtInterruptWorkItem , il driver deve inserire l'indirizzo della funzione di callback in una struttura WDF_INTERRUPT_CONFIG prima di chiamare WdfInterruptCreate.

La maggior parte dei driver usa una singola funzione di callback EvtInterruptWorkItem per ogni tipo di interrupt.

Per pianificare l'esecuzione di una funzione di callback EvtInterruptWorkItem , il driver deve chiamare WdfInterruptQueueWorkItemForIsr dall'interno della funzione di callback EvtInterruptIsr .

Se il driver crea più oggetti interrupt del framework per ogni dispositivo, è consigliabile usare un callback EvtInterruptWorkItem separato per ogni interrupt.

I driver che implementano la gestione degli interrupt DIRQL o la gestione degli interrupt a livello passivo possono accodare un callback evtInterruptWorkItem .

Un driver non può accodare sia un callback EvtInterruptDpc che un callback EvtInterruptWorkItem .

Se il driver ha impostato il membro AutomaticSerialization su TRUE nella struttura WDF_INTERRUPT_CONFIG dell'interrupt, il framework sincronizza l'esecuzione della funzione di callback EvtInterruptWorkItem dell'oggetto interrupt con funzioni di callback di altri oggetti sottostanti l'oggetto padre dell'interrupt. Per informazioni sui blocchi di sincronizzazione del callback, vedere Uso dei blocchi del framework.

In generale, se il driver deve acquisire il blocco passivo dell'oggetto interrupt da EvtInterruptWorkItem, il driver deve impostare il membro AutomaticSerialization di WDF_INTERRUPT_CONFIG su FALSE e quindi chiamare WdfInterruptAcquireLock dall'interno di EvtInterruptWorkItem.

Se AutomaticSerialization è impostato su TRUE, la funzione di callback EvtInterruptWorkItem di un driver non deve chiamare uno dei metodi seguenti:

WdfInterruptAcquireLockWdfInterruptSynchronizeWdfInterruptDisableWdfInterruptEnable 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 KMDF minima 1.11
Versione UMDF minima 2,0
Intestazione wdfinterrupt.h (include Wdf.h)
IRQL PASSIVE_LEVEL