ISR 등록
드라이버는 IoConnectInterruptEx 루틴을 사용하여 인터럽트에 대한 ISR을 등록합니다. IoConnectInterruptEx 는 Windows Vista 이상 운영 체제의 일부입니다. IoConnectInterruptEx는 IO_CONNECT_INTERRUPT_PARAMETERS 구조체에 대한 포인터인 단일 Parameters 매개 변수를 사용합니다. Windows Server 2003, Windows XP 및 Windows 2000의 경우 드라이버는 WDK(Windows 드라이버 키트)에 포함된 Iointex.lib 라이브러리를 사용할 수 있습니다.
Windows Vista 이상에서 IoConnectInterruptEx 는 ISR을 등록하기 위한 여러 가지 방법을 제공합니다. Parameters-Version>에 지정된 값은 다음과 같이 메서드를 결정합니다.
CONNECT_LINE_BASED 사용하여 디바이스의 모든 라인 기반 인터럽트용 InterruptService 루틴을 등록합니다. (디바이스는 일반적으로 최대 하나의 줄 기반 인터럽트입니다.) 시스템은 디바이스에 할당된 모든 줄 기반 인터럽트 를 자동으로 검색합니다. 자세한 내용은 CONNECT_LINE_BASED 버전 IoConnectInterruptEx 사용을 참조하세요.
CONNECT_MESSAGE_BASED 사용하여 디바이스의 모든 메시지 신호 인터럽트용 InterruptMessageService 루틴을 등록합니다. 대체 인터럽트 서비스 루틴을 지정할 수도 있습니다. 디바이스에 줄 기반 인터럽트만 있는 경우 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 또는 이전 시스템에서 실행 중인지 확인할 수 있습니다. 자세한 내용은 Windows Vista 이전의 IoConnectInterruptEx 사용을 참조하세요.