다음을 통해 공유


WdmlibIoConnectInterruptEx 함수(iointex.h)

WdmlibIoConnectInterruptEx 함수는 디바이스의 인터럽트에 대한 인터럽트 처리 루틴을 등록합니다.

구문

NTSTATUS WdmlibIoConnectInterruptEx(
  [in, out] PIO_CONNECT_INTERRUPT_PARAMETERS Parameters
);

매개 변수

[in, out] Parameters

디바이스 및 인터럽트 처리 루틴을 지정하는 IO_CONNECT_INTERRUPT_PARAMETERS 구조체에 대한 포인터입니다. 반환 시 WdmlibIoConnectInterruptEx 는 이 구조를 업데이트하여 디바이스의 인터럽트에 대한 정보를 저장합니다.

반환 값

함수는 성공 시 STATUS_SUCCESS 반환하거나 실패 시 적절한 NTSTATUS 오류 값을 반환합니다. 가능한 오류 값은 다음과 같습니다.

반환 코드 설명
STATUS_INVALID_DEVICE_REQUEST
지정된 디바이스에 대한 작업이 잘못되었습니다. 예를 들어 매개 변수->버전 = CONNECT_LINE_BASED 시스템에서 디바이스에 여러 인터럽트 메시지를 할당했습니다.
STATUS_INVALID_PARAMETER
호출자가 잘못된 매개 변수를 지정했습니다. 이 오류는 예를 들어 호출자가 디바이스의 디바이스 개체에 대해 NULL 을 지정한 경우에 발생합니다.
STATUS_INVALID_PARAMETER_1
호출자는 Parameters가 가리키는 구조체의 Version 멤버에 대해 잘못된 값을 지정했습니다. 매개 변수->버전은 CONNECT_LINE_BASED, CONNECT_MESSAGE_BASED 또는 CONNECT_FULLY_SPECIFIED 중 하나여야 합니다.
STATUS_INVALID_PARAMETER_10
호출자는 매개 변수 가 가리키는 구조체의 10번째 멤버에 대해 잘못된 값을 지정했습니다. 이 오류는 예를 들어 Parameters->FullySpecified.ProcessorEnableMask 에 비트가 설정되어 있지 않은 경우에 발생합니다.
STATUS_NOT_FOUND
인수 중 하나를 찾을 수 없습니다. 예를 들어 지정된 디바이스에 인터럽트는 없거나 지정된 인터럽트 벡터가 디바이스에 할당되지 않습니다.

설명

WdmlibIoConnectInterruptEx 를 사용하여 기존 라인 기반 인터럽트(예: PCI 버스에서 지원됨) 및 최신 메시지 신호 인터럽트(예: PCI 버전 2.2 및 3.0에서 지원됨)에 대한 인터럽트 처리 루틴을 등록할 수 있습니다.

드라이버는 줄 기반 인터럽트용 InterruptService 루틴 및 메시지 신호 인터럽트용 InterruptMessageService 루틴을 등록합니다. 각 경우에 매개 변수 의 멤버를 지정하는 방법에 대한 자세한 내용은 IO_CONNECT_INTERRUPT_PARAMETERS 참조하세요.

WdmlibIoConnectInterruptEx매개 변수 의 멤버를 업데이트하여 디바이스의 인터럽트에 대한 정보를 제공합니다. WdmlibIoConnectInterruptEx에서 제공하는 정보에 대한 자세한 내용은 IO_CONNECT_INTERRUPT_PARAMETERS 참조하세요.

WdmlibIoDisconnectInterruptEx를 사용하여 WdmlibIoConnectInterruptEx에 등록된 루틴의 등록을 취소합니다.

드라이버는 ISR을 연결할 때까지 디바이스를 프로그래밍하여 인터럽트 생성을 하지 않아야 합니다. 따라서 ISR은 WdmlibIoConnectInterruptEx 가 반환되기 전에 실행할 수 없습니다. 그러나 프로그래밍할 수 없는 특정 디바이스(예: 단추)가 있습니다. 이러한 디바이스의 경우 드라이버는 WdmlibIoConnectInterruptEx를 호출하는 즉시 ISR을 처리할 준비가 되어 있어야 합니다. WdmlibIoConnectInterruptEx가 호출될 때 인터럽트 줄이 이미 어설션될 수 있으며 WdmlibIoConnectInterruptEx 호출 해제 전에 인터럽트 컨트롤러에서 줄을 사용하도록 설정한 직후에 실행될 수 있습니다.

인터럽트 처리 루틴을 등록하는 방법에 대한 자세한 내용은 ISR 등록을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다. Windows 2000, Windows XP 또는 Windows Server 2003에서도 작동해야 하는 드라이버는 대신 Iointex.lib에 연결하여 루틴을 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 iointex.h(Iointex.h, Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs

추가 정보

IO_CONNECT_INTERRUPT_PARAMETERS

InterruptMessageService

InterruptService

WdmlibIoDisconnectInterruptEx