Registrazione di un ISR

I driver usano la routine IoConnectInterruptEx per registrare un ISR per un interruzione. IoConnectInterruptEx fa parte di Windows Vista e dei sistemi operativi successivi. IoConnectInterruptEx accetta un singolo parametro Parameters , ovvero un puntatore a una struttura IO_CONNECT_INTERRUPT_PARAMETERS . Per Windows Server 2003, Windows XP e Windows 2000, i driver possono usare la libreria Iointex.lib inclusa in Windows Driver Kit (WDK).

In Windows Vista e versioni successive IoConnectInterruptEx offre diversi metodi per la registrazione di un ISR. Il valore specificato per Parameters-Version> determina il metodo, come indicato di seguito:

  • Usare CONNECT_LINE_BASED per registrare una routine InterruptService per tutti gli interruzioni basati su linea di un dispositivo. I dispositivi in genere hanno una sola interruzione basata su riga. Il sistema rileva automaticamente eventuali interruzioni basate su riga assegnate al dispositivo. Per altre informazioni, vedere Uso della versione CONNECT_LINE_BASED di IoConnectInterruptEx.

  • Usare CONNECT_MESSAGE_BASED per registrare una routine InterruptMessageService per tutte le interruzioni segnalate da un dispositivo. È anche possibile specificare una routine di interruptservice di fallback, se il dispositivo ha solo interruzioni basate su riga, IoConnectInterruptEx registra invece la routine InterruptService . Il sistema rileva automaticamente eventuali interruzioni segnalate dal messaggio assegnate al dispositivo. Per altre informazioni, vedere Uso della CONNECT_MESSAGE_BASED versione di IoConnectInterruptEx.

  • Usare CONNECT_FULLY_SPECIFIED per registrare una routine InterruptService per ogni interruzione separatamente. È possibile usare questa opzione per specificare una routine InterruptService per una riga basata su riga o un interruzione con segnale di messaggio, ma è necessario specificare manualmente l'interruzione usando le informazioni passate dalla gestione PnP. Per altre informazioni, vedere Uso della versione CONNECT_FULLY_SPECIFIED di IoConnectInterruptEx.

Nei sistemi operativi precedenti a Windows Vista è possibile usare solo CONNECT_FULLY_SPECIFIED. Se si specifica CONNECT_LINE_BASED o CONNECT_MESSAGE_BASED, IoConnectInterruptEx restituisce un errore. È possibile usare questo comportamento per determinare se si esegue in Windows Vista o in un sistema precedente. Per altre informazioni, vedere Uso di IoConnectInterruptEx prima di Windows Vista.