WUDF_INTERRUPT_ISR 콜백 함수(wudfinterrupt.h)

경고

UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에 새 기능이 추가되지 않으며 최신 버전의 Windows 10 UMDF 1에 대한 지원이 제한됩니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다. 자세한 내용은 UMDF를 사용하여 시작 참조하세요.

드라이버의 OnInterruptIsr 이벤트 콜백 함수는 하드웨어 인터럽트를 서비스합니다.

구문

typedef
BOOLEAN
_Function_class_(WUDF_INTERRUPT_ISR)
WUDF_INTERRUPT_ISR(
    _In_
    IWDFInterrupt* Interrupt,
    _In_
    ULONG MessageID,
    _In_
    ULONG Reserved
    );

typedef WUDF_INTERRUPT_ISR *PFN_WUDF_INTERRUPT_ISR;

매개 변수

[in] Interrupt

IWDFInterrupt 인터페이스에 대한 포인터입니다.

[in] MessageID

디바이스가 MSI(메시지 신호 인터럽트)를 사용하는 경우 이 매개 변수는 디바이스의 하드웨어 인터럽트 메시지를 식별하는 메시지 번호입니다. 그렇지 않으면 이 값은 0입니다.

[in] Reserved

시스템에서 사용하도록 예약되었습니다.

반환 값

없음

설명

드라이버가 인터럽트 소유권을 인정하고 디바이스의 인터럽트 중지 및 승인이 있으면 TRUE를 반환합니다. 그렇지 않으면 가 FALSE를 반환합니다.

OnInterruptIsr 콜백 함수를 등록하려면 드라이버가 IWDFDevice3::CreateInterrupt를 호출하기 전에 콜백 함수의 주소를 WUDF_INTERRUPT_CONFIG 구조에 배치해야 합니다.

OnInterruptIsr 콜백 함수는 하드웨어 인터럽트가 발생할 때 PASSIVE_LEVEL 호출되는 UMDF 드라이버의 ISR(인터럽트 서비스 루틴)입니다.

에지 트리거 인터럽트 또는 MSI(메시지 신호 인터럽트)의 경우 프레임워크는 운영 체제의 인터럽트 디스패치 컨텍스트 외부에서 OnInterruptIsr 를 호출합니다. 이는 UMDF가 공유되지 않은 에지 트리거 또는 MSI 인터럽트만 허용하고 드라이버가 이 컨텍스트 내에서 해당 하드웨어와 상호 작용할 필요가 없기 때문입니다.

수준 트리거 인터럽트의 경우 프레임워크는 운영 체제의 인터럽트 디스패치 컨텍스트에서 OnInterruptIsr 를 호출합니다. 결과적으로 운영 체제의 인터럽트 디스패치 스레드는 드라이버의 응답을 기다리는 커널 모드에서 차단됩니다.

일반적으로 OnInterruptIsr 는 손실될 수 있는 휘발성 정보를 저장하고 하드웨어 인터럽트를 지웁니다. 수준 트리거 인터럽트인 경우 드라이버는 디바이스에서 인터럽트 중지 및 승인을 받은 다음 인터럽트 소유인 경우 TRUE를 반환해야 합니다. 드라이버는 OnInterruptWorkItem 콜백에서 추가 처리를 수행해야 합니다. 작업 항목을 큐에 넣기 위해 드라이버는 IWDFInterrupt::QueueWorkItemForIsr 메서드를 호출합니다.

UMDF 드라이버에서 인터럽트 처리에 대한 자세한 내용은 하드웨어 액세스 및 인터럽트 처리를 참조하세요.

예제

함수 형식은 다음과 같이 Wudfinterrupt.h에서 선언됩니다.

typedef
BOOLEAN
WUDF_INTERRUPT_ISR(
    _In_
    IWDFInterrupt* Interrupt,
    _In_
    ULONG MessageID,
    _In_
    ULONG Reserved
    );

typedef WUDF_INTERRUPT_ISR *PFN_WUDF_INTERRUPT_ISR;

MyInterruptIsr라는 OnInterruptIsr 콜백 함수를 정의하려면 먼저 다음과 같이 SDV 및 기타 확인 도구에 필요한 함수 선언을 제공해야 합니다.

WUDF_INTERRUPT_NOTIFY  MyInterruptIsr;

그런 다음, 다음과 같이 콜백 함수를 구현합니다.

BOOLEAN
  MyInterruptIsr (
    IN IWDFInterrupt*  Interrupt,
    IN ULONG  MessageID,
    IN ULONG Reserved
    )
  {…}

요구 사항

요구 사항
지원 종료 UMDF 2.0 이상에서는 사용할 수 없습니다.
대상 플랫폼 데스크톱
최소 UMDF 버전 1.11
머리글 wudfinterrupt.h

추가 정보