共用方式為


WDF_POWER_POLICY_S0_IDLE_CAPABILITIES列舉 (wdfdevice.h)

[適用於 KMDF 和 UMDF]

WDF_POWER_POLICY_S0_IDLE_CAPABILITIES 列舉會識別裝置在閒轉時進入低功率狀態時可支援的功能。

語法

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