다음을 통해 공유


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)

추가 정보

EvtInterruptDpc

EvtInterruptIsr

WdfInterruptCreate