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

Вызовите функцию NdisAllocateCloneNetBufferList , чтобы создать новую структуру клонирования NET_BUFFER_LIST .

Синтаксис

NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateCloneNetBufferList(
  [in]           NET_BUFFER_LIST *OriginalNetBufferList,
  [in, optional] NDIS_HANDLE     NetBufferListPoolHandle,
  [in, optional] NDIS_HANDLE     NetBufferPoolHandle,
  [in]           ULONG           AllocateCloneFlags
);

Параметры

[in] OriginalNetBufferList

Указатель на существующую структуру NET_BUFFER_LIST .

[in, optional] NetBufferListPoolHandle

Дескриптор, полученный при вызове Функция NdisAllocateNetBufferListPool .

[in, optional] NetBufferPoolHandle

Дескриптор пула структуры NET_BUFFER , который ранее был возвращен из вызова NdisAllocateNetBufferPool.

[in] AllocateCloneFlags

Флаги NDIS, которые можно объединить с операцией OR. Определены следующие флаги:

NDIS_CLONE_FLAGS_RESERVED

Зарезервировано для NDIS.

NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS

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

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

NdisAllocateCloneNetBufferList возвращает указатель на новую структуру NET_BUFFER_LIST клона. Если выделение не удалось выполнить, этот указатель имеет значение NULL.

Комментарии

Вызовите NdisAllocateCloneNetBufferList , чтобы создать структуру клонирования NET_BUFFER_LIST , которую можно использовать для отправки повторяющихся данных по отдельному пути к данным.

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

Если клонированная структура NET_BUFFER_LIST должна иметь атрибуты, связанные с заданным пулом, вызывающий объект должен указать дескриптор пула в параметре NetBufferListPoolHandle или NetBufferPoolHandle . Например, член ProtocolTypeструктуры NET_BUFFER_LIST связан с пулом.

Структура клонирования NET_BUFFER_LIST описывает те же данные, которые описаны в структуре NET_BUFFER_LIST в OriginalNetBufferList. NDIS не копирует данные, описанные в исходных многомерных библиотеках, в новые буферы данных. Вместо этого клонированные структуры ссылаются на исходные буферы данных. Структура NET_BUFFER_LIST клонирования не включает начальную структуру NET_BUFFER_LIST_CONTEXT структура.

ВызовитеФункция NdisFreeCloneNetBufferList для освобождения структуры NET_BUFFER_LIST и всех связанных структур и цепочек MDL, выделенных путем вызова NdisAllocateCloneNetBufferList.

Требования

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

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

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeCloneNetBufferList