다음을 통해 공유


WdfDeviceGetSystemPowerAction 함수(wdfdevice.h)

[KMDF 및 UMDF에 적용]

WdfDeviceGetSystemPowerAction 메서드는 현재 컴퓨터에 대해 발생하는 시스템 전원 작업반환합니다( 있는 경우).

통사론

POWER_ACTION WdfDeviceGetSystemPowerAction(
  [in] WDFDEVICE Device
);

매개 변수

[in] Device

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

반환 값

WdfDeviceGetSystemPowerAction POWER_ACTION 형식의 열거자 값을 반환합니다. 이 값은 현재 컴퓨터에 대해 발생하는 시스템 전원 작업 나타냅니다. 자세한 내용은 다음 설명 섹션을 참조하세요. POWER_ACTION 열거형은 wdm.h 정의됩니다.

드라이버에서 잘못된 개체 핸들을 제공하면 버그 검사가 수행됩니다.

발언

WDF 버전 1.31/2.31("v31"이라고 함)부터 WdfDeviceGetSystemPowerAction 디바이스가 전원 정책 소유자인 경우 시스템 전원 작업을 보다 정확하게 보고하도록 업데이트되었습니다. 다음과 같은 새 동작을 얻으려면 드라이버를 v31 이상으로 다시 컴파일해야 합니다.

  • 관련 없는 시스템 전원 전환이 진행 중인 동안 디바이스가 S0 유휴 상태(WdfDeviceAssignS0IdleSettings참조)로 인해 D0을 입력하거나 종료하는 경우 WdfDeviceGetSystemPowerActionPowerActionSleep반환할 수 있습니다. 이 문제는 v31에서 수정되었으며 이제 PowerActionNone 반환됩니다.

  • 시스템이 하이브리드 절전 모드(최대 절전 모드에서 절전 모드)에서 해제되면 v31 전에 WdfDeviceGetSystemPowerAction 항상 powerActionHibernate 반환됩니다. 이 문제는 v31에서 수정되었으며 이제 다음을 반환합니다.

    • PowerActionSleep은 전원 손실 없이 절전 모드 해제되는 경우. 즉, 시스템이 S3에 남아 있습니다.
    • PowerActionHibernate 전원 손실 후 절전 모드가 해제되면 시스템이 최대 절전 모드 파일에서 다시 시작됨을 의미합니다.

WdfDeviceGetSystemPowerAction 메서드를 사용하면 드라이버가 디바이스가 유휴 상태(또는 절전 모드 해제)되었기 때문에 디바이스의 전원 전환이 발생하는지 또는 전체 컴퓨터가 저전력 상태로 전환(또는 종료)되어 있는지 여부를 확인할 수 있습니다.

드라이버는 WdfDeviceGetSystemPowerAction 디바이스가 저전력 상태 진입하거나 작업 상태 때 프레임워크가 호출하는 이벤트 콜백 함수에서만 호출해야 합니다.

WdfDeviceGetSystemPowerAction 반환하는 값은 다음과 같은 상황에 따라 달라집니다.

  • 드라이버가 WdfDeviceGetSystemPowerAction 호출할 때 컴퓨터가 저전력 상태로 진입하는 경우 이 메서드는 컴퓨터가 저전력 상태로 진입하는 이유를 반환합니다. 예를 들어 컴퓨터가 S1, S2 또는 S3 저전력 상태를 입력하는 경우 이 메서드는 PowerActionSleep 반환합니다.
  • 드라이버가 WdfDeviceGetSystemPowerAction 호출할 때 컴퓨터가 저전력 상태에서 작동(S0) 상태로 돌아가는 경우 이 메서드는 컴퓨터가 저전력 상태로 진입한 이유를 반환합니다. 예를 들어 컴퓨터가 S1, S2 또는 S3 저전력 상태를 벗어나면 이 메서드는 powerActionSleep 반환합니다.
  • 드라이버가 WdfDeviceGetSystemPowerAction 호출할 때 컴퓨터가 전원을 끄면 powerActionNone 반환됩니다.
  • 드라이버가 WdfDeviceGetSystemPowerAction 호출할 때 디바이스가 저전력 유휴 상태를 입력하거나 작동(D0) 상태로 돌아가는 경우 시스템의 나머지 상태는 작동 중(S0) 상태로 유지되지만 이 메서드는 PowerActionNone반환합니다.
  • 드라이버가 WdfDeviceGetSystemPowerAction 호출할 때 컴퓨터와 디바이스가 모두 작동 상태에 있는 경우 메서드는 powerActionNone 반환합니다.
저전력 상태에 대한 자세한 내용은 디바이스가 Low-Power 상태 입력하는참조하세요.

예제

다음 코드 예제에서는 컴퓨터에 대해 현재 발생 하는 전원 전환 작업을 가져옵니다.

POWER_ACTION SysPowerAction;

SysPowerAction = WdfDeviceGetSystemPowerAction(device);

요구 사항

요구
대상 플랫폼 보편적
최소 KMDF 버전 1.9
최소 UMDF 버전 2.0
헤더 wdfdevice.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF)
IRQL <= DISPATCH_LEVEL
DDI 규정 준수 규칙 DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)