立即閒置逾時加入宣告
本主題討論當不再需要電源時,Windows 驅動程式可用來選擇立即關閉電源狀態的 ImmediateIdle 登錄值。
除了PortCls 登錄電源設定中所討論的預設電源設定之外,Windows 8引進了也位於相關聯驅動程式之 PowerSettings 登錄機碼中的ImmediateIdle登錄值。
此 inf 檔案示範如何設定 ImmediateIdle。
[MyAudioDevice.AddReg]
HKR,PowerSettings,ImmediateIdle,%REG_BINARY%, 0x00, 0x00, 0x00, 0x00
ImmediateIdle 的資料類型為 REG_DWORD,其預設值為 「0」,相當於 FALSE。 在上述語法片段中,「0」 的十六進位值表示當不再需要電源時,裝置不會立即關閉電源。
若要讓驅動程式加入宣告立即關閉電源狀態,當不再需要電源時,您必須使用下列語法:
[MyAudioDevice.AddReg]
HKR,PowerSettings,ImmediateIdle,%REG_BINARY%, 0x01, 0x00, 0x00, 0x00
在上述範例中,「1」 的十六進位值等於 TRUE,這表示當不再需要電源時,裝置會立即關閉電源。
當執行時間電源管理架構叫用 DevicePowerRequired 方法的回呼時,表示裝置不再需要電源,PortCls 接著會針對 IdlePowerState 登錄值所指示的 D-State 要求裝置 Power IRP。 如果未提供任何狀態,則會使用預設值 D3。
如果驅動程式選擇立即閒置電源管理,它必須確保系統的 Power Engine 外掛程式 (PEP) 包含防止不必要且持續為接續接收之 IRP 啟動和關閉介面卡所需的邏輯。 應套用某些落地規則,以便讓裝置針對 I/O 要求的批次提供電源。
此外,Windows 7 中引進的介面可讓驅動程式以程式設計方式啟用或停用閒置電源管理,當驅動程式未選擇立即閒置電源管理時,仍會繼續接受。 這是透過 IPortClsPower::SetIdlePowerManagement 方法完成,而且會覆寫登錄中的設定,但 ImmediateIdle 設定為 1 (TRUE) 除外。