EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 콜백 함수(wdfdevice.h)

[KMDF 및 UMDF에 적용]

드라이버의 EvtDeviceArmWakeFromS0 이벤트 콜백 함수는 시스템이 S0( 시스템 작동 상태 )에 남아 있는 경우 저전력 디바이스 상태에서 절전 모드 해제 신호를 트리거할 수 있도록 디바이스를 팔(즉, 활성화)합니다.

구문

EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 EvtWdfDeviceArmWakeFromS0;

NTSTATUS EvtWdfDeviceArmWakeFromS0(
  [in] WDFDEVICE Device
)
{...}

매개 변수

[in] Device

프레임워크 디바이스 개체에 대한 핸들입니다.

반환 값

작업이 성공하면 EvtDeviceArmWakeFromS0 콜백 함수는 STATUS_SUCCESS 또는 NT_SUCCESS(상태)가 TRUE인 다른 상태 값을 반환해야 합니다. 그렇지 않으면 NT_SUCCESS(상태)가 FALSE와 같은 상태 값을 반환해야 합니다.

NT_SUCCESS(상태)가 FALSE인 경우 프레임워크는 드라이버의 EvtDeviceDisarmWakeFromS0 콜백 함수를 호출하지 않습니다. (프레임워크는 PnP 관리자에게 디바이스 오류를 보고하지 않습니다.)

설명

EvtDeviceArmWakeFromS0 콜백 함수를 등록하려면 드라이버가 WdfDeviceInitSetPowerPolicyEventCallbacks를 호출해야 합니다. 또한 드라이버는 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 구조의 IdleCaps 멤버에서 IdleCanWakeFromS0을 설정해야 합니다.

EvtDeviceArmWakeFromS0 콜백 함수는 디바이스가 버스에서 절전 모드 해제 신호를 트리거하는 외부 이벤트를 검색할 수 있도록 하는 데 필요한 디바이스별 작업을 처리합니다. 버스 드라이버의 EvtDeviceEnableWakeAtBus 콜백 함수는 PCI 버스의 PME(전원 관리 이벤트) 신호 사용과 같은 버스 관련 작업을 처리합니다.

드라이버가 EvtDeviceArmWakeFromS0 콜백 함수를 등록한 경우 프레임워크는 디바이스가 D0 디바이스 전원 상태에 있는 동안, 버스 드라이버가 디바이스의 전원 상태를 낮추지만 프레임워크가 드라이버를 대신하여 대기/절전 모드 해제 IRP 를 보낸 후에 호출합니다.

프로세스는 다음 순서로 발생합니다.

  1. 프레임워크는 디바이스가 미리 설정된 시간 동안 유휴 상태임을 확인합니다.
  2. 프레임워크는 드라이버의 EvtDeviceArmWakeFromS0 콜백 함수를 호출합니다.
  3. 프레임워크는 디바이스의 버스에 대한 드라이버를 요청하여 디바이스의 전원을 낮춥니다.
디바이스가 저전력 상태가 되기 직전에 프레임워크는 드라이버의 EvtDeviceD0Exit 콜백 함수를 호출합니다.

프레임워크가 이 콜백 함수를 호출하는 시기에 대한 자세한 내용은 PnP 및 전원 관리 시나리오를 참조하세요.

디바이스의 경우 EvtDeviceArmWakeFromS0 콜백 함수를 제공할 필요가 없습니다.

  • "선택적 일시 중단"을 지원하는 USB 디바이스입니다.
  • 시스템이 완전히 전원이 공급되는 동안에는 전원을 공급할 수 없습니다.
  • 디바이스가 절전 모드 해제 신호를 트리거할 수 있도록 하는 특수 하드웨어 작업이 필요하지 않습니다.
디바이스가 USB "선택적 일시 중단"을 지원하고 드라이버가 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 구조의 IdleCaps 멤버에서 IdleUsbSelectiveSuspend를 설정하는 경우 프레임워크는 디바이스가 미리 설정된 시간 동안 유휴 상태일 때 USB 버스 드라이버에 "선택적 일시 중단" 요청을 보냅니다.

이 콜백 함수에 대한 자세한 내용은 유휴 Power-Down 지원을 참조하세요.

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.0
최소 UMDF 버전 2.0
머리글 wdfdevice.h(Wdf.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

EvtDeviceArmWakeFromSx

EvtDeviceDisarmWakeFromS0