Partilhar via


Registar um ISR

Os drivers usam a rotina IoConnectInterruptEx para registrar um ISR para uma interrupção. IoConnectInterruptEx faz parte do Windows Vista e sistemas operacionais posteriores. IoConnectInterruptEx usa um único parâmetro Parameters, que é um ponteiro para uma estrutura IO_CONNECT_INTERRUPT_PARAMETERS. Para Windows Server 2003, Windows XP e Windows 2000, os drivers podem usar a biblioteca Iointex.lib incluída no Kit de Driver do Windows (WDK).

No Windows Vista e versões posteriores, IoConnectInterruptEx fornece vários métodos diferentes para registrar um ISR. O valor especificado para Parameters->Version determina o método, da seguinte maneira:

  • Use CONNECT_LINE_BASED para registar uma rotina de InterruptService para todas as interrupções baseadas em linha de um dispositivo. (Os dispositivos geralmente têm no máximo uma interrupção baseada em linha.) O sistema deteta automaticamente quaisquer interrupções baseadas em linha atribuídas ao dispositivo. Para obter mais informações, consulte Utilizando a versão CONNECT_LINE_BASED do IoConnectInterruptEx.

  • Utilize CONNECT_MESSAGE_BASED para registar uma rotina InterruptMessageService para todas as interrupções sinalizadas por mensagem de um dispositivo. Você também pode especificar uma rotina de fallback do InterruptService — se o dispositivo tiver apenas interrupções baseadas em linha, IoConnectInterruptEx registra a rotina do InterruptService. O sistema deteta automaticamente todas as interrupções sinalizadas por mensagem atribuídas ao dispositivo. Para obter mais informações, consulte Usando a versão CONNECT_MESSAGE_BASED do IoConnectInterruptEx.

  • Use CONNECT_FULLY_SPECIFIED para registrar uma rotina InterruptService para cada interrupção separadamente. Você pode usar isso para especificar uma rotina InterruptService para uma interrupção baseada em linha ou sinalizada por mensagem, mas você deve especificar manualmente a interrupção usando informações passadas pelo gerenciador PnP. Para obter mais informações, consulte Usando a versão CONNECT_FULLY_SPECIFIED do IoConnectInterruptEx.

Em sistemas operacionais anteriores ao Windows Vista, você só pode usar CONNECT_FULLY_SPECIFIED. Se você especificar CONNECT_LINE_BASED ou CONNECT_MESSAGE_BASED, IoConnectInterruptEx retornará um erro. Você pode usar esse comportamento para determinar se você está executando no Windows Vista ou em um sistema anterior. Para obter mais informações, consulte Usando IoConnectInterruptEx antes do Windows Vista.