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 值。 此登錄值指出裝置是否能夠在閑置時關閉電源(選擇性暫停)。
HKR,,DeviceIdleEnabled,0x00010001,1 |
DeviceIdleIgnoreWakeEnable | 當設定為非零值時,即使裝置不支援 RemoteWake,也會暫停裝置。 |
UserSetDeviceIdleEnabled | 此值為 DWORD 值。 此登錄值指出是否應該在 [裝置 內容 ] 頁面中啟用複選框,讓使用者覆寫閑置的預設值。 當使用者 SetDeviceIdleEnabled 設定為非零值時,就會啟用複選框,而且用戶可以在閑置時停用關閉裝置電源。 值為零,或沒有此值表示未啟用複選框。
如果未設定 DeviceIdleEnabled,則會忽略 UserSetDeviceIdleEnabled。 HKR,,UserSetDeviceIdleEnabled,0x00010001,1 |
DefaultIdleState | 這是 DWORD 值。 此登錄值會設定AUTO_SUSPEND電源原則設定的預設值。 當裝置未開啟句柄時,此登錄機碼可用來啟用或停用選擇性暫停。
如果未 設定 DeviceIdleEnabled ,則會忽略此值。 HKR,,DefaultIdleState,0x00010001,1 |
DefaultIdleTimeout | 這是 DWORD 值。 此登錄值會設定SUSPEND_DELAY電源原則設定的默認狀態。 值表示判斷裝置閑置前所要等候的時間以毫秒為單位。 HKR,,DefaultIdleTimeout,0x00010001,100 |
偵測閑置
所有寫入和控制傳輸都會強制裝置進入 D0 電源狀態,並重設閑置定時器。 IN 端點佇列沒有電源管理。 讀取要求會在提交裝置時喚醒裝置。 不過,讀取要求等候時,裝置可能會變成閑置狀態。