次の方法で共有


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

電源状態が設定されるデバイスを識別する正の整数。 DeviceUidDISPLAY_ADAPTER_HW_ID (Video.h で定義) と等しい場合、デバイスはディスプレイ アダプター自体になります。 それ以外の場合、DeviceUid は、ディスプレイ アダプターの子デバイスの識別子です。 子デバイス識別子は、DxgkDdiQueryChildRelations 関数によって以前に割り当てられました。

[in] DevicePowerState

デバイスを設定する必要がある電源状態 (PowerDeviceD0PowerDeviceD1PowerDeviceD2PowerDeviceD3) を提供する DEVICE_POWER_STATE 列挙値。

[in] ActionType

電源状態の変化の理由 (PowerActionSleepPowerActionHibernatePowerActionShutdown) を提供する POWER_ACTION 列挙値。

戻り値

DxgkDdiSetPowerState 、成功した場合は STATUS_SUCCESS を返します。 DxgkDdiSetPowerState は失敗しません。ただし、Ntstatus.h で定義され、NT_SUCCESS(Status) マクロを渡す NTSTATUS 型の値を返すことができます。

備考

要求された状態が PowerDeviceD1 PowerDeviceD2、または PowerDeviceD3と等しい場合は、後でデバイスを 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

関連項目

DxgkCbAcquirePostDisplayOwnership する

DxgkDdiAddDevice

DxgkDdiQueryChildRelations