Функция 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. Задайте элемент типа структуры, заголовка, указывает NDIS_OBJECT_TYPE_DEFAULT, элемент редакции NET_BUFFER_POOL_PARAMETERS_REVISION_1 и член размера 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 (include ndis.h) |
библиотеки | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
правил соответствия DDI | Irql_NetBuffer_Function(ndis), NdisAllocateNetBufferPool(ndis), NdisAllocateNetBufferPool_InitFail(ndis) |