WDF_POWER_POLICY_S0_IDLE_CAPABILITIES 열거형(wdfdevice.h)

[KMDF 및 UMDF에 적용]

WDF_POWER_POLICY_S0_IDLE_CAPABILITIES 열거형은 디바이스가 유휴 상태일 때 저전력 상태로 진입할 때 지원할 수 있는 기능을 식별합니다.

Syntax

typedef enum _WDF_POWER_POLICY_S0_IDLE_CAPABILITIES {
  IdleCapsInvalid = 0,
  IdleCannotWakeFromS0,
  IdleCanWakeFromS0,
  IdleUsbSelectiveSuspend
} WDF_POWER_POLICY_S0_IDLE_CAPABILITIES;

상수

 
IdleCapsInvalid
값: 0
내부 전용입니다.
IdleCannotWakeFromS0
시스템이 S0(작동 중) 상태인 동안 디바이스는 저전력 상태에서 절전 모드를 해제할 수 없습니다.
IdleCanWakeFromS0
시스템이 S0(작동 중) 상태인 동안 디바이스는 저전력 상태에서 절전 모드를 해제할 수 있습니다.
IdleUsbSelectiveSuspend
디바이스가 USB 버스에 연결되어 있고 USB 선택적 일시 중단을 지원합니다. 컴퓨터가 작동 상태인 동안 USB 연결 디바이스가 유휴 상태와 절전 모드 해제를 모두 지원하는 경우 이 값을 사용합니다. USB 디바이스가 유휴 상태만 지원하는 경우 IdleCannotWakeFromS0을 사용합니다. (USB 디바이스용 드라이버는 IdleCanWakeFromS0을 지정해서는 안 됩니다.) 다음 예제 섹션에서 코드 예제를 참조하세요.

Windows XP의 경우 프레임워크는 디바이스의 USB_CONFIGURATION_DESCRIPTOR 구조에서 디바이스가 원격 절전 모드 해제를 지원하는 것으로 표시되는 경우에만 USB 선택적 일시 중단을 지원합니다. Windows Vista 이상 버전의 Windows의 경우 프레임워크는 디바이스가 원격 절전 모드 해제를 지원하는지 여부에 관계없이 USB 선택적 일시 중단을 지원합니다.

설명

WDF_POWER_POLICY_S0_IDLE_CAPABILITIES 열거형은 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 구조체에서 사용됩니다.

예제

다음 코드 예제에서는 USB 디바이스에 대해 유휴 지원을 사용하도록 설정하는 방법을 보여 줍니다. 각각의 경우 STATUS_POWER_STATE_INVALID 반환 값은 버스 드라이버가 디바이스가 자체 절전 모드를 해제할 수 없다고 보고했음을 의미합니다.

KMDF 예제

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT(&idleSettings,
                                           IdleUsbSelectSuspend);
status = WdfDeviceAssignS0IdleSettings(device,
                                       &idleSettings);
if (status == STATUS_POWER_STATE_INVALID){
    //
    // The device probably does not support wake. 
    // It might support idle without wake.
    //
    idleSettings.IdleCaps = IdleCannotWakeFromS0;
    status = WdfDeviceAssignS0IdleSettings(device,
                                           &IdleSettings);
    if (!NT_SUCCESS(status) {...}
 }
else {...}

UMDF 예제

hr = pIWDFDevice2->AssignS0IdleSettings(IdleUsbSelectSuspend,
                                        PowerDeviceD3,
                                        IDLEWAKE_TIMEOUT_MSEC,
                                        IdleAllowUserControl,
                                        WdfTrue);
if (hr == HRESULT_FROM_NT(STATUS_POWER_STATE_INVALID)){
    //
    // The device probably does not support wake. 
    // It might support idle without wake.
    //
    hr = pIWDFDevice2->AssignS0IdleSettings(IdleCannotWakeFromS0,
                                         PowerDeviceD3,
                                         IDLEWAKE_TIMEOUT_MSEC,
                                         IdleAllowUserControl,
                                         WdfTrue);
    if (!SUCCEEDED(hr)) {...}
}
else {...}

요구 사항

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

추가 정보

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS