Starting in Windows Server 2003, the memory manager sets and clears a set of event (notification) objects to signal various memory conditions. You can use these event in your driver to guide how paged and/or non-paged pool is allocated. These events are:
These events are signalled whenever there's plenty of free space available in the indicated pool. When set, a driver can freely allocate large blocks.
These events are signalled whenever there's a relatively small amount of space available in the indicated pool. Note that these events don't necessarily signal a serious pool shortage, but rather that pool users should "cool it" and refrain from aggressive allocations in the indicated pool to help avoid a future serious shortage.
Before you ask: No, the parameters (that is, the specific amounts of memory) that cause these flags to be set and cleared aren't public.
The pool events add to the following which have been present in Windows since at least Windows 2000: