Compartilhar via


EVT_WDF_INTERRUPT_ENABLE função de retorno de chamada (wdfinterrupt.h)

[Aplica-se a KMDF e UMDF]

A função de retorno de chamada de evento EvtInterruptEnable de um driver permite uma interrupção de hardware especificada.

Sintaxe

EVT_WDF_INTERRUPT_ENABLE EvtWdfInterruptEnable;

NTSTATUS EvtWdfInterruptEnable(
  [in] WDFINTERRUPT Interrupt,
  [in] WDFDEVICE AssociatedDevice
)
{...}

Parâmetros

[in] Interrupt

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

[in] AssociatedDevice

Um identificador para o objeto de dispositivo de estrutura que o driver passou para WdfInterruptCreate.

Retornar valor

A função de retorno de chamada EvtInterruptEnable deve retornar STATUS_SUCCESS ou outro valor status para o qual NT_SUCCESS(status) é igual a TRUE se a função não encontrar erros. Caso contrário, essa função deve retornar um valor status para o qual NT_SUCCESS(status) é igual a FALSE.

Comentários

Para registrar uma função de retorno de chamada EvtInterruptEnable , o driver deve colocar o endereço da função de retorno de chamada em uma estrutura WDF_INTERRUPT_CONFIG antes de chamar WdfInterruptCreate.

A estrutura chama a função de retorno de chamada EvtInterruptEnable do driver sempre que o dispositivo entra em seu estado de trabalho (D0). Além disso, um driver pode fazer com que a estrutura chame a função de retorno de chamada EvtInterruptEnable chamando WdfInterruptEnable. Observe que a maioria dos drivers baseados em estrutura não deve chamar WdfInterruptEnable, porque a estrutura chama a função de retorno de chamada EvtInterruptEnable do driver sempre que o dispositivo entra em seu estado de trabalho (D0).

Antes de chamar a função de retorno de chamada EvtInterruptEnable , a estrutura eleva o IRQL do processador para o DIRQL do dispositivo e adquire o bloqueio de rotação especificado pelo driver na estrutura WDF_INTERRUPT_CONFIG do objeto de interrupção.

A partir da versão 1.11 do KMDF, o driver pode fornecer tratamento de interrupção de nível passivo. Se o driver solicitou tratamento de interrupção de nível passivo, antes de chamar a função EvtInterruptEnable em IRQL = PASSIVE_LEVEL, a estrutura adquire o bloqueio de interrupção de nível passivo que o driver configurou na estrutura WDF_INTERRUPT_CONFIG do objeto de interrupção.

Depois que a função de retorno de chamada EvtInterruptEnable retornar, a estrutura chamará a função de retorno de chamada de evento EvtDeviceD0EntryPostInterruptsEnabled do driver em IRQL = PASSIVE_LEVEL.

Você não deve assumir que um dispositivo usará os mesmos recursos de interrupção sempre que a estrutura chamar a função de retorno de chamada EvtInterruptEnable do driver. Às vezes, o gerenciador de PnP redistribui os recursos do sistema e pode atribuir novos recursos de interrupção ao seu dispositivo. O driver pode chamar WdfInterruptGetInfo para determinar os recursos de interrupção de um dispositivo.

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

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)
IRQL (Consulte a seção Observações.)

Confira também

EvtDeviceD0EntryPostInterruptsEnabled

EvtInterruptDisable

WDF_INTERRUPT_CONFIG

WdfInterruptCreate

WdfInterruptEnable

WdfInterruptGetInfo