次の方法で共有


PoFxNotifySurprisePowerOn 関数 (wdm.h)

PoFxNotifySurprisePowerOn ルーチンは、他のデバイスに電源を供給する副作用としてデバイスがオンになっていることを電源管理フレームワーク (PoFx) に通知します。

構文

void PoFxNotifySurprisePowerOn(
  [in] PDEVICE_OBJECT Pdo
);

パラメーター

[in] Pdo

物理デバイス オブジェクト (PDO) へのポインター。 このパラメーターは、副作用としてオンにされた物理デバイスを表す DEVICE_OBJECT 構造体を指します。 呼び出し元は、常に PDO を列挙したバス ドライバーです。

戻り値

なし

解説

デバイス ドライバーでは、このルーチンを呼び出さないでください。 このルーチンは、バス ドライバーによってのみ呼び出す必要があります。

バス ドライバーは、現在使用されていないデバイスが 2 つ目のデバイスと同時にオンになっていることを PoFx に通知するには、このルーチンを呼び出します。 たとえば、1 つ目のデバイスが 2 つ目のデバイスと電源レールを共有する場合があります。 したがって、第 1 のデバイスに副作用として電源を供給しないと、2 番目のデバイスに電力を供給することはできません。 最初のデバイスは使用されていないため、このデバイスはできるだけ電力を消費しないように構成する必要があります。

D0 電源状態への切り替えを要求するために、デバイス ドライバーは デバイス スタックにIRP_MN_SET_POWER 要求を送信します。 このスタック内の PDO を介して、このデバイスの親であるバス ドライバーは要求を受け取り、デバイスに電源を供給して応答します。 ただし、2 つ目の未使用のデバイスもオンにしないと、バス ドライバーがこのデバイスをオンにできない場合、バス ドライバーは PoFxNotifySurprisePowerOn を呼び出して、未使用のデバイスで消費される電力を削減できます。

PoFxNotifySurprisePowerOn への入力時に、Pdo パラメーターで表されるデバイスは初期化されていない D0 電源状態になります。 この状態では、通常、デバイス内のすべてのコンポーネントがオンになります。 PoFxNotifySurprisePowerOn 呼び出しに応答して、PoFx は初期化された D0 状態でデバイスを構成します。 この構成中、PoFx はできるだけ多くのコンポーネントを低電力 Fx 電源状態に切り替えます。 可能であれば、PoFx は"ホット D3" 状態でデバイスを構成します。これは実際には、デバイス内のすべての個々のコンポーネントがオフになっている D0 状態です。

PoFxNotifySurprisePowerOn では、デバイスが以前にオフになったときに PoFx に登録されたデバイスのみを構成できます。 ただし、デバイスが登録されていないことをバス ドライバーが認識しない限り、デバイスが副作用としてオンになっている場合、バス ドライバーは PoFxNotifySurprisePowerOn を呼び出す必要があります。

デバイスの電源がオンになっているときにバス ドライバーがこのルーチンを呼び出せない場合、デバイス ハードウェアは無期限に完全にオン状態のままになる可能性があります。その間、PoFx はデバイスが D3 (完全にオフ) の電源状態のままであると見なします。

PoFxNotifySurprisePowerOn は、他のデバイスをオンにした場合の副作用として、デバイスが偶発的にオンになっている場合にのみ呼び出します。 バス ドライバーが DevicePowerRequiredCallback コールバックまたは D0 遷移の IRP_MN_SET_POWER 要求に応答してデバイスに電源を復元する場合は、代わりに PoFxReportDevicePoweredOn ルーチンを呼び出して、電源がデバイスに復元されたときに PoFx に通知します。

要件

要件
サポートされている最小のクライアント Windows 8 以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h
Library Ntoskrnl.lib
[DLL] Ntoskrnl.exe
IRQL <= DISPATCH_LEVEL

こちらもご覧ください

DEVICE_OBJECT

DevicePowerRequiredCallback

IRP_MN_SET_POWER

PoFxReportDevicePoweredOn