EVT_WDF_DPC função de retorno de chamada (wdfdpc.h)

[Aplica-se somente ao KMDF]

A função de retorno de chamada EvtDpcFunc de um driver executa operações definidas pelo driver em IRQL = DISPATCH_LEVEL.

Sintaxe

EVT_WDF_DPC EvtWdfDpc;

void EvtWdfDpc(
  [in] WDFDPC Dpc
)
{...}

Parâmetros

[in] Dpc

Um identificador para um objeto DPC de estrutura.

Retornar valor

Nenhum

Comentários

Para registrar uma função de retorno de chamada EvtDpcFunc , o driver deve colocar o endereço da função em uma estrutura WDF_DPC_CONFIG e chamar WdfDpcCreate.

Os drivers normalmente concluem solicitações de E/S em suas funções de retorno de chamada EvtDpcFunc .

A função de retorno de chamada EvtDpcFunc é executada em DISPATCH_LEVEL e não deve acessar o código paginável . Se uma função de retorno de chamada EvtDpcFunc precisar executar operações em IRQL = PASSIVE_LEVEL, ela poderá usar itens de trabalho de estrutura.

Em vez de fornecer funções de retorno de chamada EvtDpcFunc , muitos drivers fornecem uma única função de retorno de chamada EvtInterruptDpc para cada tipo de interrupção compatível com seus dispositivos. 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 EvtDpcFunc , o driver deve chamar WdfDpcEnqueue. Os drivers normalmente chamam WdfDpcEnqueue de uma função de retorno de chamada EvtInterruptIsr .

Quando um driver chama WdfDpcEnqueue, o sistema adiciona o 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 EvtDpcFunc do objeto.

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 EvtDpcFunc . Portanto, a função de retorno de chamada EvtDpcFunc 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 EvtDpcFunc 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 um identificador para o objeto pai de um objeto DPC, a função de retorno de chamada EvtDpcFunc pode chamar WdfDpcGetParentObject. Para obter um ponteiro para a estrutura KDPC subjacente de um objeto DPC, a função de retorno de chamada EvtDpcFunc pode chamar WdfDpcWdmGetDpc.

Para obter mais informações sobre como usar funções de retorno de chamada EvtDpcFunc , consulte Manutenção de uma interrupção.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Cabeçalho wdfdpc.h (inclua Wdf.h)
IRQL DISPATCH_LEVEL

Confira também

EvtInterruptDpc

EvtInterruptIsr

WDF_DPC_CONFIG

WdfDpcCreate

WdfDpcEnqueue

WdfDpcGetParentObject

WdfDpcWdmGetDpc