Compartilhar via


Função WdfInterruptQueueDpcForIsr (wdfinterrupt.h)

[Aplica-se a KMDF e UMDF]

O método WdfInterruptQueueDpcForIsr enfileira uma função de retorno de chamada EvtInterruptDpc do objeto de interrupção da estrutura para execução.

Sintaxe

BOOLEAN WdfInterruptQueueDpcForIsr(
  [in] WDFINTERRUPT Interrupt
);

Parâmetros

[in] Interrupt

Um identificador para um objeto de interrupção de estrutura.

Valor de retorno

WdfInterruptQueueDpcForIsr retornará verdadeiro se ele enfileirar com êxito a função de retorno de chamada EvtInterruptDpc do objeto de interrupção. O método retornará FALSE se a função de retorno de chamada tiver sido previamente enfileirada e não tiver sido executada.

Uma verificação de bug ocorre se o driver fornece um identificador de objeto inválido.

Observações

Os drivers normalmente chamam WdfInterruptQueueDpcForIsr de dentro de uma função de retorno de chamada EvtInterruptIsr.

A função de retorno de chamada EvtInterruptDpc de um objeto de interrupção só pode ser enfileirada uma vez antes de ser executada. Portanto, se uma chamada para WdfInterruptQueueDpcForIsr for bem-sucedida, as chamadas subsequentes retornarão FALSE até que a estrutura desque a função de retorno de chamada EvtInterruptDpc.

O retorno de chamada EvtInterruptDpc será executado no processador que o enfileira. Se o driver chamar função de retorno de chamada WdfInterruptQueueDpcForIsr para enfileirar outro DPC enquanto uma função de retorno de chamada EvtInterruptDpc já estiver desativada ou em execução, o segundo EvtInterruptDpc retorno de chamada poderá até mesmo ser executado antes da conclusão da primeira.

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

No KMDF 1.11 e posterior, um driver pode chamar WdfInterruptQueueDpcForIsr de um ISR de nível passivo. Observe que um driver pode registrar um item de trabalho ou um DPC, mas não ambos.

Exemplos

O exemplo de código a seguir mostra como uma função de retorno de chamada EvtInterruptIsr deve enfileirar uma função de retorno de chamada EvtInterruptDpc.

BOOLEAN
MyEvtInterruptIsr(
    IN WDFINTERRUPT Interrupt,
    IN ULONG  MessageID
    )
{
    BOOLEAN queueDpcSuccess;

    //
    // Save interrupt information for the
    // EvtInterruptDpc function.
    //
...
    //
    // Queue the EvtInterruptDpc function.
    //
    queueDpcSuccess = WdfInterruptQueueDpcForIsr(Interrupt);
...
}

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)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DIRQL
regras de conformidade de DDI DriverCreate(kmdf)

Consulte também

EvtInterruptDpc

EvtInterruptIsr

WdfInterruptCreate