PoRegisterDeviceForIdleDetection 関数 (wdm.h)

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

構文

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

パラメーター

[in] DeviceObject

デバイスのドライバーによって作成された DEVICE_OBJECT へのポインター。 Windows 2000 以降のシステムでは、このパラメーターは物理デバイス オブジェクト (PDO) または機能デバイス オブジェクト (FDO) を指すことができます。 Windows 98/Me では、このパラメーターは基になるデバイスの PDO を指している必要があります。

[in] ConservationIdleTime

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

[in] PerformanceIdleTime

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

[in] State

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

戻り値

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

注釈

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

  • デバイスのアイドル検出を有効にし、初期アイドル タイムアウト値を設定するには
  • デバイスのアイドルタイムアウト値を変更するには
  • デバイスのアイドル状態の検出を無効にするには
デバイスがアイドル状態の検出を有効にした後、ドライバーは、デバイスが使用されているときに常に [PoSetDeviceBusy](./nf-wdm-posetdevicebusy.md) を呼び出し、PoRegisterDeviceForIdleDetection によって返される NULL 以外のアイドル ポインターを渡します。 PoSetDeviceBusy を呼び出すと、アイドル状態のカウントダウンが再開されます。 ドライバーは PoSetDeviceBusyNULL ポインターを渡してはならないことに注意してください。

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

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

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

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

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

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

要件

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

こちらもご覧ください

IRP

IRP_MN_SET_POWER

PoSetDeviceBusy