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 콜백은 큐에 추가한 프로세서에서 실행됩니다. EvtInterruptDpc 콜백 함수가 이미 큐에서 제거되거나 실행되는 동안 드라이버가 WdfInterruptQueueDpcForIsr 호출하여 다른 DPC를 큐에 대기하는 경우 첫 번째 콜백이 완료되기 전에 두 번째 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) |