EVT_WDF_INTERRUPT_DPC função de retorno de chamada (wdfinterrupt.h)
[Aplica-se a KMDF e UMDF]
A função de retorno de chamada de evento EvtInterruptDpc do driver interrompe informações de interrupção que a função de retorno de chamada EvtInterruptIsr do driver armazenou.
Sintaxe
EVT_WDF_INTERRUPT_DPC EvtWdfInterruptDpc;
void EvtWdfInterruptDpc(
[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
Para registrar uma função de retorno de chamada EvtInterruptDpc, 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.
Normalmente, os drivers solicitações de E/S completas em suas funções de retorno de chamada EvtInterruptDpc.
A função de retorno de chamada EvtInterruptDpc é executada em DISPATCH_LEVEL e não deve acessar código de paginável. Se uma função de retorno de chamada EvtInterruptDpc precisar executar operações em IRQL = PASSIVE_LEVEL, ela poderá usar itens de trabalho da estrutura.
No KMDF versão 1.11 e posterior, o driver pode dar suporte interrupções de nível passivo e fornecer uma EvtInterruptWorkItem ou uma função de retorno de chamada EvtInterruptDpc. Se o driver der suporte a interrupções de nível passivo e fornecer uma função de retorno de chamada EvtInterruptDpc, o driver não poderá adquirir o bloqueio de interrupção de nível passivo de dentro do retorno de chamada.
A maioria dos drivers usa uma única função de retorno de chamada EvtInterruptDpc para cada tipo de interrupção. Se o driver criar vários objetos de fila de estrutura para cada dispositivo, você poderá considerar usar um objeto DPC separado e evtDpcFunc função de retorno de chamada para cada fila.
Para agendar a execução de uma função de retorno de chamada EvtInterruptDpc, o driver deve chamar WdfInterruptQueueDpcForIsr de dentro da função de retorno de chamada EvtInterruptIsr.
Quando um driver agenda a execução de uma função de retorno de chamada EvtInterruptDpc, o sistema adiciona um objeto DPC à fila DPC do sistema. Se o sistema não estiver executando tarefas de prioridade mais alta, ele removerá o objeto da fila e chamará o EvtInterruptDpc função de retorno de chamada.
O sistema não adicionará o objeto DPC à fila DPC se o objeto já estiver na fila. Uma função de retorno de chamada EvtInterruptIsr pode ser chamada várias vezes antes que o sistema chame a função de retorno de chamada EvtInterruptDpc. Portanto, a função de retorno de chamada EvtInterruptDpc deve ser capaz de processar informações de várias interrupções e deve processar todas as interrupções que ocorreram desde a última vez em que foi chamada.
Normalmente, é necessário sincronizar a execução da função de retorno de chamada EvtInterruptDpc de um driver com a execução de outras funções de retorno de chamada. Para obter mais informações, consulte Sincronizando o código de interrupção.
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.0 |
versão mínima do UMDF | 2.0 |
cabeçalho | wdfinterrupt.h (inclua Wdf.h) |
IRQL | (Consulte a seção Comentários.) |