단일 또는 다중 기능 전원 상태를 사용하여 Multiple-Component 디바이스 지원

[KMDF에만 적용]

다중 구성 요소 디바이스에 대한 KMDF 드라이버는 각 구성 요소에 대해 하나 이상의 기능 전원 상태를 정의할 수 있습니다.

이 경우 드라이버는 PoFx(전원 관리 프레임워크)에 직접 등록됩니다. WDF가 PoFx에 등록되지 않도록 지정하기 위해 드라이버는 DriverManagedIdleTimeout으로 설정된 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 구조체의 IdleTimeoutType 멤버를 사용하여 WdfDeviceAssignS0IdleSettings를 호출합니다. 일반적으로 드라이버는 EvtDriverDeviceAdd 콜백 함수에서 이 메서드를 호출합니다.

다음으로, 드라이버는 PoFx에 등록해야 합니다. 이를 위해 드라이버는 PoFxRegisterDevice 를 호출한 다음 PoFxStartDevicePowerManagement를 호출합니다. 디바이스가 처음 시작될 때 드라이버는 PoFx에 한 번만 등록해야 합니다. 이 작업을 수행하는 한 가지 방법은 드라이버 제공 EvtDeviceSelfManagedIoInit 함수에서 이러한 루틴을 호출하는 것입니다. EvtDeviceSelfManagedIoInit 는 디바이스가 처음 시작될 때만 호출됩니다.

디바이스가 제거되면 드라이버는 PoFxUnregisterDevice 를 호출하여 PoFx에서 디바이스 등록을 취소해야 합니다. 한 번만 등록을 취소하려면 드라이버가 드라이버 제공 EvtDeviceSelfManagedIoFlush 함수에서 이 루틴을 호출하는 것이 좋습니다. EvtDeviceSelfManagedIoFlush 는 디바이스가 제거될 때만 호출됩니다. EvtDeviceSelfManagedIoFlush에서 등록을 취소하면 드라이버는 절전 모드 및 리밸런스 전환 중에 전원 등록을 유지하고 이러한 전환 중에 보류 중인 I/O 요청에 대한 전원 참조를 유지할 필요가 없습니다.

드라이버는 PoFxRegisterDevice를 호출할 때 다음 topics 설명한 대로 PoFx와 직접 상호 작용하는 데 사용할 수 있는 POHANDLE(전원 등록 핸들)을 받습니다.

또한 드라이버는 전원 프레임워크 루틴을 직접 호출하여 전원 제어 요청을 보내고 대기 시간, 상주 및 절전 모드 해제 요구 사항을 지정할 수 있습니다.

PoFx에 대한 자세한 내용은 Power Management Framework 개요를 참조하세요.