フィルター ドライバーまたはファンクション ドライバーでのシステム電源クエリ IRP の失敗
フィルターまたはファンクション ドライバー (デバイスの電源ポリシー所有者ではない) は、以下のいずれかに該当する場合、IRP_MN_QUERY_POWER 要求に失敗する可能性があります。
デバイスでウェイクアップが有効になっており、要求されたシステムの電源状態の電力が SystemWake の値よりも小さくなります。この値は、デバイスがシステムをウェイクアップできる最小電力の状態を指定します。 たとえば、S2 からシステムをウェイクアップできるが、S3 からはウェイクアップできないデバイスでは、S3 のクエリには失敗しますが、S2 のクエリには成功します。
要求された状態に対応するデバイスの電源状態に入ると、モデム接続を開くなど、データを失う可能性がある操作の破棄がドライバーに強制されます。 このような理由から、ドライバーがクエリに失敗することはめったにありません。ほとんどの状況では、アプリケーションがそのようなケースを処理します。
システム電源状態の IRP_MN_QUERY_POWER 要求を失敗するには、ドライバーは次の手順を実行する必要があります。
PoStartNextPowerIrp を呼び出し、ドライバーが次の電源 IRP を処理する準備ができていることを示します。 (Windows Server 2003、Windows XP、および Windows 2000 のみ)
Irp->IoStatus.Status をエラー ステータスに設定し、IO_NO_INCREMENT を指定して IoCompleteRequest を呼び出します。 デバイス スタックのさらに下に IRP を渡さないでください。
IoReleaseRemoveLock を呼び出し、以前に取得したロックを解放します。
DispatchPower ルーチンからエラー ステータスを返します。