WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS 구조체(wdfdevice.h)

[KMDF 및 UMDF에 적용]

WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS 구조에는 디바이스의 절전 모드 해제 기능과 시스템(둘 다 저전력 상태인 경우)에 대한 드라이버 제공 정보가 포함되어 있습니다.

구문

typedef struct _WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS {
  ULONG                                 Size;
  DEVICE_POWER_STATE                    DxState;
  WDF_POWER_POLICY_SX_WAKE_USER_CONTROL UserControlOfWakeSettings;
  WDF_TRI_STATE                         Enabled;
  BOOLEAN                               ArmForWakeIfChildrenAreArmedForWake;
  BOOLEAN                               IndicateChildWakeOnParentWake;
} WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS, *PWDF_DEVICE_POWER_POLICY_WAKE_SETTINGS;

멤버

Size

이 구조체의 크기(바이트)입니다.

DxState

시스템 전원 상태가 절전 모드 해제 가능한 저전력 상태로 떨어질 때 디바이스가 입력할 낮은 디바이스 전원 상태를 식별하는 DEVICE_POWER_STATE 형식의 열거자입니다. DxState 값은 PowerDeviceD0일 수 없습니다. DEVICE_POWER_STATE 값은 wdm.h에 정의됩니다.

UserControlOfWakeSettings

사용자가 디바이스의 절식 설정을 수정할 수 있는지 여부를 나타내는 WDF_POWER_POLICY_SX_WAKE_USER_CONTROL 형식의 열거자입니다.

Enabled

시스템이 저전력 상태일 때 디바이스가 시스템 절전 모드를 해제할 수 있는지(즉, 시스템을 S0으로 복원)할 수 있는지 여부를 나타내는 WDF_TRI_STATE 형식의 열거자입니다. 이 멤버는 다음 값 중 하나를 가질 수 있습니다.

WdfTrue - 시스템 절전 모드 해제가 사용하도록 설정됩니다.

WdfFalse - 시스템을 해제할 수 없습니다.

WdfUseDefault - 시스템 절전 모드 해제는 기본적으로 기본적으로 사용하도록 설정됩니다. 하지만 UserControlOfWakeSettings 멤버가 WakeAllowUserControl로 설정된 경우 사용자의 설정 또는 드라이버의 INF 파일이 초기 값을 재정의합니다.

시스템을 절전 모드에서 해제하고 시스템이 저전력 상태로 진입하려고 하는 경우 프레임워크는 디바이스가 저전력 상태가 되기 전에 드라이버의 EvtDeviceArmWakeFromSx 또는 EvtDeviceArmWakeFromSxWithReason 콜백 함수를 호출합니다.

ArmForWakeIfChildrenAreArmedForWake

TRUE로 설정된 경우 디바이스의 자식 디바이스에 대해 이 기능을 사용하도록 설정하면 부모 디바이스가 자체 절전 모드를 해제하고 시스템을 사용하도록 설정해야 했음을 나타내는 부울 값입니다. 자세한 내용은 아래 설명 부분을 참조하십시오. 이 멤버는 KMDF 버전 1.7 이상에서 사용할 수 있습니다.

IndicateChildWakeOnParentWake

TRUE로 설정된 경우 부모 디바이스가 절삭 해제 신호를 감지하는 경우 프레임워크가 자식 디바이스에 절삭 해제 상태 제공됨을 나타내는 부울 값입니다. 자세한 내용은 아래 설명 부분을 참조하십시오. 이 멤버는 KMDF 버전 1.7 이상에서 사용할 수 있습니다.

설명

WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS 구조체는 WdfDeviceAssignSxWakeSettings에 대한 입력으로 사용됩니다.

WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS 구조를 초기화하려면 드라이버가 WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS_INIT 호출해야 합니다.

드라이버가 WdfDeviceAssignSxWakeSettings를 처음 호출할 때 다음 작업이 발생합니다.

  • 프레임워크는 모든 WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS 구조체 멤버의 값을 저장합니다.
  • UserControlOfWakeSettings 멤버가 WakeAllowUserControl로 설정되어 있고 Enabled 멤버가 WdfUseDefault로 설정된 경우 프레임워크는 레지스트리를 읽어 사용자가 시스템 절전 모드 해제를 사용하도록 설정했는지 확인합니다.
WdfDeviceAssignSxWakeSettings에 대한 후속 호출 중에 프레임워크는 UserControlOfWakeSettings 멤버의 값을 저장하지 않습니다. 즉, 프레임워크는 드라이버가 WdfDeviceAssignSxWakeSettings 를 처음 호출할 때 다음 단계를 수행하지만 이후 호출 중에는 수행하지 않습니다.
  • UserControlOfWakeSettings 멤버의 값을 저장합니다.
  • Enabled 멤버의 값이 WdfUseDefault인 경우 레지스트리에서 사용자 설정을 찾습니다.
다음 규칙은 DxState 멤버에 대해 지정한 값에 적용됩니다.
  • 값은 PowerDeviceD0일 수 없습니다.
  • PowerDeviceMaximum을 지정하는 경우 프레임워크는 해당 WDF_DEVICE_POWER_CAPABILITIES 구조의 DeviceWake 멤버에 제공된 디바이스 버스의 드라이버 값을 사용합니다.
  • 버스 드라이버의 WDF_DEVICE_POWER_CAPABILITIES 구조의 DeviceWake 멤버에서 디바이스 전원 상태보다 낮은 디바이스 전원 상태를 지정할 수 없습니다. 즉, 버스 드라이버의 DeviceWake 값이 PowerDeviceD2인 경우 함수 드라이버의 DxState 값은 PowerDeviceD3일 수 없습니다.
디바이스의 절전 모드 해제 기능을 제어하는 레지스트리 항목에 대한 자세한 내용은 디바이스 유휴 및 절전 모드 해제 동작의 사용자 제어를 참조하세요.

WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS 구조에서 설명하는 디바이스가 부모 디바이스인 경우 부모 디바이스의 드라이버는 다음과 같이 ArmForWakeIfChildrenAreArmedForWakeIndicateChildWakeOnParentWake 멤버를 사용할 수 있습니다.

  • 드라이버가 ArmForWakeIfChildrenAreArmedForWake 멤버를 TRUE로 설정하면 부모 디바이스의 절전 모드 해제 기능이 활성화되지 않은 경우에도 프레임워크는 드라이버의 EvtDeviceArmWakeFromSx 또는 EvtDeviceArmWakeFromSxWithReason 콜백 함수를 호출합니다.

    절전 모드 해제 기능을 지원하는 자식 디바이스가 연결되어 있지 않으면 전력 소비를 줄이기 위해 디바이스의 절전 모드 해제 기능을 사용하도록 설정하지 않을 수 있습니다. 드라이버가 ArmForWakeIfChildrenAreArmedForWake 멤버를 TRUE로 설정하는 경우 Enabled 멤버의 값은 다음과 같은 의미를 갖습니다.

    • EnabledWdfFalse인 경우 프레임워크는 자식 디바이스의 절전 모드 해제 기능을 사용하는 경우에만 드라이버의 절전 모드 해제 기능을 사용하도록 설정합니다.
    • EnabledWdfTrue인 경우 프레임워크는 디바이스에 절전 모드 해제 사용 자식 디바이스가 있는지 여부에 관계없이 항상 드라이버의 절전 모드 해제 기능을 사용하도록 설정합니다.
    • EnabledWdfUseDefault이고 UserControlOfWakeSettingsWakeAllowUserControl인 경우 사용자는 디바이스가 항상 절전 모드 해제 사용인지 또는 절전 모드 해제가 활성화된 자식 디바이스가 있는 경우에만 절전 모드 해제를 사용할 수 있는지 여부를 제어할 수 있습니다.
  • 드라이버가 IndicateChildWakeOnParentWake 멤버를 TRUE로 설정하면 프레임워크는 부모 디바이스의 드라이버 및 각 절전 모드 해제 사용 자식 디바이스에 대한 드라이버에서 EvtDeviceWakeFromSxTriggered 콜백 함수를 호출합니다. 드라이버가 이 멤버를 FALSE로 설정하면 프레임워크는 부모 디바이스의 드라이버에서만 EvtDeviceWakeFromSxTriggered 콜백 함수를 호출합니다. 디바이스의 자식 드라이버가 하드웨어를 검사하여 시스템이 절전된 이유를 확인해야 하는 경우 드라이버는 IndicateChildWakeOnParentWakeTRUE 로 설정해야 합니다.
디바이스의 절전 모드 해제 기능을 지원하는 방법에 대한 자세한 내용은 지원 시스템 절전 모드 해제를 참조하세요.

요구 사항

요구 사항
최소 KMDF 버전 1.0
최소 UMDF 버전 2.0
머리글 wdfdevice.h(Wdf.h 포함)

추가 정보

EvtDeviceArmWakeFromSx

EvtDeviceArmWakeFromSxWithReason

EvtDeviceWakeFromSxTriggered

WDF_DEVICE_POWER_CAPABILITIES

WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS_INIT

WDF_POWER_POLICY_SX_WAKE_USER_CONTROL

WdfDeviceAssignSxWakeSettings

WdfDeviceIndicateWakeStatus