Compartilhar via


WUDF_INTERRUPT_ISR função de retorno de chamada (wudfinterrupt.h)

Aviso

O UMDF 2 é a versão mais recente do UMDF e substitui o UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum recurso novo está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Os drivers universais do Windows devem usar o UMDF 2. Para obter mais informações, consulte Introdução aoUMDF.

O OnInterruptIsr de um driver serviços de função de retorno de chamada de evento uma interrupção de hardware.

Sintaxe

typedef
BOOLEAN
_Function_class_(WUDF_INTERRUPT_ISR)
WUDF_INTERRUPT_ISR(
    _In_
    IWDFInterrupt* Interrupt,
    _In_
    ULONG MessageID,
    _In_
    ULONG Reserved
    );

typedef WUDF_INTERRUPT_ISR *PFN_WUDF_INTERRUPT_ISR;

Parâmetros

[in] Interrupt

Um ponteiro para a interface IWDFInterrupt.

[in] MessageID

Se o dispositivo estiver usando MSIs (interrupções sinalizadas por mensagem), esse parâmetro será o número da mensagem que identifica a mensagem de interrupção de hardware do dispositivo. Caso contrário, esse valor será 0.

[in] Reserved

Reservado para uso do sistema.

Valor de retorno

Nenhum

Observações

Retornará TRUE se o driver reconhecer a propriedade da interrupção e tiver parado e reconhecido a interrupção em seu dispositivo. Caso contrário, retornará FALSE.

Para registrar uma função de retorno de chamada OnInterruptIsr, o driver deve colocar o endereço da função de retorno de chamada em uma estrutura de WUDF_INTERRUPT_CONFIG antes de chamar IWDFDevice3::CreateInterrupt.

A função de retorno de chamada OnInterruptIsr é uma ISR (rotina de serviço de interrupção) do driver UMDF, que é chamada em PASSIVE_LEVEL quando ocorre uma interrupção de hardware.

Para uma MSI (interrupção disparada por borda ou interrupção sinalizada por mensagem), a estrutura chama OnInterruptIsr fora do contexto de expedição de interrupção do sistema operacional. Isso ocorre porque o UMDF permite apenas interrupções de MSI ou gatilhos de borda não compartilhados e o driver não precisa interagir com seu hardware dentro desse contexto.

Para uma interrupção disparada em nível, a estrutura chama OnInterruptIsr no contexto da expedição de interrupção do sistema operacional. Como resultado, o thread de expedição de interrupção do sistema operacional é bloqueado no modo kernel aguardando uma resposta do driver.

Normalmente, OnInterruptIsr salva qualquer informação volátil que possa ser perdida e limpa a interrupção de hardware. Para uma interrupção disparada em nível, o driver deve parar e reconhecer a interrupção no dispositivo e retornar TRUE se ele tiver a interrupção. O driver deve fazer qualquer processamento adicional em um OnInterruptWorkItem retorno de chamada. Para enfileirar um item de trabalho, o driver chama o método IWDFInterrupt::QueueWorkItemForIsr.

Para obter mais informações sobre como lidar com interrupções em drivers UMDF, consulte Acessando o hardware e tratando interrupções.

Exemplos

O tipo de função é declarado em Wudfinterrupt.h, da seguinte maneira.

typedef
BOOLEAN
WUDF_INTERRUPT_ISR(
    _In_
    IWDFInterrupt* Interrupt,
    _In_
    ULONG MessageID,
    _In_
    ULONG Reserved
    );

typedef WUDF_INTERRUPT_ISR *PFN_WUDF_INTERRUPT_ISR;

Para definir uma função de retorno de chamada OnInterruptIsr denominada MyInterruptIsr, primeiro você deve fornecer uma declaração de função que o SDV e outras ferramentas de verificação exigem, da seguinte maneira:

WUDF_INTERRUPT_NOTIFY  MyInterruptIsr;

Em seguida, implemente sua função de retorno de chamada da seguinte maneira:

BOOLEAN
  MyInterruptIsr (
    IN IWDFInterrupt*  Interrupt,
    IN ULONG  MessageID,
    IN ULONG Reserved
    )
  {…}

Requisitos

Requisito Valor
fim do suporte Indisponível no UMDF 2.0 e posterior.
da Plataforma de Destino Área de trabalho
versão mínima do UMDF 1.11
cabeçalho wudfinterrupt.h

Consulte também