PoSetSystemWake 関数 (wdm.h)
PoSetSystemWake ルーチンは、スリープ状態からシステムをウェイクに貢献した IRP として指定した IRP をマークします。
構文
void PoSetSystemWake(
[in, out] PIRP Irp
);
パラメーター
[in, out] Irp
待機/スリープ解除 IRP へのポインター。
戻り値
なし
解説
ドライバーは PoSetSystemWake を呼び出して 、IRP_MN_WAIT_WAKE IRP をスリープ状態からシステムをスリープ状態から復帰させる原因としてマークします。 既定では、待機/スリープ解除 IRP はデバイスのウェイクアップ IRP と見なされます。 待機/スリープ解除チェーン内のターミナル デバイスがシステムを起動したかどうかを判断し、ターミナルの待機/スリープ解除 IRP に 対して PoSetSystemWake を呼び出す必要があります。 ドライバーが IRP で PoSetSystemWake を呼び出すと、スリープ状態からシステムをスリープ状態から復帰させたとマークされます。 スタック内の 1 つのドライバーだけがこのルーチンを呼び出す必要があり、通常はドライバー スタック内のバス ドライバーである必要があります。
待機/ウェイク チェーン内の他のすべてのドライバーは、完了時に独自の待機/スリープ解除 IRP に対して PoGetSystemWake を呼び出して、完了しようとしているすべての子待機/スリープ解除 IRP で PoSetSystemWake を呼び出す必要があるかどうかを判断できます。 これにより、システムのスリープ解除情報が待機/スリープ解除チェーン全体で適切に進行します。
待機/スリープ解除 IRP が完了すると、電源マネージャーは IRP がシステム ウェイク IRP としてマークされているかどうかを確認します。 IRP がシステム ウェイク IRP としてマークされている場合、電源マネージャーは、システムを起動したデバイスの内部リストに IRP を追加します。 ただし、電源マネージャーは、システムを動作する最も具体的なデバイスのみを追跡します。 たとえば、デバイス A がシステムを起こしたデバイスとして追加され、デバイス A の子であるデバイス B も追加された場合、デバイス B はデバイス B が最も具体的であるため、一覧にデバイス B のみが保持されます。 電源マネージャーがシステムを起こした最も具体的なデバイスを特定できない場合、電源マネージャーは、システムを起こしたことを報告した複数のデバイスを追跡する可能性があります。
Power Manager は、システムを起こしたデバイスに関する情報を含むイベント トレーシング for Windows (ETW) イベント (グローバル システム チャネルで表示可能) をログに記録します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |