Поделиться через


Стандартные объекты событий

Система предоставляет несколько стандартных объектов событий. Драйверы могут использовать эти объекты событий для уведомления системой при возникновении определенных условий. Следующий список содержит стандартные объекты событий:

\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.