Registro de un ISR

Los controladores usan la rutina IoConnectInterruptEx para registrar un ISR para una interrupción. IoConnectInterruptEx forma parte de Windows Vista y sistemas operativos posteriores. IoConnectInterruptEx toma un único parámetro Parameters , que es un puntero a una estructura IO_CONNECT_INTERRUPT_PARAMETERS . Para Windows Server 2003, Windows XP y Windows 2000, los controladores pueden usar la biblioteca Iointex.lib que se incluye en el Kit de controladores de Windows (WDK).

En Windows Vista y versiones posteriores, IoConnectInterruptEx proporciona varios métodos diferentes para registrar un ISR. El valor especificado para Parameters-Version> determina el método , como se indica a continuación:

  • Use CONNECT_LINE_BASED para registrar una rutina InterruptService para todas las interrupciones basadas en línea de un dispositivo. (Los dispositivos suelen tener como máximo una interrupción basada en líneas). El sistema detecta automáticamente las interrupciones basadas en línea asignadas al dispositivo. Para obtener más información, consulte Uso de la versión de CONNECT_LINE_BASED de IoConnectInterruptEx.

  • Use CONNECT_MESSAGE_BASED para registrar una rutina InterruptMessageService para todas las interrupciones señaladas por mensajes de un dispositivo. También puede especificar una rutina de interruptService de reserva, si el dispositivo solo tiene interrupciones basadas en línea, IoConnectInterruptEx registra la rutina InterruptService en su lugar. El sistema detecta automáticamente las interrupciones señaladas por mensajes asignadas al dispositivo. Para obtener más información, consulte Uso de la versión de CONNECT_MESSAGE_BASED de IoConnectInterruptEx.

  • Use CONNECT_FULLY_SPECIFIED para registrar una rutina InterruptService para cada interrupción por separado. Puede usarlo para especificar una rutina InterruptService para una interrupción basada en líneas o una interrupción señalada por mensajes, pero debe especificar manualmente la interrupción mediante la información pasada por el administrador de PnP. Para obtener más información, consulte Uso de la versión CONNECT_FULLY_SPECIFIED de IoConnectInterruptEx.

En los sistemas operativos anteriores a Windows Vista, solo puede usar CONNECT_FULLY_SPECIFIED. Si especifica CONNECT_LINE_BASED o CONNECT_MESSAGE_BASED, IoConnectInterruptEx devuelve un error. Puede usar este comportamiento para determinar si se ejecuta en Windows Vista o en un sistema anterior. Para obtener más información, consulte Uso de IoConnectInterruptEx antes de Windows Vista.