Функция 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) |