Einführung in Interrupt-Dienstroutinen
Ein Treiber eines physischen Geräts, das Interrupts empfängt, registriert mindestens eine Interruptdienstroutine (ISR), um die Interrupts zu bedienen. Das System ruft die ISR bei jedem Empfang dieses Interrupts auf.
Geräte für Ports und Busse vor PCI 2.2 generieren leitungsbasierte Interrupts. Ein Gerät generiert den Interrupt, indem es ein elektrisches Signal an einen dedizierten Pin sendet, der als Interruptleitung bezeichnet wird. Versionen von Microsoft Windows vor Windows Vista unterstützen nur leitungsbasierte Interrupts.
Ab PCI 2.2 können PCI-Geräte Unterbrechungen mit Nachrichtensignal generieren. Ein Gerät generiert einen Nachrichtensignal-Interrupt, indem es einen Datenwert in eine bestimmte Adresse schreibt. Windows Vista und höhere Betriebssysteme unterstützen sowohl leitungsbasierte als auch nachrichtenbasierte Interrupts.
Das System unterstützt zwei verschiedene Arten von ISRs:
Der Treiber kann eine InterruptService-Routine registrieren, um zeilenbasierte oder nachrichtenbasierte Interrupts zu verarbeiten. (Dies ist der einzige Typ, der vor Windows Vista verfügbar ist.) Das System übergibt einen vom Treiber bereitgestellten Kontextwert.
Der Treiber kann eine InterruptMessageService-Routine registrieren, um Unterbrechungen mit Nachrichtensignalen zu verarbeiten. Das System übergibt sowohl einen vom Treiber bereitgestellten Kontextwert als auch die Nachrichten-ID der Interruptnachricht.
Weitere Informationen zum Registrieren einer InterruptService- oder InterruptMessageService-Routine zum Warten der Interrupts des Geräts finden Sie unter Einführung in Message-Signaled Interrupts.