次の方法で共有


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の種類のデバイスでこの機能がサポートされています。 poRegisterDeviceForIdleDetection 、サポートされていない型のデバイスに対して -1 が指定されている場合は NULL を返します。 デバイスの種類の詳細については、「デバイスの種類の指定を参照してください。

デバイスごとに 1 つのアイドル検出のみを設定できます。 poRegisterDeviceForIdleDetection 後続の呼び出し アイドル検出値を変更します。

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

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

必要条件

要件 価値
サポートされる最小クライアント Windows 2000
ターゲット プラットフォーム 万国
ヘッダー ntifs.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

関連項目

IRP

IRP_MN_SET_POWER

PoSetDeviceBusy