IAdapterPowerManagement::P owerChangeState メソッド (portcls.h)

メソッドは PowerChangeState 、デバイスが新しい電源状態に変更するように要求します。

構文

void PowerChangeState(
  [in] POWER_STATE NewState
);

パラメーター

[in] NewState

デバイスに対して要求される新しい電源状態を指定します。 このパラメーターは、POWER_STATE型の共用体です。 新しい電源状態 (NewStateDeviceState) には、次の表に示す DEVICE_POWER_STATE 列挙値のいずれかを指定できます。

電源状態 意味
PowerDeviceD0 完全な電源状態 (D0)。 このコードは、現在の電源状態の関数である可能性があります。 新しい状態を保存します。 このローカル値は、プロパティ アクセスをキャッシュするタイミングと、ドライバーがハードウェアへのアクセスを許可するタイミングを決定するために使用されます。
PowerDeviceD1 D0 に戻るために必要な待機時間に関して最も短い待機時間を持つスリープ状態
PowerDeviceD2 中程度の待機時間のスリープ状態。 この状態では、デバイス ドライバーはハードウェアに触れることができると想定できないため、アクセスをキャッシュし、D0 を入力したときにハードウェアを復元する必要があります。
PowerDeviceD3 完全な休止状態であり、最も長い待機時間のスリープ状態です。 ドライバーは、この状態のハードウェアにアクセスできず、ハードウェア アクセスをキャッシュし、D0 または D1 に戻るとハードウェアを復元する必要があります

戻り値

なし

解説

PortCls は、PowerChangeStateIRP_MN_SET_POWER電源 IRP に応答して メソッドを呼び出します。 この呼び出しは失敗してはなりません。 PortCls とシステムは、呼び出しを PowerChangeState 使用して、デバイスを目的の電源状態にします。 システムがアクティブなオーディオ ストリームを中断または再開しようとすると、ドライバーはデバイス コンテキストを適切に保存または復元できる必要があります。

ドライバーを支援するために、PortCls は、このメソッドを呼び出してデバイスをスリープ状態にする前に、アクティブなオーディオ ストリームを一時停止します。 このメソッドを呼び出すと、PortCls はアクティブなオーディオ ストリームの一時停止を解除してデバイスをスリープ解除します。 ミニポートは、 IPowerNotify インターフェイスを利用して追加の通知を選択できます。

ミニポート ドライバーは、呼び出しから返される前に、デバイスの電源状態に要求された変更を実行する PowerChangeState 必要があります。 ミニポート ドライバーが電源状態の変更の前にデバイスの状態を保存または復元する必要がある場合、ミニポート ドライバーは IPowerNotify インターフェイスをサポートする必要があります。これにより、このような変更の事前警告を受け取ることができます。 正常 PowerChangeState な呼び出しから戻る前に、ミニポート ドライバーは新しい電源状態をキャッシュする必要があります。

ミニポート ドライバーはスリープ状態 (PowerDeviceD0 以外の状態) のいずれかにありますが、ハードウェアへの書き込みを避ける必要があります。 ミニポート ドライバーは、デバイスの電源が再び起動するまで遅延する必要があるハードウェア アクセスをキャッシュする必要があります。 電源状態がスリープ状態の 1 つから PowerDeviceD0 に変更されている場合、ミニポート ドライバーは、デバイスの電源を入れた後、遅延ハードウェア アクセスを実行する必要があります。 電源状態が PowerDeviceD0 からスリープ状態に変化している場合、ミニポート ドライバーは、デバイスの電源を切る前に、呼び出し中に PowerChangeState 必要なハードウェア アクセスを実行できます。

電源を切っている間、ミニポート ドライバーは、ミニポート ドライバー オブジェクトまたはストリーム オブジェクトを作成するように求められることはありません。 PortCls は、ミニポート ドライバーの NewStream メソッドを呼び出す前に、常にデバイスを PowerDeviceD0 状態にします。

このメソッドのコードは、ページ メモリ内に存在する必要があります。

要件

要件
対象プラットフォーム ユニバーサル
Header portcls.h (Portcls.h を含む)

こちらもご覧ください

IAdapterPowerManagement

IPowerNotify

IRP_MN_SET_POWER