Функция 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) |