다음을 통해 공유


WdfInterruptReportInactive 함수(wdfinterrupt.h)

[KMDF에만 적용]

WdfInterruptReportInactive 메서드는 인터럽트가 더 이상 활성화되지 않고 드라이버가 연결된 줄에서 인터럽트 요청을 기대하지 않는다는 것을 시스템에 알릴 수 있습니다.

구문

void WdfInterruptReportInactive(
  [in] WDFINTERRUPT Interrupt
);

매개 변수

[in] Interrupt

프레임워크 인터럽트 개체에 대한 핸들입니다.

반환 값

없음

설명

기능 상태 전원 관리를 구현하는 드라이버만 WdfInterruptReportInactive를 호출합니다.

드라이버가 WdfInterruptReportInactive를 호출하면 PoFx(전원 관리 프레임워크)에서 관련 전원 관리 작업을 수행할 수 있습니다.

일반적으로 드라이버는 State가 0보다 크면 ComponentIdleConditionCallback 루틴 또는 ComponentIdleStateCallback에서 WdfInterruptReportInactive를 호출합니다(저전력 Fx 상태를 나타낸다).

드라이버가 Windows 8 이전의 운영 체제에서 이 메서드를 호출하는 경우 프레임워크의 검증 도구는 오류를 보고합니다.

예제

다음 예제에서는 드라이버가 KMDF 드라이버의 ComponentIdleStateCallback 루틴에서 WdfInterruptReportInactive를 호출하는 방법을 보여 줍니다. 드라이버는 WdfDeviceWdmAssignPowerFrameworkSettings를 호출하여 단일 구성 요소를 등록합니다.

VOID
MyComponentIdleStateCallback(
    _In_ PVOID Context,
    _In_ ULONG Component,
    _In_ ULONG State
    )
{
    PFDO_DEVICE_DATA deviceData;
    PFDO_INTERRUPT_CONTEXT interruptContext;

    deviceData = FdoGetData((WDFDEVICE)Context);
    interruptContext = InterruptGetData(deviceData->Interrupt);

    switch (State) {
        case 0:
             …
            break;

        //
        // PoFx may make us go to any of the F-states directly, hence we execute
        // F0Exit code for all of the Fx states. Note that transition to any Fx 
        // state happens from F0 (and not another Fx state).
        //
        default:
            //
            // Disable interrupt generation at hardware if needed.
            // 
            WdfInterruptAcquireLock(deviceData->Interrupt);
            DisableInterruptInHardware();
            WdfInterruptReleaseLock(deviceData->Interrupt);

            //
            // Report that interrupt is now inactive.
            //
            WdfInterruptReportInactive(deviceData->Interrupt);

            interruptContext->ReportedInactive = TRUE;

        break;

    …

}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8
대상 플랫폼 유니버설
최소 KMDF 버전 1.11
머리글 wdfinterrupt.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(프레임워크 라이브러리 버전 관리 참조)
IRQL <=DISPATCH_LEVEL
DDI 규정 준수 규칙 DriverCreate(kmdf)

추가 정보

WdfInterruptReportActive