WdfInterruptQueueDpcForIsr 함수(wdfinterrupt.h)
[KMDF 및 UMDF에 적용]
WdfInterruptQueueDpcForIsr 메서드는 실행을 위해 프레임워크 인터럽트 개체의 EvtInterruptDpc 콜백 함수를 큐에 대기합니다.
구문
BOOLEAN WdfInterruptQueueDpcForIsr(
[in] WDFINTERRUPT Interrupt
);
매개 변수
[in] Interrupt
프레임워크 인터럽트 개체에 대한 핸들입니다.
반환 값
WdfInterruptQueueDpcForIsr는 인터럽트 개체의 EvtInterruptDpc 콜백 함수를 성공적으로 큐에 대기하는 경우 TRUE를 반환합니다. 콜백 함수가 이전에 큐에 대기 중이고 실행되지 않은 경우 메서드는 FALSE 를 반환합니다.
드라이버가 잘못된 개체 핸들을 제공하는 경우 버그 검사 발생합니다.
설명
드라이버는 일반적으로 EvtInterruptIsr 콜백 함수 내에서 WdfInterruptQueueDpcForIsr를 호출합니다.
인터럽트 개체의 EvtInterruptDpc 콜백 함수는 실행되기 전에 한 번만 큐에 대기할 수 있습니다. 따라서 WdfInterruptQueueDpcForIsr에 대한 호출이 성공하면 프레임워크가 EvtInterruptDpc 콜백 함수를 큐에서 해제할 때까지 후속 호출은 FALSE를 반환합니다.
EvtInterruptDpc 콜백은 큐에 추가된 프로세서에서 실행됩니다. 드라이버 가 WdfInterruptQueueDpcForIsr 를 호출하여 다른 DPC를 큐에 대기하는 동안 EvtInterruptDpc 콜백 함수가 이미 큐에서 제거되거나 실행 중인 경우 두 번째 EvtInterruptDpc 콜백은 첫 번째 콜백이 완료되기 전에 실행될 수도 있습니다.
프레임워크 기반 드라이버에서 인터럽트 처리에 대한 자세한 내용은 하드웨어 인터럽트 처리를 참조하세요.
KMDF 1.11 이상에서는 드라이버가 수동 수준 ISR에서 WdfInterruptQueueDpcForIsr 를 호출할 수 있습니다. 드라이버는 작업 항목 또는 DPC를 등록할 수 있지만 둘 다 등록할 수는 없습니다.
예제
다음 코드 예제에서는 EvtInterruptIsr 콜백 함수가 EvtInterruptDpc 콜백 함수를 큐에 대기하는 방법을 보여 줍니다.
BOOLEAN
MyEvtInterruptIsr(
IN WDFINTERRUPT Interrupt,
IN ULONG MessageID
)
{
BOOLEAN queueDpcSuccess;
//
// Save interrupt information for the
// EvtInterruptDpc function.
//
...
//
// Queue the EvtInterruptDpc function.
//
queueDpcSuccess = WdfInterruptQueueDpcForIsr(Interrupt);
...
}
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
최소 KMDF 버전 | 1.0 |
최소 UMDF 버전 | 2.0 |
머리글 | wdfinterrupt.h(Wdf.h 포함) |
라이브러리 | Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF) |
IRQL | <=DIRQL |
DDI 규정 준수 규칙 | DriverCreate(kmdf) |