次の方法で共有


PoSetPowerState 関数 (ntifs.h)

PoSetPowerState ルーチンは、デバイスの デバイスの電源状態 の変更をシステムに通知します。

構文

POWER_STATE PoSetPowerState(
  [in] PDEVICE_OBJECT   DeviceObject,
  [in] POWER_STATE_TYPE Type,
  [in] POWER_STATE      State
);

パラメーター

[in] DeviceObject

ターゲット DEVICE_OBJECTへのポインター。

[in] Type

POWER_STATE_TYPE 値を示します。 ドライバーは、DevicePowerState 指定する必要があります。

[in] State

設定する電源状態を指定します。 ドライバーは、DEVICE_POWER_STATE 値を指定する必要があります。

戻り値

PoSetPowerState は、前の電源状態を返します。

備考

PoSetPowerState は、デバイスの新しい電源状態 電源マネージャーに通知します。 デバイス スタック内の各ドライバー (フィルター、関数、バス ドライバー) は、PoSetPowerState 呼び出して、対応するデバイス オブジェクトの電源状態の変化を電源マネージャーに通知する必要があります。 例えば:

  • ドライバーは、デバイスの電源設定要求を受信した後、PoStartNextPowerIrp呼び出す前に、このルーチンを呼び出します。 PnP IRP_MN_START_DEVICE 要求を処理する場合、ドライバーは PoSetPowerState を呼び出して、デバイスが D0 状態であることを電源マネージャーに通知する必要があります。

  • デバイスの電源が切れている場合、ドライバーは D0 状態を離れる前 PoSetPowerState を呼び出す必要があります。 さらに、ドライバーは、PoSetPowerState が返 前にクライアント要求を処理できる必要があります。

  • デバイスの電源がオンになっている場合、デバイスが D0 状態に正常に設定された後、ドライバーは PoSetPowerState 呼び出す必要があります。

デバイスの電源を上下に切り上げる方法の詳細については、「デバイスの電源状態のIRP_MN_SET_POWERの処理」を参照してください。

PoSetPowerState の呼び出し元は、状態を D0 に設定する場合を除き、IRQL <= APC_LEVELで実行されている必要があります。 状態を D0 に設定すると、呼び出し元は IRQL <= DISPATCH_LEVELで実行できます。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000
ターゲット プラットフォーム 万国
ヘッダー ntifs.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 「解説」セクションを参照してください。

関連項目

IRP_MN_START_DEVICE

PoStartNextPowerIrp