共用方式為


WinUSB 電源管理

WinUSB 會使用 KMDF 狀態機器進行電源管理。 電源原則是透過呼叫 WinUsb_SetPowerPolicy 來管理

若要修改 WinUSB 的電源行為,可以在裝置的 INF 中修改預設登錄設定。 這些值必須藉由在 HW 中 新增值,寫入登錄中的裝置特定位置。INF 的 AddReg 區段。

您可以在裝置的 INF 中指定下列清單中的登錄值,以修改電源行為。

系統喚醒

此功能是由 SystemWakeEnabled DWORD 登錄設定所控制。 這個值表示是否應該允許裝置從低功率狀態喚醒系統。

HKR,,SystemWakeEnabled,0x00010001,1
  • 值為零,或沒有此值表示不允許裝置喚醒系統。
  • 若要允許裝置喚醒系統,請將 SystemWakeEnabled 設定為非零值。 會自動啟用裝置 [屬性 ] 頁面中的複選框,讓使用者可以覆寫設定。

注意

變更 SystemWakeEnabled 設定不會影響選擇性暫停,此登錄值僅與系統暫停有關。

選擇性暫停

選擇性暫停可由數個系統或 WinUSB 設定中的任何一個停用。 單一設定無法強制 WinUSB 啟用選擇性暫停。

WinUsb_SetPowerPolicy PolicyType 參數中指定的下列電源原則設定會影響選擇性暫停的行為:

  • AUTO_SUSPEND 設定為零時,不會將裝置設定為選擇性暫停模式。
  • SUSPEND_DELAY設定裝置閑置的時間,以及 WinUSB 要求裝置進入選擇性暫停的時間。

下表顯示登錄機碼如何影響選擇性暫停功能。

登錄機碼 描述
DeviceIdleEnabled 這是 DWORD 值。 此登錄值指出裝置是否能夠在閑置時關閉電源(選擇性暫停)。
  • 值為零,或沒有此值表示裝置不支援在閑置時關閉電源。
  • 非零值表示裝置支援在閑置時關閉電源。
  • 如果未設定 DeviceIdleEnabled,則會忽略AUTO_SUSPEND電源原則設定的值。

HKR,,DeviceIdleEnabled,0x00010001,1
DeviceIdleIgnoreWakeEnable 當設定為非零值時,即使裝置不支援 RemoteWake,也會暫停裝置。
UserSetDeviceIdleEnabled 此值為 DWORD 值。 此登錄值指出是否應該在 [裝置 內容 ] 頁面中啟用複選框,讓使用者覆寫閑置的預設值。 當使用者 SetDeviceIdleEnabled 設定為非零值時,就會啟用複選框,而且用戶可以在閑置時停用關閉裝置電源。 值為零,或沒有此值表示未啟用複選框。
  • 如果使用者停用裝置省電,則會忽略AUTO_SUSPEND電源原則設定的值。
  • 如果使用者啟用裝置省電,則會使用 AUTO_SUSPEND的值來判斷是否要在閑置時暫停裝置。

如果未設定 DeviceIdleEnabled,則會忽略 UserSetDeviceIdleEnabled

HKR,,UserSetDeviceIdleEnabled,0x00010001,1
DefaultIdleState 這是 DWORD 值。 此登錄值會設定AUTO_SUSPEND電源原則設定的預設值。 當裝置未開啟句柄時,此登錄機碼可用來啟用或停用選擇性暫停。
  • 值為零或缺少此值表示根據預設,裝置不會在閑置時暫停。 只有在啟用AUTO_SUSPEND電源原則時,才允許裝置在閑置時暫停。
  • 非零值表示在閑置時,裝置預設可以暫停。

如果未 設定 DeviceIdleEnabled ,則會忽略此值。

HKR,,DefaultIdleState,0x00010001,1
DefaultIdleTimeout 這是 DWORD 值。 此登錄值會設定SUSPEND_DELAY電源原則設定的默認狀態。

值表示判斷裝置閑置前所要等候的時間以毫秒為單位。

HKR,,DefaultIdleTimeout,0x00010001,100

偵測閑置

所有寫入和控制傳輸都會強制裝置進入 D0 電源狀態,並重設閑置定時器。 IN 端點佇列沒有電源管理。 讀取要求會在提交裝置時喚醒裝置。 不過,讀取要求等候時,裝置可能會變成閑置狀態。