次の方法で共有


PoStartNextPowerIrp 関数 (ntifs.h)

PoStartNextPowerIrp ルーチンは、ドライバーが次の電源 IRP を処理する準備ができていることを電源マネージャーに通知します。 (Windows Server 2003、Windows XP、Windows 2000 のみ)。

構文

void PoStartNextPowerIrp(
  [in, out] PIRP Irp
);

パラメーター

[in, out] Irp

主要な関数コードが IRP_MJ_POWERされる IRP へのポインター。

戻り値

なし

解説

Windows Vista 以降では、 ドライバーは PoStartNextPowerIrp を呼び出す必要はありません。このルーチンの呼び出しでは、電源管理操作は実行されません。 ただし、Windows Server 2003、Windows XP、および Windows 2000 では、以前の電源 IRP でドライバーが終了し、次の電源 IRP を処理する準備ができたら、デバイス スタック内のすべてのドライバーから PoStartNextPowerIrp を呼び出す必要があります。 IRP_MN_QUERY_POWERまたは IRP_MN_SET_POWER 要求ごとに、ドライバーごとに 1 回呼び出 必要があります。

電源 IRP は 1 回だけ完了しますが、通常はデバイスのバス ドライバーによって、デバイス スタック内の各ドライバーが呼び出す必要があります PoStartNextPowerIrp IRP がダウンまたはスタックをバックアップします。 ドライバーが IRP に失敗した場合でも、ドライバーは PoStartNextPowerIrp を呼び出して、別の電源 IRP を処理する準備ができていることを電源マネージャーに通知する必要があります。

現在の IRP スタックの場所が現在のドライバーを指している間、ドライバーは PoStartNextPowerIrp を呼び出す必要があります。 したがって、このルーチンは、 IoCompleteRequestIoSkipCurrentIrpStackLocationおよび PoCallDriver の前に呼び出す必要があります。 一般的な規則として、ドライバーは、IRP に関連付けられている IoCompletion ルーチンから、または PoRequestPowerIrp に渡されたコールバック ルーチンから PoStartNextPowerIrp を呼び出す必要があります。

バス ドライバーは、各 IRP を完了する前に PoStartNextPowerIrp を呼び出す必要があります。

要件

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

こちらもご覧ください

IRP

IRP_MJ_POWER

IRP_MN_QUERY_POWER

IRP_MN_SET_POWER

IoCompleteRequest

IoSkipCurrentIrpStackLocation

PoCallDriver

PoRequestPowerIrp