判斷裝置是否可以喚醒系統
某些裝置,例如鍵盤、數據機和網路卡,可以在裝置睡眠狀態時回應外部訊號。 作為電源管理技術的一部分,作業系統提供一種方式讓這類裝置喚醒睡眠系統,然後可以還原其先前的內容。 軟體喚醒機制可讓系統從 S5 (PowerSystemShutdown) 以外的任何狀態喚醒,視系統和裝置硬體和 BIOS 的支援而定。 狀態為 S5 的系統必須一律重新開機。
雖然作業系統的設計目的是要從任何中繼睡眠狀態喚醒,但確切喚醒功能會從電腦到電腦和裝置到裝置而有所不同。 並非所有電腦都支援所有系統睡眠狀態;因此,從某些狀態喚醒的能力在某些電腦上沒有意義。
同樣地,大部分的裝置都不支援所有裝置電源狀態, (D0 到 D3) 也不支援所有裝置電源狀態的喚醒。
裝置可以輸入的睡眠狀態,以及其支援喚醒的狀態,會在匯流排驅動程式列舉時加以描述,並儲存在 DEVICE_CAPABILITIES 結構中。 下表列出與等候/喚醒支援相關的此結構成員。
member | 描述 |
---|---|
如果裝置支援 PowerDeviceD1 狀態,則為 True。 |
|
如果裝置支援 PowerDeviceD2 狀態,則為 True。 |
|
如果裝置可以從 PowerDeviceD0 喚醒,則為 True。 |
|
如果裝置可以從 PowerDeviceD1 喚醒,則為 True。 |
|
如果裝置可以從 PowerDeviceD2 喚醒,則為 True。 |
|
如果裝置可以從 PowerDeviceD3 喚醒,則為 True。 |
|
DeviceState [PowerSystemMaximum] |
指定此裝置可支援每個系統電源狀態的最高裝置電源狀態,從 PowerSystemUnspecified 到 PowerSystemShutdown。 |
指定要從中喚醒系統的最低系統電源狀態 (S0 到 S4) 。 |
|
指定裝置可從中喚醒的最低裝置電源狀態 (D0 到 D3) 。 |
DeviceWake專案會列出裝置可以回應喚醒訊號的最低裝置電源狀態。 PowerDeviceUnspecified 值表示裝置無法喚醒系統。 SystemWake專案會列出系統可從中喚醒的最低系統電源狀態。 這些值是以父 devnode 的功能為基礎,驅動程式不應該變更它們。 如需詳細資訊,請參閱 報告裝置電源功能。
一般而言,如果下列條件成立,裝置可以喚醒系統:
裝置處於等於或大於 DeviceWake 值的電源狀態。
系統處於等於或大於 SystemWake 值的電源狀態。