Condividi tramite


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 del driver EvtInterruptIsr .

Sintassi

EVT_WDF_INTERRUPT_WORKITEM EvtWdfInterruptWorkitem;

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

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 interruzione.

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 di interruzione del framework per ogni dispositivo, è possibile usare un callback evtInterruptWorkItem separato per ogni interruzione.

I driver che implementano la gestione degli interruzioni DIRQL o la gestione degli interruzioni 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 di WDF_INTERRUPT_CONFIG dell'interruzione, il framework sincronizza l'esecuzione della funzione di callback dell'oggetto interrupt EvtInterruptWorkItem con funzioni di callback da altri oggetti sottostanti all'oggetto padre dell'interrupt. Per informazioni sui blocchi di sincronizzazione del callback, vedere Uso di blocchi framework.

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

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

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