次の方法で共有


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、PowerDeviceD1PowerDeviceD2PowerDeviceD3) を提供するDEVICE_POWER_STATE列挙値

[in] ActionType

電源状態の変更の理由 (PowerActionSleep、PowerActionHibernatePowerActionShutdown) を提供するPOWER_ACTION列挙値。

戻り値

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

注釈

要求された状態が PowerDeviceD1、PowerDeviceD2、または PowerDeviceD3 と等しい場合、DxgkDdiSetPowerState は、デバイスを PowerDeviceD0 に戻すために後で必要になるコンテキストを保存し、要求された状態にデバイスを配置します。 要求された状態が PowerDeviceD0 (完全にオン) の場合、 DxgkDdiSetPowerState はデバイス コンテキストを復元し、デバイスを PowerDeviceD0 に配置します。

VGA 対応ディスプレイ アダプターを休止状態にするための要求で DxgkDdiSetPowerState が呼び出された場合は、ディスプレイ アダプターの電源を切らてはいけません。 代わりに、コンテキストを保存し、バス ドライバーがディスプレイ アダプターの電源を切る必要があります。 このようにして、電源マネージャーは、ディスプレイ ミニポート ドライバーに電源状態の変更について通知された後、休止状態の進行状況を表示できます。

オペレーティング システムは、接続されなくなったディスプレイ アダプターの子デバイス (最近取り外されたモニターなど) で DxgkDdiSetPowerState を呼び出す場合があります。 この異常は、オペレーティング システムがドライバーの DxgkDdiSetPowerState を呼び出してから、オペレーティング システムが切断を処理する時間の間に、固有の待機時間が存在するため発生します。 ドライバーは、失敗することなくこのような状況を処理する必要があります。

DevicePowerStatePowerDeviceD0 と等しい場合は、ActionType の値に依存しないでください。

Windows ディスプレイ ドライバー モデル (WDDM) 1.2 以降では、 DevicePowerState パラメーターが PowerDeviceD0 に設定されている場合、ディスプレイ ミニポート ドライバーは DxgkCbAcquirePostDisplayOwnership を呼び出して、表示モードに関する情報を照会する必要があります。 この表示モードは、ファームウェアおよびシステム・ローダーによって以前に設定されている可能性があります。 DxgkCbAcquirePostDisplayOwnershipSTATUS_SUCCESS で返された場合、ドライバーは DisplayInfo パラメーターで返された表示モード情報に基づいて、ディスプレイを再初期化する必要があるかどうかを判断する必要があります。 それ以外の場合、ドライバーは、特定の表示モードがデバイスで現在有効になっていると想定せず、ディスプレイを初期化する必要があります。

DxgkDdiSetPowerState 関数をページング可能にする必要があります。

要件

要件
サポートされている最小のクライアント Windows Vista 以降で使用できます。
対象プラットフォーム デスクトップ
Header dispmprt.h
IRQL PASSIVE_LEVEL

こちらもご覧ください

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiQueryChildRelations