Introdução às rotinas de serviço de interrupção

Um driver de um dispositivo físico que recebe interrupções registra uma ou mais ISRs (rotinas de serviço de interrupção) para atender às interrupções. O sistema chama o ISR sempre que recebe essa interrupção.

Dispositivos para portas e ônibus antes da PCI 2.2 geram interrupções baseadas em linha. Um dispositivo gera a interrupção enviando um sinal elétrico em um pino dedicado conhecido como uma linha de interrupção. As versões do Microsoft Windows anteriores ao Windows Vista dão suporte apenas a interrupções baseadas em linha.

A partir do PCI 2.2, os dispositivos PCI podem gerar interrupções sinalizadas por mensagem. Um dispositivo gera uma interrupção sinalizada por mensagem gravando um valor de dados em um endereço específico. O Windows Vista e sistemas operacionais posteriores dão suporte a interrupções baseadas em linha e sinalizadas por mensagem.

O sistema dá suporte a dois tipos diferentes de ISRs:

  • O driver pode registrar uma rotina InterruptService para lidar com interrupções baseadas em linha ou sinalizadas por mensagem. (Este é o único tipo disponível antes do Windows Vista.) O sistema passa um valor de contexto fornecido pelo driver.

  • O driver pode registrar uma rotina InterruptMessageService para lidar com interrupções sinalizadas por mensagem. O sistema passa um valor de contexto fornecido pelo driver e a ID da mensagem de interrupção.

Para obter mais informações sobre como registrar uma rotina InterruptService ou InterruptMessageService para atender às interrupções do dispositivo, consulte Introdução a interrupções de Message-Signaled.