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
시스템 사용을 위해 예약되어 있습니다.
반환 값
없음
발언
드라이버가 인터럽트 소유권을 인정하고 해당 디바이스에서 인터럽트(interrupt)를 중지하고 승인한 경우 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 |