Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Se o driver lida com interrupções de dispositivo, ele deve fornecer as funções de retorno de chamada EvtInterruptEnable e EvtInterruptDisable, que habilitam e desabilitam as interrupções. Normalmente, essas funções de retorno de chamada são executadas no DIRQL do dispositivo e devem fazer o que for necessário para ativar e desativar o mecanismo de interrupção de um dispositivo. Para interrupções de nível passivo, essas funções callback são executadas em IRQL = PASSIVE_LEVEL enquanto mantêm o bloqueio de interrupção de nível passivo.
Se o driver precisar executar operações adicionais relacionadas à ativação ou desativação de interrupções, e se essas operações adicionais não puderem ser executadas em IRQL = DIRQL, o driver também poderá fornecer EvtDeviceD0EntryPostInterruptsEnabled e EvtDeviceD0ExitPreInterruptsDisabled funções de retorno de chamada. Essas duas funções de callback são executadas em IRQL = PASSIVE_LEVEL, onde não há retenção de bloqueio de interrupção, podendo, assim, chamar métodos de objetos da estrutura que estão indisponíveis em IRQL = DIRQL.
A estrutura invoca as funções de retorno de chamada EvtInterruptEnable e EvtDeviceD0EntryPostInterruptsEnabled do driver cada vez que o dispositivo entra no seu estado de trabalho (D0), após a estrutura ter chamado a função de retorno de chamada EvtDeviceD0Entry do driver.
A estrutura chama as funções de retorno de chamada EvtDeviceD0ExitPreInterruptsDisabled e EvtInterruptDisable do driver sempre que o dispositivo sai de seu estado de funcionamento, antes que a estrutura chame a função de retorno de chamada EvtDeviceD0Exit do driver. Para obter mais informações sobre quando o framework chama as funções de retorno de chamada de um driver, consulte PnP e cenários de gerenciamento de energia.
Você não deve presumir que um dispositivo usará os mesmos recursos de interrupção cada vez que a estrutura chamar a função de retorno de chamada EvtInterruptEnable do driver. Às vezes, o gerenciador PnP redistribui recursos do sistemae 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. O driver pode chamar WdfInterruptGetDevice para determinar o dispositivo ao qual pertence um objeto de interrupção. (Alguns drivers podem chamar WdfInterruptWdmGetInterrupt.)
Para habilitar e desabilitar interrupções diretamente, o driver pode chamar os métodos WdfInterruptEnable e WdfInterruptDisable do objeto de interrupção, que chamam as funções de retorno de chamada de evento do driver, EvtInterruptEnable e EvtInterruptDisable. No entanto, a maioria dos drivers deve apenas permitir que a estrutura chame as funções de retorno de chamada EvtInterruptEnable e EvtInterruptDisable nos momentos adequados.