Функция 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_LIST_POOL_PARAMETERS
NdisAllocateNetBufferListPool NdisFreeReassembledNetBufferList