Поделиться через


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

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

Синтаксис

NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisRetreatNetBufferDataStart(
  [in]           NET_BUFFER              *NetBuffer,
  [in]           ULONG                   DataOffsetDelta,
  [in]           ULONG                   DataBackFill,
  [in, optional] NET_BUFFER_ALLOCATE_MDL *AllocateMdlHandler
);

Параметры

[in] NetBuffer

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

[in] DataOffsetDelta

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

[in] DataBackFill

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

[in, optional] AllocateMdlHandler

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

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

NdisRetreatNetBufferDataStart возвращает одно из следующих элементов:

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

Комментарии

NdisRetreatNetBufferDataStart пытается удовлетворить запрос, уменьшая значение элемента DataOffsetструктуры NET_BUFFER .

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

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

Требования

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

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

NET_BUFFER

NdisAdvanceNetBufferDataStart

NetAllocateMdl