Функция NdisFreeMemory (ndis.h)

Функция NdisFreeMemory освобождает блок памяти, который ранее был выделен с помощью функции NdisAllocateMemoryWithTagPriority .

Синтаксис

void NdisFreeMemory(
  [in] PVOID VirtualAddress,
  [in] UINT  Length,
  [in] UINT  MemoryFlags
);

Параметры

[in] VirtualAddress

Указатель на базовый виртуальный адрес выделенной памяти. Этот адрес был возвращен функцией NdisAllocateMemoryWithTagPriority .

[in] Length

Размер блока памяти для освобождения (в байтах). Если память была выделена с помощью NdisAllocateMemoryWithTagPriority или параметр MemoryFlags равен нулю, этот параметр игнорируется.

[in] MemoryFlags

Набор флагов, указывающих тип памяти для освобождения. Это значение должно быть равно нулю, если память была выделена с помощью NdisAllocateMemoryWithTagPriority. В NDIS 6.0 и более поздних версиях NdisAllocateMemoryWithTagPriority всегда используется для выделения памяти.

Возвращаемое значение

None

Remarks

Так как некэшированная память и непрерывная память редко освобождаются до выгрузки драйвера выделяемого мини-порта, вызывающий объект NdisFreeMemory обычно выполняется по адресу IRQL = PASSIVE_LEVEL для этих типов освобождений. В любом случае:

  • При освобождении непрерывной памяти вызывающий объект NdisFreeMemory должен выполняться по адресу IRQL = PASSIVE_LEVEL.
  • При освобождении без кэширования памяти вызывающий объект NdisFreeMemory должен выполняться на < DISPATCH_LEVEL IRQL.
  • При освобождении памяти, которая не является ни непрерывной, ни без кэширования, вызывающий объект NdisFreeMemory должен выполняться в IRQL <= DISPATCH_LEVEL.

Требования

Требование Значение
Минимальная версия клиента Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. раздел NdisFreeMemory (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. раздел NdisFreeMemory (NDIS 5.1)) в Windows XP.
Целевая платформа Универсальное
Верхняя часть ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL См. раздел "Примечания"
Правила соответствия DDI Irql_Miscellaneous_Function(ndis), NdisAllocateMemoryWithTagPriority_Cleanup(ndis), NdisAllocateMemoryWithTagPriority_InitFail(ndis), NdisQueryBindInstanceName(ndis)

См. также раздел

MiniportHaltEx

NdisAllocateMemoryWithTagPriority