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

Вызовите функцию NdisAllocateNetBufferListContext , чтобы выделить больше контекстного пространства в NET_BUFFER_LIST_CONTEXT структуре объекта

NET_BUFFER_LIST структура.

Синтаксис

NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisAllocateNetBufferListContext(
  [in] NET_BUFFER_LIST *NetBufferList,
  [in] USHORT          ContextSize,
  [in] USHORT          ContextBackFill,
  [in] ULONG           PoolTag
);

Параметры

[in] NetBufferList

Указатель на ранее выделенную NET_BUFFER_LIST структуру.

[in] ContextSize

Объем пространства контекста, выделяемого в структуре NET_BUFFER_LIST_CONTEXT. Это значение должно быть кратно значению, определенному параметром sizeof(void*).

[in] ContextBackFill

Объем памяти в дополнение к значению ContextSize, выделяемой, если NDIS должен выделить память для удовлетворения запроса. Это значение должно быть кратно значению, определенному параметром sizeof(void*).

[in] PoolTag

Тег пула ядра, который NDIS использует для выделения памяти для структуры NET_BUFFER_LIST_CONTEXT, если требуется выделение. Тег — это строка, разделенная одиночными кавычками и длиной до четырех символов, обычно указанная в обратном порядке. Тег пула ядра помогает NDIS определить владельца памяти.

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

NdisAllocateNetBufferListContext возвращает одно из следующих результатов:

Код возврата Описание
NDIS_STATUS_SUCCESS
NdisAllocateNetBufferListContext успешно выделил контекстное пространство путем уменьшения значения члена Offset структуры NET_BUFFER_LIST_CONTEXT или путем выделения новой памяти.
NDIS_STATUS_RESOURCES
Сбой NdisAllocateNetBufferListContext из-за нехватки ресурсов.
NDIS_STATUS_FAILURE
Сбой NdisAllocateNetBufferListContext по другим причинам, кроме нехватки ресурсов.

Комментарии

Если в структуре NET_BUFFER_LIST_CONTEXT достаточно неиспользуемого контекстного пространства для удовлетворения запроса, NdisAllocateNetBufferListContext просто уменьшает значение элемента Offset в структуре NET_BUFFER_LIST_CONTEXT. В противном случае NDIS выделяет новую память для контекстного пространства. Можно указать ContextBackFill , чтобы выделить дополнительную память, чтобы при следующем вызове NdisAllocateNetBufferListContext не нужно было выделять память.

Примечание Пространство контекста всегда выравнивается по размеру sizeof(void*). Это адекватное выравнивание для всех естественных типов, но оно не подходит для типов данных с необычными требованиями к выравниванию, таких как SLIST_ENTRY.

ВызовитеФункция NdisFreeNetBufferListContext для освобождения контекстного пространства в структуре NET_BUFFER_LIST_CONTEXT, выделенной с помощью NdisAllocateNetBufferListContext.

Требования

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

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

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisFreeNetBufferListContext