NdisFreeMemory

This function releases a block of memory previously allocated with the NdisAllocateMemory function.

At a Glance

Header file: Ndis.h
Windows CE versions: 2.0 and later

Syntax

VOID NdisFreeMemory( IN PVOID VirtualAddress, IN UINT Length,
IN UINT MemoryFlags );

Parameters

VirtualAddress
Pointer to the base virtual address of the allocated memory. This address was returned by the NdisAllocateMemory function.
Length
Specifies the size, in bytes, of the memory block to be released. This parameter must be identical to the Length that was passed to NdisAllocateMemory.
MemoryFlags
Specifies 0 or the bitmask originally passed to NdisAllocateMemory for the preceding range; one of the following:
0
Nonpaged system-space memory.
NDIS_MEMORY_CONTIGUOUS
Physically contiguous memory.
NDIS_MEMORY_NONCACHED
Noncached memory.

This value must be identical to the MemoryFlags parameter that was passed to NdisAllocateMemory.

Remarks

The parameters passed to this function must be identical to those passed to NdisAllocateMemory when the block of memory was allocated. That is, a caller of this function cannot release a subrange of the block that was allocated.

Because noncached memory and contiguous memory are seldom released until the allocating NIC driver is unloading, callers of this function usually are running at IRQL PASSIVE_LEVEL for these types of deallocations.

A driver that calls this function can run at IRQL <= DISPATCH_LEVEL when releasing memory that was allocated from nonpaged system space or that was allocated as noncached memory. Callers must be running at IRQL PASSIVE_LEVEL to release contiguous allocations.

See Also

NdisAllocateMemory