Compartilhar via


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

Consulte também

EvtDpcFunc

EvtInterruptIsr

WDF_INTERRUPT_CONFIG

WdfInterruptCreate

WdfInterruptQueueDpcForIsr