KMDF ドライバーでのページング可能なコードの作成
ページング可能なコードとは、コードが使用されていないときにコンピューターのページング ファイルに書き込むことができるコードです。 ドライバーの一部をページング可能にして、読み込みイメージと初期読み込み時間を減らし、コンピューターの限られた非ページ メモリ プールを使用するドライバーのコードの量を減らすことができます。
ページング可能なコードまたはデータがドライバーに適しているかどうかを判断するには、次のようにします。
ドライバー内のページング可能なセクションを識別します。
ページング可能なセクションは、必要になるまでメモリに読み込まれません。 ドライバーでページング可能なセクションを作成する方法については、「ドライバーをページング可能にする」を参照してください。
ページングされたドライバー コードが、低電力状態からすぐに復帰するコンピューターの機能を妨げないようにしてください。
ドライバーが提供するすべてのデバイス オブジェクトコールバック関数は、IRQL = PASSIVE_LEVEL で呼び出されます。これにより、コードをページング可能にすることができます (「ドライバーのページング可能にする」の説明に従います)。
ただし、デバイスが低電力状態を離れ、動作中 (D0) 状態に戻ったときにフレームワークがコールバック関数を呼び出す場合は、コールバック関数のコード ページングを可能にしないでください。
このようなコードがページング可能な場合は、コンピューターがスリープ状態になる前に、コードがページング ファイルに書き込まれる可能性があります。 そのため、ページング ディスクの電源が回復するまで、コードを再読み込みできない (そのため、デバイスが完全に動作できない) ため、コンピューターの起動に時間がかかります。
そのため、「デバイスが稼働状態に戻る」トピックに記載されているコールバック関数はページングできません。
電源切り替え中に、ドライバーがドライバーの外部にあるページング可能なデータ (ファイル、レジストリ、ページ プールなど) にアクセスする必要があるかどうかを判断します。
電源切り替え中にページング可能なデータにアクセスするドライバーの機能を有効または無効にする方法については、「WdfDeviceInitSetPowerPageable」および「WdfDeviceInitSetPowerNotPageable」を参照してください。
ドライバーがいつ非ページ状態になっているかを確認する方法については、「WdfDevStateIsNP」を参照してください。