标准事件对象

系统提供多个标准事件对象。 驱动程序可以使用这些事件对象在发生某些情况时由系统通知。 以下列表包含标准事件对象:

\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 例程。 等待其中任何一个事件的驱动程序应创建一个专用线程来执行等待。 线程可以通过调用 KeWaitForSingleObjectKeWaitForMultipleObjects 来等待其中一个或多个事件。