ReactOS  0.4.13-dev-982-g9853eab
memory.c File Reference
#include "ndissys.h"
Include dependency graph for memory.c:

Go to the source code of this file.

Functions

NDIS_STATUS EXPORT NdisAllocateMemoryWithTag (OUT PVOID *VirtualAddress, IN UINT Length, IN ULONG Tag)
 
NDIS_STATUS EXPORT NdisAllocateMemory (OUT PVOID *VirtualAddress, IN UINT Length, IN UINT MemoryFlags, IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress)
 
VOID EXPORT NdisFreeMemory (IN PVOID VirtualAddress, IN UINT Length, IN UINT MemoryFlags)
 
VOID EXPORT NdisMAllocateSharedMemory (IN NDIS_HANDLE MiniportAdapterHandle, IN ULONG Length, IN BOOLEAN Cached, OUT PVOID *VirtualAddress, OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress)
 
VOID NTAPI NdisMFreeSharedMemoryPassive (PDEVICE_OBJECT DeviceObject, PVOID Context)
 
VOID EXPORT NdisMFreeSharedMemory (IN NDIS_HANDLE MiniportAdapterHandle, IN ULONG Length, IN BOOLEAN Cached, IN PVOID VirtualAddress, IN NDIS_PHYSICAL_ADDRESS PhysicalAddress)
 
VOID NTAPI NdisMAllocateSharedMemoryPassive (PDEVICE_OBJECT DeviceObject, PVOID Context)
 
NDIS_STATUS EXPORT NdisMAllocateSharedMemoryAsync (IN NDIS_HANDLE MiniportAdapterHandle, IN ULONG Length, IN BOOLEAN Cached, IN PVOID Context)
 
VOID EXPORT NdisAllocateSharedMemory (IN NDIS_HANDLE NdisAdapterHandle, IN ULONG Length, IN BOOLEAN Cached, OUT PVOID *VirtualAddress, OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress)
 
VOID EXPORT NdisFreeSharedMemory (IN NDIS_HANDLE NdisAdapterHandle, IN ULONG Length, IN BOOLEAN Cached, IN PVOID VirtualAddress, IN NDIS_PHYSICAL_ADDRESS PhysicalAddress)
 

Function Documentation

◆ NdisAllocateMemory()

NDIS_STATUS EXPORT NdisAllocateMemory ( OUT PVOID VirtualAddress,
IN UINT  Length,
IN UINT  MemoryFlags,
IN NDIS_PHYSICAL_ADDRESS  HighestAcceptableAddress 
)

Definition at line 57 of file memory.c.

74 {
75  NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
76 
77  if (MemoryFlags & NDIS_MEMORY_CONTIGUOUS)
78  {
79  /* Allocate contiguous memory (possibly noncached) */
84  (MemoryFlags & NDIS_MEMORY_NONCACHED) ? MmNonCached : MmCached);
85  }
86  else if (MemoryFlags & NDIS_MEMORY_NONCACHED)
87  {
88  /* Allocate noncached noncontiguous memory */
90  }
91  else
92  {
93  /* Allocate plain nonpaged memory */
95  }
96 
97  if (!*VirtualAddress) {
98  NDIS_DbgPrint(MIN_TRACE, ("Allocation failed (%lx, %lx)\n", MemoryFlags, Length));
99  return NDIS_STATUS_FAILURE;
100  }
101 
102  return NDIS_STATUS_SUCCESS;
103 }
#define NDIS_MEMORY_CONTIGUOUS
Definition: ndis.h:579
#define NDIS_MEMORY_NONCACHED
Definition: ndis.h:580
NTSYSAPI ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG)
Definition: largeint.c:47
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
#define NDIS_STATUS_SUCCESS
Definition: ndis.h:346
#define ExAllocatePool(type, size)
Definition: fbtusb.h:44
_Out_ PNDIS_HANDLE _Out_ PUINT _In_ PNDIS_STRING _In_ NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
Definition: ndis.h:3227
_In_ ULONG _In_ BOOLEAN _Must_inspect_result_ PVOID * VirtualAddress
Definition: ndis.h:3791
#define MAX_TRACE
Definition: debug.h:16
#define NDIS_DbgPrint(_t_, _x_)
Definition: debug.h:40
#define MIN_TRACE
Definition: debug.h:14
PVOID NTAPI MmAllocateNonCachedMemory(IN SIZE_T NumberOfBytes)
Definition: ncache.c:25
#define NDIS_STATUS_FAILURE
Definition: ndis.h:465
PVOID NTAPI MmAllocateContiguousMemorySpecifyCache(IN SIZE_T NumberOfBytes, IN PHYSICAL_ADDRESS LowestAcceptableAddress OPTIONAL, IN PHYSICAL_ADDRESS HighestAcceptableAddress, IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL, IN MEMORY_CACHING_TYPE CacheType OPTIONAL)
Definition: contmem.c:569

Referenced by MiniportInitialize(), and MiQueryResources().

◆ NdisAllocateMemoryWithTag()

NDIS_STATUS EXPORT NdisAllocateMemoryWithTag ( OUT PVOID VirtualAddress,
IN UINT  Length,
IN ULONG  Tag 
)

Definition at line 21 of file memory.c.

35 {
36  PVOID Block;
37 
38  NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
39 
41  *VirtualAddress = Block;
42 
43  if (!Block) {
44  NDIS_DbgPrint(MIN_TRACE, ("Failed to allocate memory (%lx)\n", Length));
45  return NDIS_STATUS_FAILURE;
46  }
47 
48  return NDIS_STATUS_SUCCESS;
49 }
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
#define NDIS_STATUS_SUCCESS
Definition: ndis.h:346
_In_ ULONG _In_ BOOLEAN _Must_inspect_result_ PVOID * VirtualAddress
Definition: ndis.h:3791
#define MAX_TRACE
Definition: debug.h:16
#define NDIS_DbgPrint(_t_, _x_)
Definition: debug.h:40
IN ULONG IN ULONG Tag
Definition: evtlib.h:159
#define MIN_TRACE
Definition: debug.h:14
#define NDIS_STATUS_FAILURE
Definition: ndis.h:465

Referenced by MiniportInitialize().

◆ NdisAllocateSharedMemory()

VOID EXPORT NdisAllocateSharedMemory ( IN NDIS_HANDLE  NdisAdapterHandle,
IN ULONG  Length,
IN BOOLEAN  Cached,
OUT PVOID VirtualAddress,
OUT PNDIS_PHYSICAL_ADDRESS  PhysicalAddress 
)

Definition at line 379 of file memory.c.

385 {
386  NdisMAllocateSharedMemory(NdisAdapterHandle,
387  Length,
388  Cached,
391 }
VOID EXPORT NdisMAllocateSharedMemory(IN NDIS_HANDLE MiniportAdapterHandle, IN ULONG Length, IN BOOLEAN Cached, OUT PVOID *VirtualAddress, OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress)
Definition: memory.c:148
_In_ ULONG _In_ BOOLEAN Cached
Definition: ndis.h:3788
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
Definition: iotypes.h:1060
_In_ ULONG _In_ BOOLEAN _Must_inspect_result_ PVOID * VirtualAddress
Definition: ndis.h:3791

◆ NdisFreeMemory()

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

Definition at line 110 of file memory.c.

121 {
122  NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
123 
124  if (MemoryFlags & NDIS_MEMORY_CONTIGUOUS)
125  {
126  /* Free contiguous memory (possibly noncached) */
128  Length,
129  (MemoryFlags & NDIS_MEMORY_NONCACHED) ? MmNonCached : MmCached);
130  }
131  else if (MemoryFlags & NDIS_MEMORY_NONCACHED)
132  {
133  /* Free noncached noncontiguous memory */
135  }
136  else
137  {
138  /* Free nonpaged pool */
140  }
141 }
#define NDIS_MEMORY_CONTIGUOUS
Definition: ndis.h:579
#define NDIS_MEMORY_NONCACHED
Definition: ndis.h:580
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
_In_ ULONG _In_ BOOLEAN _Must_inspect_result_ PVOID * VirtualAddress
Definition: ndis.h:3791
#define MAX_TRACE
Definition: debug.h:16
VOID NTAPI MmFreeNonCachedMemory(IN PVOID BaseAddress, IN SIZE_T NumberOfBytes)
Definition: ncache.c:172
#define NDIS_DbgPrint(_t_, _x_)
Definition: debug.h:40
VOID NTAPI MmFreeContiguousMemorySpecifyCache(IN PVOID BaseAddress, IN SIZE_T NumberOfBytes, IN MEMORY_CACHING_TYPE CacheType)
Definition: contmem.c:661
#define ExFreePool(addr)
Definition: env_spec_w32.h:352

Referenced by MiniportHalt(), and MiniportInitialize().

◆ NdisFreeSharedMemory()

VOID EXPORT NdisFreeSharedMemory ( IN NDIS_HANDLE  NdisAdapterHandle,
IN ULONG  Length,
IN BOOLEAN  Cached,
IN PVOID  VirtualAddress,
IN NDIS_PHYSICAL_ADDRESS  PhysicalAddress 
)

Definition at line 399 of file memory.c.

411 {
412  NdisMFreeSharedMemory(NdisAdapterHandle,
413  Length,
414  Cached,
417 }
_In_ ULONG _In_ BOOLEAN Cached
Definition: ndis.h:3788
VOID EXPORT NdisMFreeSharedMemory(IN NDIS_HANDLE MiniportAdapterHandle, IN ULONG Length, IN BOOLEAN Cached, IN PVOID VirtualAddress, IN NDIS_PHYSICAL_ADDRESS PhysicalAddress)
Definition: memory.c:215
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
Definition: iotypes.h:1060
_In_ ULONG _In_ BOOLEAN _Must_inspect_result_ PVOID * VirtualAddress
Definition: ndis.h:3791

◆ NdisMAllocateSharedMemory()

VOID EXPORT NdisMAllocateSharedMemory ( IN NDIS_HANDLE  MiniportAdapterHandle,
IN ULONG  Length,
IN BOOLEAN  Cached,
OUT PVOID VirtualAddress,
OUT PNDIS_PHYSICAL_ADDRESS  PhysicalAddress 
)

Definition at line 148 of file memory.c.

165 {
167 
168  NDIS_DbgPrint(MAX_TRACE,("Called.\n"));
169 
171  {
172  KeBugCheckEx(BUGCODE_ID_DRIVER,
174  Length,
175  0,
176  1);
177  }
178 
179  *VirtualAddress = Adapter->NdisMiniportBlock.SystemAdapterObject->DmaOperations->AllocateCommonBuffer(
180  Adapter->NdisMiniportBlock.SystemAdapterObject, Length, PhysicalAddress, Cached);
181 }
#define KeGetCurrentIrql()
Definition: env_spec_w32.h:706
_In_ NDIS_HANDLE MiniportAdapterHandle
Definition: ndis.h:4668
_In_ ULONG _In_ BOOLEAN Cached
Definition: ndis.h:3788
uint32_t ULONG_PTR
Definition: typedefs.h:63
NDIS_MINIPORT_BLOCK NdisMiniportBlock
Definition: miniport.h:89
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
Definition: iotypes.h:1060
struct _LOGICAL_ADAPTER * PLOGICAL_ADAPTER
_In_ ULONG _In_ BOOLEAN _Must_inspect_result_ PVOID * VirtualAddress
Definition: ndis.h:3791
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
#define MAX_TRACE
Definition: debug.h:16
#define NDIS_DbgPrint(_t_, _x_)
Definition: debug.h:40
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
Definition: rtlcompat.c:107

Referenced by MiAllocateSharedMemory(), MiniportInitialize(), NdisAllocateSharedMemory(), and NICAllocateIoResources().

◆ NdisMAllocateSharedMemoryAsync()

NDIS_STATUS EXPORT NdisMAllocateSharedMemoryAsync ( IN NDIS_HANDLE  MiniportAdapterHandle,
IN ULONG  Length,
IN BOOLEAN  Cached,
IN PVOID  Context 
)

Definition at line 330 of file memory.c.

335 {
338 
339  NDIS_DbgPrint(MAX_TRACE,("Called.\n"));
340 
342 
343  /* Must be NonpagedPool because by definition we're at DISPATCH_LEVEL */
345 
346  if(!Memory)
347  {
348  NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources\n"));
349  return NDIS_STATUS_FAILURE;
350  }
351 
352  Memory->AdapterObject = Adapter->NdisMiniportBlock.SystemAdapterObject;
353  Memory->Length = Length;
354  Memory->Cached = Cached;
355  Memory->Adapter = &Adapter->NdisMiniportBlock;
356  Memory->Context = Context;
357 
359  if (!Memory->WorkItem)
360  {
361  NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources\n"));
363  return NDIS_STATUS_FAILURE;
364  }
365 
366  IoQueueWorkItem(Memory->WorkItem,
369  Memory);
370 
371  return NDIS_STATUS_PENDING;
372 }
#define KeGetCurrentIrql()
Definition: env_spec_w32.h:706
#define NDIS_STATUS_PENDING
Definition: ndis.h:347
_In_ NDIS_HANDLE MiniportAdapterHandle
Definition: ndis.h:4668
static ULONGLONG Memory
Definition: CcMapData_drv.c:35
_In_ ULONG _In_ BOOLEAN Cached
Definition: ndis.h:3788
PIO_WORKITEM NTAPI IoAllocateWorkItem(IN PDEVICE_OBJECT DeviceObject)
Definition: iowork.c:75
VOID NTAPI NdisMAllocateSharedMemoryPassive(PDEVICE_OBJECT DeviceObject, PVOID Context)
Definition: memory.c:295
NDIS_MINIPORT_BLOCK NdisMiniportBlock
Definition: miniport.h:89
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
struct _LOGICAL_ADAPTER * PLOGICAL_ADAPTER
#define ExAllocatePool(type, size)
Definition: fbtusb.h:44
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
VOID NTAPI IoQueueWorkItem(IN PIO_WORKITEM IoWorkItem, IN PIO_WORKITEM_ROUTINE WorkerRoutine, IN WORK_QUEUE_TYPE QueueType, IN PVOID Context)
Definition: iowork.c:40
#define MAX_TRACE
Definition: debug.h:16
PDEVICE_OBJECT DeviceObject
Definition: ndis.h:2552
#define NDIS_DbgPrint(_t_, _x_)
Definition: debug.h:40
struct tagContext Context
Definition: acpixf.h:1012
#define MIN_TRACE
Definition: debug.h:14
#define NDIS_STATUS_FAILURE
Definition: ndis.h:465
#define ExFreePool(addr)
Definition: env_spec_w32.h:352

◆ NdisMAllocateSharedMemoryPassive()

VOID NTAPI NdisMAllocateSharedMemoryPassive ( PDEVICE_OBJECT  DeviceObject,
PVOID  Context 
)

Definition at line 295 of file memory.c.

305 {
307 
308  NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
309 
311 
312  Memory->VirtualAddress = Memory->AdapterObject->DmaOperations->AllocateCommonBuffer(
313  Memory->AdapterObject, Memory->Length, &Memory->PhysicalAddress, Memory->Cached);
314 
315  if (Memory->Adapter->DriverHandle->MiniportCharacteristics.AllocateCompleteHandler)
316  Memory->Adapter->DriverHandle->MiniportCharacteristics.AllocateCompleteHandler(
317  Memory->Adapter->MiniportAdapterContext, Memory->VirtualAddress,
318  &Memory->PhysicalAddress, Memory->Length, Memory->Context);
319 
320  IoFreeWorkItem(Memory->WorkItem);
322 }
#define KeGetCurrentIrql()
Definition: env_spec_w32.h:706
static ULONGLONG Memory
Definition: CcMapData_drv.c:35
VOID NTAPI IoFreeWorkItem(IN PIO_WORKITEM IoWorkItem)
Definition: iowork.c:64
struct _MINIPORT_SHARED_MEMORY * PMINIPORT_SHARED_MEMORY
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
#define MAX_TRACE
Definition: debug.h:16
#define NDIS_DbgPrint(_t_, _x_)
Definition: debug.h:40
#define ExFreePool(addr)
Definition: env_spec_w32.h:352

Referenced by NdisMAllocateSharedMemoryAsync().

◆ NdisMFreeSharedMemory()

VOID EXPORT NdisMFreeSharedMemory ( IN NDIS_HANDLE  MiniportAdapterHandle,
IN ULONG  Length,
IN BOOLEAN  Cached,
IN PVOID  VirtualAddress,
IN NDIS_PHYSICAL_ADDRESS  PhysicalAddress 
)

Definition at line 215 of file memory.c.

233 {
236  PDMA_ADAPTER DmaAdapter = Adapter->NdisMiniportBlock.SystemAdapterObject;
237 
238  NDIS_DbgPrint(MAX_TRACE,("Called.\n"));
239 
241 
242  /* Call FreeCommonBuffer synchronously if we are at PASSIVE_LEVEL */
244  {
245  /* We need this case because we free shared memory asynchronously
246  * and the miniport (and DMA adapter object) could be freed before
247  * our work item executes. Lucky for us, the scenarios where the
248  * freeing needs to be synchronous (failed init, MiniportHalt,
249  * and driver unload) are all at PASSIVE_LEVEL so we can just
250  * call FreeCommonBuffer synchronously and not have to worry
251  * about the miniport falling out from under us */
252 
253  NDIS_DbgPrint(MID_TRACE,("Freeing shared memory synchronously\n"));
254 
255  DmaAdapter->DmaOperations->FreeCommonBuffer(DmaAdapter,
256  Length,
259  Cached);
260  return;
261  }
262 
263  /* Must be NonpagedPool because by definition we're at DISPATCH_LEVEL */
265 
266  if(!Memory)
267  {
268  NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources\n"));
269  return;
270  }
271 
272  Memory->AdapterObject = Adapter->NdisMiniportBlock.SystemAdapterObject;
273  Memory->Length = Length;
274  Memory->PhysicalAddress = PhysicalAddress;
275  Memory->VirtualAddress = VirtualAddress;
276  Memory->Cached = Cached;
277  Memory->Adapter = &Adapter->NdisMiniportBlock;
278 
280  if (!Memory->WorkItem)
281  {
282  NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources\n"));
284  return;
285  }
286 
287  IoQueueWorkItem(Memory->WorkItem,
290  Memory);
291 }
#define KeGetCurrentIrql()
Definition: env_spec_w32.h:706
#define MID_TRACE
Definition: debug.h:15
_In_ NDIS_HANDLE MiniportAdapterHandle
Definition: ndis.h:4668
static ULONGLONG Memory
Definition: CcMapData_drv.c:35
_In_ ULONG _In_ BOOLEAN Cached
Definition: ndis.h:3788
PIO_WORKITEM NTAPI IoAllocateWorkItem(IN PDEVICE_OBJECT DeviceObject)
Definition: iowork.c:75
struct _DMA_OPERATIONS * DmaOperations
Definition: iotypes.h:2186
NDIS_MINIPORT_BLOCK NdisMiniportBlock
Definition: miniport.h:89
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
Definition: iotypes.h:1060
struct _LOGICAL_ADAPTER * PLOGICAL_ADAPTER
#define ExAllocatePool(type, size)
Definition: fbtusb.h:44
_In_ ULONG _In_ BOOLEAN _Must_inspect_result_ PVOID * VirtualAddress
Definition: ndis.h:3791
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
VOID NTAPI IoQueueWorkItem(IN PIO_WORKITEM IoWorkItem, IN PIO_WORKITEM_ROUTINE WorkerRoutine, IN WORK_QUEUE_TYPE QueueType, IN PVOID Context)
Definition: iowork.c:40
#define MAX_TRACE
Definition: debug.h:16
PDEVICE_OBJECT DeviceObject
Definition: ndis.h:2552
VOID NTAPI NdisMFreeSharedMemoryPassive(PDEVICE_OBJECT DeviceObject, PVOID Context)
Definition: memory.c:185
#define NDIS_DbgPrint(_t_, _x_)
Definition: debug.h:40
#define MIN_TRACE
Definition: debug.h:14
#define ExFreePool(addr)
Definition: env_spec_w32.h:352

Referenced by MiFreeSharedMemory(), MiniportHalt(), NdisFreeSharedMemory(), and NICReleaseIoResources().

◆ NdisMFreeSharedMemoryPassive()

VOID NTAPI NdisMFreeSharedMemoryPassive ( PDEVICE_OBJECT  DeviceObject,
PVOID  Context 
)

Definition at line 185 of file memory.c.

195 {
197 
198  NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
199 
201 
202  Memory->AdapterObject->DmaOperations->FreeCommonBuffer(
203  Memory->AdapterObject, Memory->Length, Memory->PhysicalAddress,
204  Memory->VirtualAddress, Memory->Cached);
205 
206  IoFreeWorkItem(Memory->WorkItem);
208 }
#define KeGetCurrentIrql()
Definition: env_spec_w32.h:706
static ULONGLONG Memory
Definition: CcMapData_drv.c:35
VOID NTAPI IoFreeWorkItem(IN PIO_WORKITEM IoWorkItem)
Definition: iowork.c:64
struct _MINIPORT_SHARED_MEMORY * PMINIPORT_SHARED_MEMORY
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
#define MAX_TRACE
Definition: debug.h:16
#define NDIS_DbgPrint(_t_, _x_)
Definition: debug.h:40
#define ExFreePool(addr)
Definition: env_spec_w32.h:352

Referenced by NdisMFreeSharedMemory().