Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
[Aplica-se a KMDF e UMDF]
A função de retorno de chamada de evento EvtInterruptWorkItem do driver processa informações de interrupção que a função de retorno de chamada EvtInterruptIsr do driver armazenou.
Sintaxe
EVT_WDF_INTERRUPT_WORKITEM EvtWdfInterruptWorkitem;
VOID EvtWdfInterruptWorkitem(
[in] WDFINTERRUPT Interrupt,
[in] WDFOBJECT AssociatedObject
)
{...}
Parâmetros
[in] Interrupt
Um identificador para um objeto de interrupção de estrutura.
[in] AssociatedObject
Um identificador para o objeto do dispositivo de estrutura que o driver passou para WdfInterruptCreate.
Valor de retorno
Nenhum
Observações
A função de retorno de chamada EvtInterruptWorkItem é executada em IRQL = PASSIVE_LEVEL.
Para registrar uma função de retorno de chamada EvtInterruptWorkItem, o driver deve colocar o endereço da função de retorno de chamada em uma estrutura de WDF_INTERRUPT_CONFIG antes de chamar WdfInterruptCreate.
A maioria dos drivers usa uma única função de retorno de chamada EvtInterruptWorkItem para cada tipo de interrupção.
Para agendar a execução de uma função de retorno de chamada EvtInterruptWorkItem, o driver deve chamar WdfInterruptQueueWorkItemForIsr de dentro da função de retorno de chamada EvtInterruptIsr.
Se o driver criar vários objetos de interrupção de estrutura para cada dispositivo, você poderá considerar o uso de um EvtInterruptWorkItem separado retorno de chamada para cada interrupção.
Os drivers que implementam o tratamento de interrupção DIRQL ou o tratamento de interrupção de nível passivo podem enfileirar um EvtInterruptWorkItem retorno de chamada.
Um driver não pode enfileirar um EvtInterruptDpc e um EvtInterruptWorkItem retorno de chamada.
Se o driver tiver definido o membro AutomaticSerialization como TRUE na estrutura de WDF_INTERRUPT_CONFIG da interrupção, a estrutura sincronizará a execução do objeto de interrupção EvtInterruptWorkItem função de retorno de chamada com funções de retorno de chamada de outros objetos que estão abaixo do objeto pai da interrupção. Para obter informações sobre bloqueios de sincronização de retorno de chamada, consulte Usando bloqueios de estrutura.
Em geral, se o driver precisar adquirir o bloqueio passivo do objeto de interrupção de dentro de EvtInterruptWorkItem, o driver deverá definir o membro AutomaticSerialization do WDF_INTERRUPT_CONFIG como FALSE e, em seguida, chamar WdfInterruptAcquireLock de dentro de EvtInterruptWorkItem.
Se de AutomaticSerialization for definido como TRUE, a função de retorno de chamada EvtInterruptWorkItem do driver não deverá chamar nenhum dos seguintes métodos:
WdfInterruptAcquireLockWdfInterruptSynchronizeWdfInterruptDisableWdfInterruptEnable Para obter mais informações sobre como lidar com interrupções em drivers baseados em estrutura, consulte Tratando interrupções de hardware.
Requisitos
| Requisito | Valor |
|---|---|
| da Plataforma de Destino | Universal |
| versão mínima do KMDF | 1.11 |
| versão mínima do UMDF | 2.0 |
| cabeçalho | wdfinterrupt.h (inclua Wdf.h) |
| IRQL | PASSIVE_LEVEL |