次の方法で共有


PoFxSetDeviceIdleTimeout 関数 (wdm.h)

PoFxSetDeviceIdleTimeout ルーチンは、デバイスの最後のコンポーネントがアイドル状態に入ったときから、電源管理フレームワーク (PoFx) がドライバーの DevicePowerNotRequiredCallback ルーチンを呼び出すまでの最小時間間隔を指定します。

構文

void PoFxSetDeviceIdleTimeout(
  [in] POHANDLE  Handle,
  [in] ULONGLONG IdleTimeout
);

パラメーター

[in] Handle

PoFx を使用したデバイスの登録を表すハンドル。 デバイス ドライバーは、以前に PoFxRegisterDevice ルーチンからこのハンドルを受信しました。

[in] IdleTimeout

100 ナノ秒単位のアイドル タイムアウト間隔。 詳細については、「解説」を参照してください。

戻り値

なし

解説

このルーチンは、PoFx がドライバーの DevicePowerNotRequiredCallback コールバック ルーチンの今後の呼び出しに適用するタイムアウト間隔を指定します。 既定では、このタイムアウト間隔は 0 です。この場合、デバイスが低電力 Dx 状態に切り替える準備ができたらすぐに、PoFx が DevicePowerNotRequiredCallback ルーチンを呼び出す可能性があります。 ただし、ドライバーは、この切り替えを遅らせ、追加のタイムアウト間隔のためにデバイスを D0 電源状態に保つことを好む場合があります。 この場合、デバイスがタイムアウト間隔の終了前にアクティブになり、したがって D0 状態を維持する必要がある場合、保留中の DevicePowerNotRequiredCallback 呼び出しは不要になり、PoFx によって取り消されます。

たとえば、パフォーマンスを向上させ、摩耗を減らすために、ストレージ デバイス ドライバーは、ドライブが十分に長い時間アイドル状態になるまで、回転ドライブが D3 に入り込んで速度が低下するのを防ぐ必要がある場合があります。 このドライバーの DevicePowerNotRequiredCallback コールバック ルーチンの実装を簡略化するために、 PoFxSetDeviceIdleTimeout ルーチンを使用すると、ドライバーがタイマーを設定しなくても D3 遷移を自動的に遅延できます。

タイムアウト間隔は、デバイスのすべてのコンポーネントがアイドル状態への切り替えを完了したときに開始されます。 通常、PoFx はタイムアウト間隔の終了まで待機して 、DevicePowerNotRequiredCallback ルーチンを呼び出します。 ただし、PoFx が低電力システム状態に入る準備をしている場合、PoFx はタイムアウト間隔を早く終了する可能性があります。 いずれの場合も、PoFx がドライバーの DevicePowerNotRequiredCallback ルーチンを呼び出すと、ドライバーはそれ以上の遅延なく低電力 Dx 状態に切り替える必要があります。

デバイス ドライバーは、状態の変更がアイドルタイムアウト間隔の変更を必要とするたびに PoFxSetDeviceIdleTimeout を呼び出すことができます。 各呼び出しの後、ドライバーが PoFxSetDeviceIdleTimeout を再度呼び出して更新するまで、新しいアイドルタイムアウト間隔は有効なままです。

要件

要件
サポートされている最小のクライアント Windows 8以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h
Library Ntoskrnl.lib
[DLL] Ntoskrnl.exe
IRQL <= DISPATCH_LEVEL

こちらもご覧ください

DevicePowerNotRequiredCallback

PoFxRegisterDevice