システムは、いくつかの標準イベント オブジェクトを提供します。 ドライバーは、特定の条件が発生するたびにシステムによって通知されるこれらのイベント オブジェクトを使用できます。 次の一覧には、標準イベント オブジェクトが含まれています。
\KernelObjects\HighMemoryCondition
このイベントは、空き物理メモリの量がシステム定義の量を超えるたびに設定されます。 ドライバーは、このイベントがメモリを積極的に割り当てるシグナルとして設定されるのを待つことができます。
\KernelObjects\LowMemoryCondition
このイベントは、空き物理メモリの量がシステム定義の量を下回るたびに設定されます。 大量のメモリを割り当てたドライバーは、未使用のメモリを解放するためのシグナルとしてこのイベントが設定されるまで待機できます。
Microsoft Windows Server 2003 以降のバージョンの Windows では、ドライバーは次の追加の標準イベント オブジェクトを使用することもできます。
\KernelObjects\HighPagedPoolCondition
このイベントは、空きページ プールの量がシステム定義の量を超えるたびに設定されます。 ドライバーは、このイベントがページングされたプールからメモリを効率的に割り当てるためのシグナルとして設定されるのを待つことができます。
\KernelObjects\LowPagedPoolCondition
このイベントは、空きページ プールの量がシステム定義の量を下回るたびに設定されます。 大量のメモリを割り当てたドライバーは、ページ プールから未使用のメモリを解放するためのシグナルとしてこのイベントが設定されるまで待機できます。
\KernelObjects\HighNonPagedPoolCondition
このイベントは、空き非ページ プールの量がシステム定義の量を超過するとトリガーされます。 ドライバーは、このイベントが非ページ プールからメモリを積極的に割り当てるためのシグナルとして設定されるのを待つことができます。
\KernelObjects\LowNonPagedPoolCondition
このイベントは、非ページ プールの空き領域がシステム定義の量を下回るたびに設定されます。 大量のメモリを割り当てたドライバーは、このイベントがノンページ プールから未使用のメモリを解放するシグナルとして発信されるのを待つことができます。
Windows Vista 以降のバージョンの Windows の場合、ドライバーは次の追加の標準イベント オブジェクトを使用することもできます。
\KernelObjects\LowCommitCondition
このイベントは、現在のコミット制限を基準にして、オペレーティング システムのコミット料金が低い場合に設定されます。 つまり、メモリ使用率が低く、物理メモリまたはページング ファイルで大量の領域を使用できます。
\KernelObjects\HighCommitCondition
このイベントは、オペレーティング システムのコミット料金が現在のコミット制限に対して高い場合に設定されます。 言い換えると、メモリ使用量が多く、物理メモリまたはページング ファイルで使用できる領域はほとんどありませんが、オペレーティング システムではページング ファイルのサイズを大きくできる可能性があります。
\KernelObjects\MaximumCommitCondition
このイベントは、オペレーティング システムのコミット料金が 最大コミット制限に近い場合に設定されます。 つまり、メモリ使用量が非常に多く、物理メモリまたはページング ファイルで使用できる領域が非常に少なく、オペレーティング システムではページング ファイルのサイズを大きくできません。 (システム管理者は、十分な記憶域リソースが存在する場合、コンピューターを再起動することなく、ページング ファイルのサイズまたは数を常に増やすことができます)。
これらのイベントはそれぞれ通知イベントです。 トリガー条件が true のままである限り、これらは設定されたままです。
これらのイベントのハンドルを開くには、 IoCreateNotificationEvent ルーチンを使用します。 これらのイベントのいずれかを待機するドライバーは、待機を行う専用のスレッドを作成する必要があります。 スレッドは、 KeWaitForSingleObject または KeWaitForMultipleObjects を呼び出すことによって、これらのイベントの 1 つ以上を待機できます。