判斷正確的裝置電源狀態
電源原則擁有者會檢查DEVICE_CAPABILITIES結構中的DeviceState陣列,以判斷每個系統電源狀態的有效裝置電源狀態範圍。 陣列會列出基礎裝置可支援每個系統電源狀態的最高裝置電源狀態。
從此範圍選取特定狀態時,請考慮下列事項:
當系統進入 S0 狀態時,大部分裝置都會進入 D0 狀態。
當系統進入任何睡眠狀態時,大部分裝置都會進入 D3 狀態。 不過,如果支援這類狀態,則啟用喚醒的裝置可能需要改為輸入 D1 或 D2。 如需詳細資訊,請參閱 報告裝置電源功能。
特殊規則適用于將保存休眠檔案的裝置。 如果系統 IRP 要求 PowerSystemHibernate,將保存休眠檔案的裝置不得關閉電源。 這類裝置的電源原則擁有者應該要求裝置電源狀態 D3 並儲存內容,但裝置的驅動程式不得關閉裝置電源。
如果系統 IRP 要求 PowerSystemShutdown,驅動程式應該檢查 Irp-Parameters.Power.ShutdownType > 上的POWER_ACTION值,以判斷狀態變更的原因。 如需詳細資訊,請參閱 系統電源動作。
裝置電源原則擁有者必須為每個系統設定電源 IRP 傳送裝置集電源 IRP,即使裝置已處於正確的裝置電源狀態也一樣。 如果驅動程式先前暫停裝置作業以回應查詢電源 IRP,則 set-power IRP 會通知它停止佇列 IRP,並返回其目前電源狀態的正常作業。 只有在裝置處於 D3 狀態時,才會發生例外狀況;在此情況下,驅動程式不需要傳送額外的 D3 IRP_MN_SET_POWER 要求。