Compartilhar via


Função WdfInterruptQueueDpcForIsr (wdfinterrupt.h)

[Aplica-se a KMDF e UMDF]

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

Sintaxe

BOOLEAN WdfInterruptQueueDpcForIsr(
  [in] WDFINTERRUPT Interrupt
);

Parâmetros

[in] Interrupt

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

Retornar valor

WdfInterruptQueueDpcForIsr retornará TRUE 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 enfileirada anteriormente e não tiver sido executada.

Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.

Comentários

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 remova a função de retorno de chamada EvtInterruptDpc .

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

Para obter mais informações sobre como lidar com interrupções em drivers baseados em estrutura, consulte Tratamento de 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
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)

Confira também

EvtInterruptDpc

EvtInterruptIsr

WdfInterruptCreate