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

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

Синтаксис

NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisRetreatNetBufferListDataStart(
  [in]           NET_BUFFER_LIST         *NetBufferList,
  [in]           ULONG                   DataOffsetDelta,
  [in]           ULONG                   DataBackFill,
  [in, optional] NET_BUFFER_ALLOCATE_MDL *AllocateMdlHandler,
  [in, optional] NET_BUFFER_FREE_MDL     *FreeMdlHandler
);

Параметры

[in] NetBufferList

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

[in] DataOffsetDelta

Объем дополнительного используемого пространства данных в каждой NET_BUFFER структуре. Если недостаточно неиспользуемого пространства данных для удовлетворения запроса, NDIS выделяет больше памяти.

[in] DataBackFill

Если NDIS необходимо выделить память, этот параметр указывает объем пространства данных в дополнение к значению параметра DataOffsetDelta для выделения.

[in, optional] AllocateMdlHandler

Необязательная точка входа для функции NetAllocateMdl . Если вызывающий объект задает точку входа для функции NetAllocateMdl , NDIS вызывает NetAllocateMdl для выделения MDL и памяти.

[in, optional] FreeMdlHandler

Необязательная точка входа для функции NetFreeMdl . Если вызывающий объект указывает точку входа для функции NetFreeMdl , NDIS вызывает NetFreeMdl для освобождения MDL и памяти.

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

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

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

Комментарии

Вызов NdisRetreatNetBufferListDataStart эквивалентен вызовуФункция NdisRetreatNetBufferDataStart для каждой структуры NET_BUFFER в структуре NET_BUFFER_LIST. NdisRetreatNetBufferListDataStart пытается удовлетворить запрос, уменьшая значение элемента DataOffset в каждой NET_BUFFER структуре. Если доступно недостаточно неиспользуемого пространства данных , эта функция выделяет новый буфер и MDL, а затем приковывает новый MDL к началу цепочки MDL в структуре NET_BUFFER.

ВызовитеФункция NdisAdvanceNetBufferListDataStart для освобождения пространства данных, которое было заявлено в предыдущем вызове NdisRetreatNetBufferListDataStart. Кроме того, драйвер может вызватьФункция NdisAdvanceNetBufferDataStart для каждой NET_BUFFER структуры NET_BUFFER_LIST. Вызов NdisAdvanceNetBufferListDataStart более эффективен.

Требования

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

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

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart NdisAdvanceNetBufferListDataStart NdisRetreatNetBufferDataStart

NetAllocateMdl

NetFreeMdl