Поделиться через


Функция NdisAllocateNetBufferListPool (ndis/nblapi.h)

Вызовите функцию NdisAllocateNetBufferListPool , чтобы выделить пул NET_BUFFER_LIST структур.

Синтаксис

NDIS_EXPORTED_ROUTINE NDIS_HANDLE NdisAllocateNetBufferListPool(
  [in, optional] NDIS_HANDLE                           NdisHandle,
  [in]           NET_BUFFER_LIST_POOL_PARAMETERS const *Parameters
);

Параметры

[in, optional] NdisHandle

Дескриптор NDIS, полученный во время инициализации вызывающего объекта.

[in] Parameters

Указатель на структуру NET_BUFFER_LIST_POOL_PARAMETERS , которая определяет параметры для пула.

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

NdisAllocateNetBufferListPool возвращает дескриптор в пул структуры NET_BUFFER_LIST, выделенный NDIS. Если выделение не удалось, этот дескриптор имеет значение NULL. Этот дескриптор является обязательным параметром в последующих вызовах функций NDIS, которые выделяют и освобождают структуры NET_BUFFER_LIST из этого пула.

Комментарии

В большинстве случаев вызывающий объект, который выделяет NET_BUFFER_LIST структуру, выделяет и помещает в очередь по крайней мере одну NET_BUFFER структуру в этой NET_BUFFER_LIST структуре. При выделении пула NET_BUFFER_LIST структур эффективнее выделять NET_BUFFER структуры, чем отдельно выделять NET_BUFFER_LIST структуры и NET_BUFFER структуры.

При создании пула структуры NET_BUFFER_LIST можно вызвать функцию NdisAllocateNetBufferNetBuffer с параметром fAllocateNetBuffer. В этом случае предварительно выделяется структура NET_BUFFER с каждой NET_BUFFER_LIST структурой, которую вызывающий объект выделяет из пула. Вы можете вызватьФункция NdisAllocateNetBufferAndNetBufferList илиФункция NdisAllocateNetBufferList для выделения NET_BUFFER_LIST структур из такого пула. Вызовите NdisAllocateNetBufferAndNetBufferList, только если fAllocateNetBuffer имеет значение TRUE, а DataSize равно нулю.

Вы также можете вызвать NdisAllocateNetBufferListPool и задать для элемента DataSize ненулевое значение при создании пула NET_BUFFER_LIST структуры. В этом случае структура NET_BUFFER, MDL и данные предварительно выделяются с каждой NET_BUFFER_LIST структурой, которую вызывающий объект выделяет из пула.

NET_BUFFER структуры, многомерные списки и буферы данных, выделенные с помощью NdisAllocateNetBufferAndNetBufferList или NdisAllocateNetBufferList не следует освобождать отдельно от структуры NET_BUFFER_LIST. Такие структуры освобождаются с помощью структуры NET_BUFFER_LIST при вызове функции NdisFreeNetBufferList .

ВызовитеФункция NdisFreeNetBufferListPool для освобождения пула NET_BUFFER_LIST структуры.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Универсальное
Верхняя часть ndis/nblapi.h (включая ndis.h)
Библиотека Ndis.lib
DLL Ndis.sys
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI Irql_NetBuffer_Function(ndis), NdisAllocateNetBufferListPool(ndis), NdisAllocateNetBufferListPool_InitFail(ndis)

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

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NET_BUFFER_LIST_POOL_PARAMETERS

NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisFreeNetBufferList

NdisFreeNetBufferListPool