Registrieren einer ISR

Treiber verwenden die IoConnectInterruptEx-Routine , um einen ISR für einen Interrupt zu registrieren. IoConnectInterruptEx ist Teil von Windows Vista und höheren Betriebssystemen. IoConnectInterruptEx verwendet einen einzelnen Parameter , bei dem es sich um einen Zeiger auf eine IO_CONNECT_INTERRUPT_PARAMETERS-Struktur handelt. Für Windows Server 2003, Windows XP und Windows 2000 können Treiber die Iointex.lib-Bibliothek verwenden, die im Windows Driver Kit (WDK) enthalten ist.

Unter Windows Vista und höher bietet IoConnectInterruptEx verschiedene Methoden zum Registrieren einer ISR. Der für Parameters-Version> angegebene Wert bestimmt die Methode wie folgt:

  • Verwenden Sie CONNECT_LINE_BASED, um eine InterruptService-Routine für alle leitungsbasierten Interrupts eines Geräts zu registrieren. (Geräte verfügen in der Regel über höchstens einen zeilenbasierten Interrupt.) Das System erkennt automatisch alle dem Gerät zugewiesenen zeilenbasierten Interrupts. Weitere Informationen finden Sie unter Verwenden der CONNECT_LINE_BASED Version von IoConnectInterruptEx.

  • Verwenden Sie CONNECT_MESSAGE_BASED, um eine InterruptMessageService-Routine für alle nachrichtengesteuerten Interrupts eines Geräts zu registrieren. Sie können auch eine InterruptService-Fallbackroutine angeben. Wenn das Gerät nur über zeilenbasierte Interrupts verfügt, registriert IoConnectInterruptEx stattdessen die InterruptService-Routine. Das System erkennt automatisch alle dem Gerät zugewiesenen Unterbrechungen mit Nachrichtensignalen. Weitere Informationen finden Sie unter Verwenden der CONNECT_MESSAGE_BASED Version von IoConnectInterruptEx.

  • Verwenden Sie CONNECT_FULLY_SPECIFIED, um eine InterruptService-Routine für jeden Interrupt separat zu registrieren. Sie können dies verwenden, um eine InterruptService-Routine für einen zeilenbasierten oder einen nachrichtengesteuerten Interrupt anzugeben. Sie müssen den Interrupt jedoch manuell mithilfe von Informationen angeben, die vom PnP-Manager übergeben werden. Weitere Informationen finden Sie unter Verwenden der CONNECT_FULLY_SPECIFIED Version von IoConnectInterruptEx.

Unter Betriebssystemen vor Windows Vista können Sie nur CONNECT_FULLY_SPECIFIED verwenden. Wenn Sie CONNECT_LINE_BASED oder CONNECT_MESSAGE_BASED angeben, gibt IoConnectInterruptEx einen Fehler zurück. Sie können dieses Verhalten verwenden, um zu bestimmen, ob Sie unter Windows Vista oder einem früheren System ausgeführt werden. Weitere Informationen finden Sie unter Verwenden von IoConnectInterruptEx vor Windows Vista.