NdisMFreeSharedMemory (NDIS 5.1) function
Note NDIS 5. x has been deprecated and is superseded by NDIS 6. x. For new NDIS driver development, see Network Drivers Starting with Windows Vista. For information about porting NDIS 5. x drivers to NDIS 6. x, see Porting NDIS 5.x Drivers to NDIS 6.0.
NdisMFreeSharedMemory frees memory that was previously allocated by NdisMAllocateSharedMemory or NdisMAllocateSharedMemoryAsync by the driver of a DMA NIC.
Syntax
VOID NdisMFreeSharedMemory(
_In_ NDIS_HANDLE MiniportAdapterHandle,
_In_ ULONG Length,
_In_ BOOLEAN Cached,
_In_ PVOID VirtualAddress,
_In_ NDIS_PHYSICAL_ADDRESS PhysicalAddress
);
Parameters
MiniportAdapterHandle [in]
Specifies the handle originally input to MiniportInitialize.Length [in]
Specifies the number of bytes originally allocated.Cached [in]
Specifies TRUE if the original allocation was cacheable.VirtualAddress [in]
Specifies the base virtual address returned by NdisMAllocateSharedMemory or NdisMAllocateSharedMemoryAsync.PhysicalAddress [in]
Specifies the corresponding physical address returned by NdisMAllocateSharedMemory or NdisMAllocateSharedMemoryAsync.
Return value
None
Remarks
If it has already made a successful call to NdisMAllocateSharedMemory or NdisMAllocateSharedMemoryAsync, the NIC driver of a DMA device calls NdisMFreeSharedMemory if any of the following occurs:
Its MiniportInitialize function is unable to initialize the NIC, so this function must release all existing claims on hardware resources for that NIC before it returns control.
The NIC for which the miniport driver allocated the memory is being removed.
The driver is being unloaded, whether because the system is shutting down or because the user reconfigured the network components used in the machine.
The driver allocated additional shared memory with NdisMAllocateSharedMemoryAsync when I/O demand on its NIC was high but network traffic has now subsided to an average level.
A miniport driver cannot call NdisMFreeSharedMemory to free a subrange within an allocated shared memory range. The parameters passed to NdisMFreeSharedMemory must match exactly those that were passed to NdisMAllocateSharedMemory or NdisMAllocateSharedMemoryAsync.
NdisMFreeSharedMemory cannot be called from a MiniportShutdown function.
Before calling NdisMFreeMapRegisters, a miniport driver must free any shared memory that it has allocated.
Microsoft Windows Server 2003 and Windows XP Service Pack 1 and later releases allow both bus-master DMA NICs and subordinate DMA NICs to call NdisMFreeSharedMemory. Prior releases allow only bus-master DMA NICs to call NdisMFreeSharedMemory.
Requirements
Target platform |
Universal |
Version |
|
Header |
Ndis.h (include Ndis.h) |
Library |
Ndis.lib |
IRQL |
<= DISPATCH_LEVEL |
See also
NdisMAllocateSharedMemoryAsync