PoRegisterDeviceForIdleDetection 関数 (ntifs.h)

PoRegisterDeviceForIdleDetection ルーチンは、アイドル状態の検出を有効または取り消し、デバイスのアイドル タイムアウト値を設定します。

構文

PULONG PoRegisterDeviceForIdleDetection(
  [in] PDEVICE_OBJECT     DeviceObject,
  [in] ULONG              ConservationIdleTime,
  [in] ULONG              PerformanceIdleTime,
  [in] DEVICE_POWER_STATE State
);

パラメーター

[in] DeviceObject

デバイスのドライバーによって作成された DEVICE_OBJECT へのポインター。 このパラメーターは、物理デバイス オブジェクト (PDO) または機能デバイス オブジェクト (FDO) を指すことができます。

[in] ConservationIdleTime

システム電源ポリシーで省エネが最適化されたときに適用されるタイムアウト値 (秒単位) を設定します。 保存ポリシーが有効になっている場合にアイドル検出を無効にするには、0 を指定します。

[in] PerformanceIdleTime

システム電源ポリシーがパフォーマンスを最適化するときに適用するタイムアウト値 (秒単位) を設定します。 パフォーマンス ポリシーが有効な場合にアイドル検出を無効にするには、0 を指定します。

[in] State

ConservationIdleTime または PerformanceIdleTime のいずれかが満たされたときに、IRP_MN_SET_POWER要求で要求されるデバイスの電源状態指定します。 使用できる値は 、DEVICE_POWER_STATE 値です。

戻り値

PoRegisterDeviceForIdleDetection は、アイドル状態の検出が有効になっていることを示すアイドル カウンターへのポインターを返します。 アイドル状態の検出が無効になっている、アイドル 状態のカウンターを割り当てられなかった、またはタイムアウト値の一方または両方が無効であることを示す NULL を返します。

注釈

PoRegisterDeviceForIdleDetection を使用すると、ドライバーは 、電源マネージャーによって提供されるアイドル状態の検出メカニズムを使用できます。 ドライバーは、次のいずれかの理由で PoRegisterDeviceForIdleDetection を呼び出します。

  • デバイスのアイドル検出を有効にし、初期アイドル タイムアウト値を設定します。
  • デバイスのアイドル タイムアウト値を変更するには。
  • デバイスのアイドル状態の検出を無効にする。

アイドル状態の検出のためにデバイスを有効にした後、ドライバーは、デバイスが使用されるたびに PoSetDeviceBusy を呼び出し、 PoRegisterDeviceForIdleDetection によって返される NULL 以外のアイドル ポインターを渡します。 PoSetDeviceBusy を呼び出すと、アイドル状態のカウントダウンが再開されます。 ドライバーは PoSetDeviceBusy に NULL ポインターを渡してはならないことに注意してください。

デバイスが現在のアイドルタイムアウト値を満たすたびに、電源マネージャーはデバイスの電源状態状態を指定して、デバイス スタックの上部にIRP_MN_SET_POWER要求を送信します。 IRP に応答して、各ドライバーは、電源状態遷移の前に必要なデバイス固有のタスクを実行し、次の下位ドライバーに IRP を渡します。 IRP がバス ドライバーに到達すると、そのドライバーは、要求された低電力状態にデバイスを配置し、IRP を完了します。

PoRegisterDeviceForIdleDetection は 、保存とパフォーマンスの両方にタイムアウト値を設定します。 ConservationIdleTime 値は、システム電源ポリシーが保存のために最適化する場合に適用されます。PerformanceIdleTime 値は、システム電源ポリシーがパフォーマンスを最適化するときに適用されます。 通常、適用可能なポリシーは電源に依存します。AC 電源で実行すると、システムはパフォーマンスを最適化し、バッテリをオフにすると、システムが節約のために最適化されます。

一部のデバイスでは、-1 のタイムアウト値を指定して、デバイス クラスの標準の電源ポリシー タイムアウトを使用できます。 標準タイムアウト値は、サポートされている標準デバイス クラスのシステム統合を向上させます。 現在、WDM では、種類が FILE_DEVICE_DISK および FILE_DEVICE_MASS_STORAGE のデバイスでこの機能がサポートされています。 サポートされていない型のデバイスに -1 が指定されている場合、PoRegisterDeviceForIdleDetection は NULL を返します。 デバイスの種類の詳細については、「 デバイスの種類の指定」を参照してください。

デバイスごとに設定できるアイドル状態の検出は 1 つだけです。 PoRegisterDeviceForIdleDetection の後続の呼び出しにより、アイドル状態の検出値が変更されます。

ConservationIdleTimePerformanceIdleTime の両方が 0 の場合、このルーチンはデバイスのすべてのアイドル状態の検出を取り消し、NULL を返します。

PoRegisterDeviceForIdleDetection は、独自のアイドル検出を実行する必要からドライバーを解放できます。 ただし、ドライバーは独自のアイドル検出を実装することもできます。

要件

要件
サポートされている最小のクライアント Windows 2000
対象プラットフォーム ユニバーサル
Header ntifs.h (Wdm.h、Ntddk.h、Ntifs.h を含みます)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= APC_LEVEL

こちらもご覧ください

Irp

IRP_MN_SET_POWER

PoSetDeviceBusy