1.4.1 Temporary Buffers and Zone Entries
-
ExAllocatePool
-
Allocates (optionally cache-aligned) memory from paged or nonpaged system
space.
-
ExAllocatePoolWithQuota
-
Allocates pool memory charging quota against the original requestor of the I/O
operation. (Only highest-level drivers can call this routine.)
-
ExAllocatePoolWithTag
-
Allocates (optionally cache-aligned) tagged memory from paged or nonpaged
system space. The caller-supplied tag is put into any crash dump of memory
that occurs.
-
ExAllocatePoolWithQuotaTag
-
Allocates tagged pool memory charging quota against the original requestor of
the I/O operation. The caller-supplied tag is put into any crash dump of
memory that occurs. (Only highest-level drivers can call this routine.)
-
ExFreePool
-
Releases memory to paged or nonpaged system space.
-
ExInitializeNPagedLookasideList
-
Initializes a lookaside list of nonpaged memory. After a successful
initialization, fixed-size blocks can be allocated from and freed to the
lookaside list.
-
ExAllocateFromNPagedLookasideList
-
Removes the first entry from the specified lookaside list in nonpaged memory.
If the lookaside list is empty, an entry is allocated from nonpaged pool.
-
ExFreeToNPagedLookasideList
-
Returns an entry to the specified lookaside list in nonpaged memory. If the
list has reached its maximum size, the entry is returned to nonpaged pool.
-
ExDeleteNPagedLookasideList
-
Deletes a nonpaged lookaside list.
-
ExInitializePagedLookasideList
-
Initializes a lookaside list of paged memory. After a successful
initialization, fixed-size blocks can be allocated from and freed to the
lookaside list.
-
ExAllocateFromPagedLookasideList
-
Removes the first entry from the specified lookaside list in paged memory. If
the lookaside list is empty, an entry is allocated from paged pool.
-
ExFreeToPagedLookasideList
-
Returns an entry to the specified lookaside list in paged memory. If the list
has reached its maximum size, the entry is returned to paged pool.
-
ExDeletePagedLookasideList
-
Deletes a paged lookaside list.
-
ExInitializeZone
-
Initializes a zone buffer header, setting up the fixed size for every block to
be allocated from the zone.
-
ExAllocateFromZone
-
Allocates a fixed-size block of storage from a zone buffer.
-
ExFreeToZone
-
Returns a previously allocated, fixed-size block in a zone buffer to the
zone’s free-block list.
-
ExIsFullZone
-
Determines whether all fixed-size blocks have been allocated from a given zone
buffer.
-
ExInterlockedAllocateFromZone
-
Allocates a fixed-size block from a zone buffer, using a spin lock to ensure
multiprocessor-safe access to the zone’s free-block list.
-
ExInterlockedFreeToZone
-
Releases a fixed-size block in a zone buffer, using a spin lock to ensure
multiprocessor-safe access to the zone’s free-block list.
-
ExExtendZone
-
Extends an existing zone buffer by allocating a block-size-granular amount of
additional memory, which cannot be released until the machine is rebooted.
-
ExInterlockedExtendZone
-
Extends an existing zone buffer, which cannot be released until the machine is
rebooted, using a spin lock to ensure multiprocessor-safe access to the zone
header.
-
ExIsObjectInFirstZoneSegment
-
Returns whether a given entry was allocated from the original zone segment or
from an extension to the zone.
-
MmQuerySystemSize
-
Returns whether the machine has a small, medium, or large amount of available
memory.
-
MmIsThisAnNtAsSystem
-
Returns whether the machine is running as a server or as a desktop client. If
this routine returns TRUE, the caller is likely to require more resources to
process I/O requests, and the machine is a server so it is likely to have more
resources available.