2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS NDIS library
5 * PURPOSE: Memory management routines
6 * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
8 * CSH 01/08-2000 Created
15 NdisAllocateMemoryWithTag(
16 OUT PVOID
*VirtualAddress
,
28 return NDIS_STATUS_FAILURE
;
32 #undef NdisCreateLookaheadBufferFromSharedMemory
36 NdisCreateLookaheadBufferFromSharedMemory(
37 IN PVOID pSharedMemory
,
38 IN UINT LookaheadLength
,
39 OUT PVOID
*pLookaheadBuffer
)
45 #undef NdisDestroyLookaheadBufferFromSharedMemory
49 NdisDestroyLookaheadBufferFromSharedMemory(
50 IN PVOID pLookaheadBuffer
)
56 #undef NdisMoveFromMappedMemory
60 NdisMoveFromMappedMemory(
61 OUT PVOID Destination
,
69 #undef NdisMoveMappedMemory
74 OUT PVOID Destination
,
78 RtlCopyMemory(Destination
,Source
,Length
);
82 #undef NdisMoveToMappedMemory
86 NdisMoveToMappedMemory(
87 OUT PVOID Destination
,
95 #undef NdisMUpdateSharedMemory
99 NdisMUpdateSharedMemory(
100 IN NDIS_HANDLE MiniportAdapterHandle
,
102 IN PVOID VirtualAddress
,
103 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
)
112 OUT PVOID
*VirtualAddress
,
115 IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
)
117 * FUNCTION: Allocates a block of memory
119 * VirtualAddress = Address of buffer to place virtual
120 * address of the allocated memory
121 * Length = Size of the memory block to allocate
122 * MemoryFlags = Flags to specify special restrictions
123 * HighestAcceptableAddress = Specifies -1
128 if (MemoryFlags
& NDIS_MEMORY_CONTIGUOUS
) {
130 *VirtualAddress
= NULL
;
131 return NDIS_STATUS_FAILURE
;
134 if (MemoryFlags
& NDIS_MEMORY_NONCACHED
) {
136 *VirtualAddress
= NULL
;
137 return NDIS_STATUS_FAILURE
;
140 /* Plain nonpaged memory */
141 Block
= ExAllocatePool(NonPagedPool
, Length
);
142 *VirtualAddress
= Block
;
144 return NDIS_STATUS_FAILURE
;
146 return NDIS_STATUS_SUCCESS
;
153 IN PVOID VirtualAddress
,
157 * FUNCTION: Frees a memory block allocated with NdisAllocateMemory
159 * VirtualAddress = Pointer to the base virtual address of the allocated memory
160 * Length = Size of the allocated memory block as passed to NdisAllocateMemory
161 * MemoryFlags = Memory flags passed to NdisAllocateMemory
164 if (MemoryFlags
& NDIS_MEMORY_CONTIGUOUS
) {
169 if (MemoryFlags
& NDIS_MEMORY_NONCACHED
) {
174 /* Plain nonpaged memory */
175 ExFreePool(VirtualAddress
);
181 NdisImmediateReadSharedMemory(
182 IN NDIS_HANDLE WrapperConfigurationContext
,
183 IN ULONG SharedMemoryAddress
,
192 NdisImmediateWriteSharedMemory(
193 IN NDIS_HANDLE WrapperConfigurationContext
,
194 IN ULONG SharedMemoryAddress
,
204 NdisMAllocateSharedMemory(
205 IN NDIS_HANDLE MiniportAdapterHandle
,
208 OUT PVOID
*VirtualAddress
,
209 OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress
)
217 NdisMAllocateSharedMemoryAsync(
218 IN NDIS_HANDLE MiniportAdapterHandle
,
225 return NDIS_STATUS_FAILURE
;
231 NdisMFreeSharedMemory(
232 IN NDIS_HANDLE MiniportAdapterHandle
,
235 IN PVOID VirtualAddress
,
236 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress
)