Функция 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 возвращает одно из следующих элементов:
Код возврата | Описание |
---|---|
|
NdisRetreatNetBufferDataStart успешно выделяет используемое пространство данных либо с помощью неиспользуемого пространства данных , либо путем выделения нового хранилища. |
|
Сбой запуска NdisRetreatNetBufferDataStart из-за нехватки ресурсов. |
|
Сбой 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) |