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 |