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.) |