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


Функция 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 (include ndis.h)
библиотеки Ndis.lib
IRQL <= DISPATCH_LEVEL
правил соответствия DDI Irql_NetBuffer_Function(ndis)

См. также

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart NdisAdvanceNetBufferListDataStart NdisRetreatNetBufferDataStart

NetAllocateMdl

NetFreeMdl