Partilhar via


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.

Valor de retorno

Nenhum

Observações

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

Normalmente, os drivers solicitações de E/S completas 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 código de 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 da 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 evtDpcFunc função de retorno de chamada para cada fila.

Para agendar a execução de uma função de retorno de chamada EvtDpcFunc, o driver deve chamar WdfDpcEnqueue. Normalmente, os drivers 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 de um driver EvtDpcFunc função de retorno de chamada 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 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 de de KDPC de 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 umde Interrupção.

Requisitos

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

Consulte também

EvtInterruptDpc

EvtInterruptIsr

WDF_DPC_CONFIG

WdfDpcCreate

WdfDpcEnqueue

WdfDpcGetParentObject

WdfDpcWdmGetDpc