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 de um driver processa 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 de dispositivo de estrutura que o driver passou para WdfInterruptCreate.

Retornar valor

Nenhum

Comentários

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 WDF_INTERRUPT_CONFIG antes de chamar WdfInterruptCreate.

Os drivers normalmente concluem solicitações de E/S 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 o código 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 de estrutura.

No KMDF versão 1.11 e posterior, o driver pode dar suporte a interrupções de nível passivo e fornecer um 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 o uso de um objeto DPC separado e uma função de retorno de chamada EvtDpcFunc 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á a função de retorno de chamada EvtInterruptDpc .

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 código de interrupção.

Para obter mais informações sobre como lidar com interrupções em drivers baseados em estrutura, consulte Tratamento de interrupções de hardware.

Requisitos

Requisito Valor
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 Observações.)

Confira também

EvtDpcFunc

EvtInterruptIsr

WDF_INTERRUPT_CONFIG

WdfInterruptCreate

WdfInterruptQueueDpcForIsr