Функция NdisAllocateNetBufferPool (ndis/nblapi.h)
Вызовите функцию NdisAllocateNetBufferPool , чтобы выделить пул NET_BUFFER структур.
Синтаксис
NDIS_EXPORTED_ROUTINE NDIS_HANDLE NdisAllocateNetBufferPool(
[in, optional] NDIS_HANDLE NdisHandle,
[in] NET_BUFFER_POOL_PARAMETERS const *Parameters
);
Параметры
[in, optional] NdisHandle
Дескриптор NDIS, полученный во время инициализации вызывающего объекта.
[in] Parameters
Указатель на структуру NET_BUFFER_POOL_PARAMETERS, которая определяет параметры для пула. Структура определяется следующим образом:
typedef struct _NET_BUFFER_POOL_PARAMETERS {
NDIS_OBJECT_HEADER Header;
ULONG PoolTag;
ULONG DataSize;
} NET_BUFFER_POOL_PARAMETERS, *PNET_BUFFER_POOL_PARAMETERS;
Эта структура включает следующие элементы:
Заголовок
Структура NDIS_OBJECT_HEADER для структуры NET_BUFFER_POOL_PARAMETERS. Задайте для элемента Type структуры, указанной в заголовке , значение NDIS_OBJECT_TYPE_DEFAULT, для элемента Revision — NET_BUFFER_POOL_PARAMETERS_REVISION_1, а для элемента Size — значение NDIS_SIZEOF_NET_BUFFER_POOL_PARAMETERS_REVISION_1.
PoolTag
Тег пула ядра, который вызывающий объект использует при выделении NET_BUFFER структур из этого пула. Тег — это строка, разделенная одиночными кавычками и длиной до четырех символов, обычно указанная в обратном порядке. Тег пула ядра помогает NDIS определить владельца NET_BUFFER структур, выделенных из этого пула.
DataSize
Размер данных по умолчанию для буферов данных, связанных с этим пулом. Вызывающий объект должен задать это значение, если вызываетФункция NdisAllocateNetBufferMdlAndData. NDIS использует это значение, чтобы задать размер буфера данных, выделяемого для структуры NET_BUFFER. Если вызывающий объект не использует эту функцию, это значение должно быть равно нулю.
Возвращаемое значение
NdisAllocateNetBufferPool возвращает дескриптор в пул структуры NET_BUFFER, выделенный NDIS. Если выделение не удалось, этот дескриптор имеет значение NULL. Этот дескриптор является обязательным параметром в последующих вызовах функций NDIS, которые выделяют и освобождают структуры NET_BUFFER из этого пула.
Комментарии
Вызовите следующие функции для выделения NET_BUFFER структур из пула NET_BUFFER структур.
NdisAllocateNetBufferMdlAndDataMDL и буферы данных, выделенные с помощью NdisAllocateNetBufferMdlAndData , не должны освобождаться отдельно от структуры NET_BUFFER. Такие структуры освобождаются с помощью структуры NET_BUFFER при вызове функции NdisFreeNetBuffer .
Вызовите функцию NdisFreeNetBufferPool , чтобы освободить пулы структуры NET_BUFFER, созданные с помощью NdisAllocateNetBufferPool.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается в NDIS 6.0 и более поздних версиях. |
Целевая платформа | Универсальное |
Верхняя часть | ndis/nblapi.h (включая ndis.h) |
Библиотека | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Правила соответствия DDI | Irql_NetBuffer_Function(ndis), NdisAllocateNetBufferPool(ndis), NdisAllocateNetBufferPool_InitFail(ndis) |