次の方法で共有


待機/ウェイク IRP 要求

IRP_MN_WAIT_WAKE送信するために、ドライバーは PoRequestPowerIrpを呼び出し、(他のパラメーターの中で) ターゲット PDO へのポインター、システム電源状態、コールバック ルーチンへのポインターを渡します。

システムの電源状態は、この IRP がシステムをウエイクアップできる最小電源の状態を指定します。 SystemWake 状態は、 DEVICE_CAPABILITIES 構造体内の値と同等か、それよりも高い電力状態である必要があります。 たとえば、ドライバーが IRP で PowerSystemSleeping2 を渡した場合、関連付けられている IRP は、システムが状態 S0、S1、および S2 からウェイクする可能性があります。 このような場合、システムは S0 と S2 (範囲内で最高電力状態と最低電力状態) をサポートする必要がありますが、S1 をサポートする必要はありません。

待機/ウェイク IRP を要求するすべてのドライバーは、他のすべてのドライバーが IRP を完了した後に呼び出される callback routineを指定する必要があります。 このルーチンでは、ドライバーはそのデバイスを動作状態に戻すために必要な操作を行うことができます。

PoRequestPowerIrp に応答して、電源マネージャーは、マイナー コード IRP_MN_WAIT_WAKE 電源 IRP を割り当て、ターゲット PDO のデバイス スタックの先頭に送信します。 呼び出し元は、割り当てられた IRP へのポインターを返し、IRP を取り消す必要がある場合に使用できます。

エラーが発生しなければ、 PoRequestPowerIrp は STATUS_PENDING を返します。 この状態は、IRPが正常に送信され、完了待ちであることを意味します。

待機/ウェイク IRP は、システムまたはデバイスの電源状態を変更しません。 デバイスのウェイクアップ信号を有効にするだけです。 システムまたはデバイスが外部信号によってウェイクアップするまで、IRP は保留状態のままです。