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