共用方式為


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