DXGKDDI_SET_POWER_STATE回呼函式 (dispmprt.h)
DxgkDdiSetPowerState 函式會設定顯示適配卡的電源狀態或顯示適配卡的子裝置。
語法
DXGKDDI_SET_POWER_STATE DxgkddiSetPowerState;
NTSTATUS DxgkddiSetPowerState(
[in] IN_CONST_PVOID MiniportDeviceContext,
[in] IN_ULONG DeviceUid,
[in] IN_DEVICE_POWER_STATE DevicePowerState,
[in] IN_POWER_ACTION ActionType
)
{...}
參數
[in] MiniportDeviceContext
與顯示配接器相關聯的內容區塊句柄。 顯示迷你埠驅動程式的 DxgkDdiAddDevice 函式先前已將此句柄提供給 DirectX 圖形核心子系統。
[in] DeviceUid
正整數,識別要設定電源狀態的裝置。 如果 DeviceUid 等於 video.h) 中定義的DISPLAY_ADAPTER_HW_ID (,則裝置是顯示適配卡本身。 否則, DeviceUid 是顯示適配卡的子裝置標識碼。 先前由 DxgkDdiQueryChildRelations 函式指派子裝置標識碼。
[in] DevicePowerState
提供電源狀態 (PowerDeviceD0、PowerDeviceD1、PowerDeviceD2、PowerDeviceD3) 的DEVICE_POWER_STATE列舉值。
[in] ActionType
POWER_ACTION列舉值,提供電源狀態變更 (PowerActionSleep、PowerActionHibernate、PowerActionShutdown) 的原因。
傳回值
DxgkDdiSetPowerState 如果成功 ,則會 傳回STATUS_SUCCESS。 DxgkDdiSetPowerState 絕不會失敗;不過,它可以傳回 Ntstatus.h 中定義且傳遞 NT_SUCCESS (Status) 宏的任何 NTSTATUS 類型值。
備註
如果要求的狀態等於 PowerDeviceD1、PowerDeviceD2 或 PowerDeviceD3,DxgkDdiSetPowerState 會儲存稍後將裝置帶回 PowerDeviceD0 所需的任何內容,然後將裝置置於要求的狀態。 如果要求的狀態為 PowerDeviceD0 (完全位於 ) ,DxgkDdiSetPowerState 會還原裝置內容,並將裝置放在 PowerDeviceD0中。
如果使用要求呼叫 DxgkDdiSetPowerState ,以將已啟用 VGA 的顯示器適配卡放入休眠狀態,它不應該將顯示器適配卡關閉電源。 相反地,它應該儲存內容,並讓總線驅動程式關閉顯示適配卡的電源。 如此一來,電源管理員就可以在顯示迷你埠驅動程式收到電源狀態變更的通知之後,顯示休眠進度。
例如,操作系統可能會在不再 (連線的顯示器適配卡子裝置上呼叫 DxgkDdiSetPowerState ,例如,最近解除叢集) 的監視器。 發生此異常的原因是操作系統呼叫驅動程式 的 DxgkDdiSetPowerState 和作業系統處理中斷連線的時間之間存在固有的延遲。 驅動程式必須處理這類情況,而不會失敗。
如果 DevicePowerState 等於 PowerDeviceD0,請勿依賴 ActionType 的值。
從 Windows 顯示驅動程式模型 (WDDM) 1.2 開始,如果 DevicePowerState 參數設定為 PowerDeviceD0,則顯示迷你埠驅動程式應該呼叫 DxgkCbAcquirePostDisplayOwnership 以查詢顯示模式的相關信息。 此顯示模式可能先前由韌體和系統載入器設定。 如果 DxgkCbAcquirePostDisplayOwnership 傳回 STATUS_SUCCESS,驅動程式應該判斷是否必須根據透過 DisplayInfo 參數傳回的顯示模式資訊重新初始化顯示。 否則,驅動程式不應該假設裝置上目前已啟用任何特定的顯示模式,而且應該初始化顯示器。
DxgkDdiSetPowerState 函式應該可分頁。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows Vista 開始提供。 |
目標平台 | 桌面 |
標頭 | dispmprt.h |
IRQL | PASSIVE_LEVEL |