1.4.2 Long-Term Internal Driver Buffers

MmAllocateContiguousMemory 
Allocates a range of physically contiguous, cache-aligned memory in nonpaged pool.
MmFreeContiguousMemory 
Releases a range of physically contiguous memory when the driver unloads.
MmAllocateNonCachedMemory 
Allocates a virtual address range of noncached and cache-aligned memory in nonpaged system space (pool).
MmFreeNonCachedMemory 
Releases a virtual address range of noncached memory in nonpaged system space when the driver unloads.
HalAllocateCommonBuffer 
Allocates and maps a logically contiguous region of memory that is simultaneously accessible both from the processor and from a device, given access to an adapter object, the requested length of the memory region to allocate, and access to variables where the starting logical and virtual addresses of the allocated region are returned. This routine returns TRUE if the requested length was allocated. It can be used for continuous busmaster DMA or for system DMA using the autoinitialize mode of a system DMA controller.
HalFreeCommonBuffer 
Releases an allocated common buffer and unmaps it, given access to the adapter object, the length, and the starting logical and virtual addresses of the region to be freed when the driver unloads. Arguments must match those passed in the call to HalAllocateCommonBuffer.