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) |