次の方法で共有


WdfDeviceInitSetPowerNotPageable 関数 (wdfdevice.h)

[KMDF にのみ適用]

WdfDeviceInitSetPowerNotPageable メソッドは、システムがスリープ状態と動作 (S0) 状態の間で遷移している間、ドライバーがページング可能なデータにアクセスしないことを電源マネージャーに通知します。

構文

void WdfDeviceInitSetPowerNotPageable(
  [in] PWDFDEVICE_INIT DeviceInit
);

パラメーター

[in] DeviceInit

WDFDEVICE_INIT構造体への呼び出し元が指定したポインター。

戻り値

なし

解説

関数ドライバーまたはバス ドライバーが WdfDeviceInitSetPowerNotPageable を呼び出した場合、ドライバーのデバイスが低電力状態になったり、動作状態に戻ったりしたときに、システム ページング ファイルのデバイスが動作 (D0) 状態でない可能性があります。 そのため、デバイスの電源切り替え中に、オペレーティング システムがページング ファイルにアクセスする可能性のある操作をドライバーが実行しないようにする必要があります。 このような操作には、ファイル、レジストリ、またはページ プールへのアクセスが含まれます。

既定では、フレームワークは関数ドライバーのページング可能なデータにアクセスできるようにします。 このフレームワークでは、バス ドライバーが子デバイスに対して WdfDeviceInitSetPowerPageable または WdfDeviceInitSetPowerNotPageable を呼び出さない限り、バス ドライバーが列挙する子デバイスごとに親デバイスの設定を使用します。 子デバイスに対して WdfDeviceInitSetPowerPageable を呼び出すバス ドライバーを作成する場合、子デバイスのスタック内のドライバーで WdfDeviceInitSetPowerNotPageable を呼び出すことはできません。

フィルター ドライバーから WdfDeviceInitSetPowerPageable または WdfDeviceInitSetPowerNotPageable を呼び出しても効果はありません。 フレームワークでは、次の下位ドライバーが指定する設定を使用します。

ほとんどのドライバーでは 、WdfDeviceInitSetPowerPageable または WdfDeviceInitSetPowerNotPageable を呼び出す必要はありません。 代わりに、ドライバーに適した既定の設定をフレームワークに使用させる必要があります。 ただし、ドライバーが電源切り替え中にページング可能なデータ (ストレージ スタックやビデオ スタックなど) にアクセスできないドライバー スタックの一部である場合、またはドライバーが記憶域またはビデオ デバイスである可能性のあるデバイスを列挙するバス ドライバーである場合は、ドライバーは WdfDeviceInitSetPowerNotPageable を呼び出す必要があります。

ドライバーが WdfDeviceInitSetPowerNotPageable を呼び出す場合は、 WdfDeviceCreate を呼び出す前に呼び出す必要があります。

WdfDeviceCreate の呼び出しの詳細については、「Framework デバイス オブジェクトの作成」を参照してください。

次のコード例では、システムがスリープ状態と動作 (S0) 状態の間で遷移している間、ドライバーがページング可能なデータにアクセスしないことを電源マネージャーに通知します。

WdfDeviceInitSetPowerNotPageable(DeviceInit);

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
Header wdfdevice.h (Wdf.h を含む)
Library Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 ChildDeviceInitAPI(kmdf)DeviceInitAPI(kmdf)DriverCreate(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf)、 PdoDeviceInitAPI(kmdf)

こちらもご覧ください

WdfDeviceInitSetPowerPageable