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


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

Вызовите функцию NdisAllocateReassembledNetBufferList, чтобы повторно собрать фрагментированную структуру NET_BUFFER_LIST.

Синтаксис

NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateReassembledNetBufferList(
                 NET_BUFFER_LIST *FragmentNetBufferList,
  [in, optional] NDIS_HANDLE     NetBufferAndNetBufferListPoolHandle,
  [in]           ULONG           StartOffset,
  [in]           ULONG           DataOffsetDelta,
  [in]           ULONG           DataBackFill,
  [in]           ULONG           AllocateReassembleFlags
);

Параметры

FragmentNetBufferList

Указатель на структуру NET_BUFFER_LIST для повторного выполнения.

[in, optional] NetBufferAndNetBufferListPoolHandle

Дескриптор пула структуры NET_BUFFER_LIST, который ранее был возвращен из функция NdisAllocateNetBufferListPool. Элемент fAllocateNetBuffer структуры NET_BUFFER_LIST_POOL_PARAMETERS, который вызывающий объект передал NdisAllocateNetBufferListPool, должен иметь значение TRUE, а элемент DataSize имеет значение нулю. Если этот параметр NULL, NDIS использует внутренний пул.

[in] StartOffset

Объем данных, пропускаемых в начале каждой исходной NET_BUFFER структуры. Эта сумма в дополнение к значению, указанному в элементе DataOffset структуры NET_BUFFER.

[in] DataOffsetDelta

Количество байтов используемого пространства данных для добавления в структуру повторной сборки NET_BUFFER.

[in] DataBackFill

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

[in] AllocateReassembleFlags

Флаги NDIS, которые можно объединить с операцией OR. Задайте для этого параметра значение нулю. В настоящее время для этой функции нет флагов.

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

Если операция повторного выполнения выполнена, NdisAllocateReassembledNetBufferList возвращает повторное NET_BUFFER_LIST структуру. Если операция завершается ошибкой, она возвращает NULL.

Замечания

NdisAllocateReassembledNetBufferList выделяет, инициализирует и возвращает новую структуру NET_BUFFER_LIST, которая включает одну структуру NET_BUFFER и одну цепочку MDL. Новая структура NET_BUFFER_LIST описывает те же данные, что и фрагментированные исходные NET_BUFFER_LIST структуры, переданные драйвером в FragmentedNetBufferList. После пропуска числа байтов, указанных в StartOffset в каждой фрагментированной структуре NET_BUFFER, NDIS объединяет оставшиеся данные в каждой фрагментированной NET_BUFFER структуре в одну перезачисленную NET_BUFFER структуру. Переустановленные NET_BUFFER_LIST структуры не включают инициал NET_BUFFER_LIST_CONTEXT структура.

Вызов функция NdisFreeReassembledNetBufferList для освобождения повторной NET_BUFFER_LIST структуры и всех связанных структур NET_BUFFER и цепей MDL.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Поддерживается в NDIS 6.0 и более поздних версиях.
целевая платформа Всеобщий
заголовка ndis/nblapi.h (include ndis.h)
библиотеки Ndis.lib
IRQL <= DISPATCH_LEVEL
правил соответствия DDI Irql_NetBuffer_Function(ndis), NdisAllocateReassembledNetBufferList(ndis), NdisAllocateReassembledNetBufferList_InitFail(ndis)

См. также

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NET_BUFFER_LIST_POOL_PARAMETERS

NdisAllocateNetBufferListPool NdisFreeReassembledNetBufferList