Стандартные объекты событий
Система предоставляет несколько стандартных объектов событий. Драйверы могут использовать эти объекты событий для уведомления системы при возникновении определенных условий. В следующем списке содержатся стандартные объекты событий:
\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
Это событие устанавливается, когда плата за фиксацию операционной системы приближается к максимальному пределу фиксации. Другими словами, использование памяти очень велико, в физической памяти или файлах подкачки доступно очень мало места, и операционная система не может увеличить размер своих файлов подкачки. (Системный администратор всегда может увеличить размер или количество файлов подкачки, не перезагружая компьютер, если имеется достаточно ресурсов хранилища.)
Каждое из этих событий является событиями уведомлений. Они остаются заданными до тех пор, пока условие активации остается верным.
Чтобы открыть дескриптор любого из этих событий, используйте подпрограмму IoCreateNotificationEvent . Драйвер, ожидающий любого из этих событий, должен создать выделенный поток для выполнения ожидания. Поток может ожидать одного или нескольких из этих событий, вызвав KeWaitForSingleObject или KeWaitForMultipleObjects.