Поделиться через


Регистрация ISR

Драйверы используют подпрограмму IoConnectInterruptEx для регистрации ISR для прерывания. IoConnectInterruptEx входит в состав операционных систем Windows Vista и более поздних версий. IoConnectInterruptEx принимает один параметр Parameters , который является указателем на структуру IO_CONNECT_INTERRUPT_PARAMETERS . Для Windows Server 2003, Windows XP и Windows 2000 драйверы могут использовать библиотеку Iointex.lib, которая входит в состав пакета драйверов Windows (WDK).

В Windows Vista и более поздних версиях IoConnectInterruptEx предоставляет несколько различных методов регистрации ISR. Значение, указанное в параметре Parameters-Version>, определяет метод следующим образом:

  • Используйте CONNECT_LINE_BASED, чтобы зарегистрировать подпрограмму InterruptService для всех прерываний на основе строки устройства. (Устройства обычно имеют не более одного прерывания на основе строки.) Система автоматически обнаруживает все прерывания на основе строки, назначенные устройству. Дополнительные сведения см. в разделе Использование CONNECT_LINE_BASED версии IoConnectInterruptEx.

  • Используйте CONNECT_MESSAGE_BASED, чтобы зарегистрировать подпрограмму InterruptMessageService для всех прерываний устройства, сигнальных сообщением. Вы также можете указать резервную подпрограмму InterruptService . Если устройство имеет только прерывания на основе строк, IoConnectInterruptEx регистрирует подпрограмму InterruptService . Система автоматически обнаруживает все прерывания с сигналом сообщения, назначенные устройству. Дополнительные сведения см. в статье Использование CONNECT_MESSAGE_BASED версии IoConnectInterruptEx.

  • Используйте CONNECT_FULLY_SPECIFIED, чтобы зарегистрировать подпрограмму InterruptService для каждого прерывания отдельно. Это можно использовать для указания подпрограммы InterruptService для прерывания на основе строки или по сигналу сообщения, но необходимо вручную указать прерывание, используя сведения, передаваемые диспетчером PnP. Дополнительные сведения см. в статье Использование версии CONNECT_FULLY_SPECIFIED IoConnectInterruptEx.

В операционных системах до Windows Vista можно использовать только CONNECT_FULLY_SPECIFIED. Если указать CONNECT_LINE_BASED или CONNECT_MESSAGE_BASED, IoConnectInterruptEx возвращает ошибку. Вы можете использовать это поведение, чтобы определить, работаете ли вы в Windows Vista или более ранней системе. Дополнительные сведения см. в статье Использование IoConnectInterruptEx до Windows Vista.