SET_D3COLD_SUPPORT コールバック関数 (wdm.h)
SetD3ColdSupport コールバック ルーチンは、D3cold デバイスの電源状態への遷移を有効または無効にします。
SET_D3COLD_SUPPORT SetD3coldSupport;
void SetD3coldSupport(
[in, optional] PVOID Context,
[in] BOOLEAN D3ColdSupport
)
{...}
[in, optional] Context
インターフェイス固有のコンテキスト情報へのポインター。 呼び出し元は、このパラメーターをインターフェイスの D3COLD_SUPPORT_INTERFACE 構造体の Context メンバーの値に設定します。
[in] D3ColdSupport
D3hot から D3cold への移行を許可するかどうか。 これらの遷移を有効にするには、TRUE を に設定します。 それ以外の場合は、FALSE に設定します。 詳細については、「解説」を参照してください。
何一つ
デバイスの電源ポリシー所有者 (PPO) であるドライバーは、このルーチンを呼び出して、コンピューターが S0 (動作中) システムの電源状態にあり、S0 を終了する準備をしていない場合に発生する可能性がある D3cold サブ状態への遷移を有効または無効にすることができます。
デバイスが入力した低電力 Dx 状態からウェイク イベントを通知できる必要がある場合、デバイスがこのサブ状態からウェイク イベントを通知できない限り、このデバイスのドライバーは D3cold サブステートへの遷移を有効にしないでください。 それ以外の場合、D3cold に入ると、コンピューターが再起動するかスリープ状態から復帰するまで、デバイスは使用できなくなります。
デバイスのドライバーは、GetIdleWakeInfo ルーチンを呼び出して、デバイスが D3cold からウェイク イベントを通知できるかどうかを判断できます。
必要に応じて、デバイスのドライバーは一連の SetD3ColdSupport 呼び出しを行って、動的に変化する条件に応じて D3cold 遷移を代わりに有効または無効にすることができます。
たとえば、グラフィックス デバイスには、D3cold から D0 への移行後に復元する大きなハードウェア コンテキストがある場合があります。 このコンテキストの復元に必要な時間は、ユーザーが現在実行している一連のタスクによって許容される場合とできない場合があります。 さらに、復元時間は、このタスクの組み合わせによって異なる場合があります。 ドライバーは、タスク ミックスの変更に応じて D3cold への切り替えを動的に有効または無効にする必要がある場合があります。
デバイスは、D3hot サブステートからのみ D3cold サブステートに入ることができます。 ドライバーが SetD3ColdSupport 呼び出して D3hot から D3cold への切り替えを有効にした場合、デバイスは D3hot に入った後に D3cold を入力する場合と入力しない場合があります。 ウェイク イベントに応答して、デバイスは D3cold を通過することなく D3hot から直接 D0 に入る可能性があります。
デバイスが D3hot から D3cold に移行すると、他のいくつかのデバイスと共有する電源がオフになっている可能性があります。 これらのデバイスが D3cold に入ってからしばらくすると、いずれかのデバイスのドライバーが D0 への移行を要求する場合があります。 この要求に応じて、親バス ドライバーまたは ACPI フィルター ドライバーが電源をオンにし、電源を共有するすべてのデバイスが既定の電源オン状態になります。
この電源状態の変更を想定している唯一のデバイス ドライバーは、変更を要求したドライバーです。 他のデバイスのドライバーは、D0 で動作するようにデバイスを適切に初期化できるように、この変更の通知を受け取る必要があります。 この通知を受け取ることができるドライバーのみが、デバイスで D3cold を入力できるようにする必要があります。 それ以外の場合、ドライバーは、デバイスが D0 に入ったときに認識されません。
Windows 8 以降、WDM ドライバーは、デバイスを電源フレームワーク (PoFx) に登録し、デバイスが D0 に入ったときに、DevicePowerRequiredCallback ルーチンによって通知を受け取ることができます。 同様に、KMDF ドライバーは、そのデバイスを PoFx に登録し、EvtDeviceD0Entry イベント コールバックによって通知を受け取ることができます。
デバイスを PoFx に登録していないドライバーは、デバイスがスリープ解除のために武装している場合でも、D0 への移行を通知できます。 バス ドライバーは、デバイスの電源をオンにすると、ドライバーの IRP_MN_WAIT_WAKE 要求を完了します。 これに対して、ドライバーは D0 で動作するようにデバイスを初期化します。
複数のデバイスで共有されている電源がオンになった後、ドライバーが D0 への移行を要求したデバイスが、これらのデバイスのうち、実行する必要がある唯一のデバイスである可能性があります。 他のデバイスはアイドル状態である可能性が高く、その場合、ドライバーはしばらくすると、これらのデバイスを D3hot に移動します。
ドライバーが SetD3ColdSupport 呼び出して D3cold への切り替えを無効にした場合、D0 はデバイスが D3hot から入力できる唯一のデバイス電源状態です。
ドライバーが SetD3ColdSupport 呼び出して D3cold への切り替えを有効にすると、他の理由でこれらの遷移が無効になる可能性があります。 ドライバーは、GetD3ColdCapability ルーチンを呼び出して、デバイスが D3cold サブ状態に入ることができるかどうかを判断できます。 ただし、ドライバーにはこの情報が必要ない場合があります。 デバイスが D3cold を入力できない場合、SetD3ColdSupport 呼び出 効果はありませんが、無害です。
SetD3ColdSupport ルーチンは、コンピューターが S0 状態のときに発生する可能性がある D3hot-to-D3cold 遷移にのみ影響します (終了の準備はしていません)。 このルーチンは、コンピューターが S0 を終了し、低電力システムの状態に入る準備をしている場合には影響しません。 D3hot サブステート内のデバイスは、コンピューターがシステムの低電力状態になる直前に、常に D3cold サブステートに入ることがあります。
既定では、SetD3ColdSupport ルーチンへの最初の呼び出しの前に、D3hot から D3cold への遷移は無効になります。 この既定値を変更して、最初の SetD3ColdSupport 呼び出しの前に D3hot から D3cold への切り替えを有効にするには、デバイスのドライバー パッケージは、ドライバーをインストールする INF ファイルの DDInstall.HW セクションに次の 2 行を含めることができます。
Include = machine.inf
Needs = PciD3ColdSupported
Windows 8 は、コンピューターが S0 状態の間に D3cold サブステートに出入りできるデバイスをサポートする Windows の最初のバージョンです。 詳細については、「デバイス Low-Power 状態の をする」を参照してください。
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 8 以降で使用できます。 |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | wdm.h (Wdm.h を含む) |
IRQL | PASSIVE_LEVEL |
DevicePowerRequiredCallback の
EvtDeviceD0Entry の
GetD3ColdCapability の