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


Функция FwpsAllocateDeepCloneNetBufferList0 (fwpsk.h)

Функция FwpsAllocateDeepCloneNetBufferList0 выделяет NET_BUFFER_LIST структуру, которая является глубоким клоном существующей структуры NET_BUFFER_LIST.

Синтаксис

NTSTATUS FwpsAllocateDeepCloneNetBufferList0(
  [in, out]      NET_BUFFER_LIST *originalNetBufferList,
  [in, optional] NDIS_HANDLE     netBufferListPoolHandle,
  [in, optional] NDIS_HANDLE     netBufferPoolHandle,
  [out]          NET_BUFFER_LIST **netBufferList
);

Параметры

[in, out] originalNetBufferList

Указатель на исходную NET_BUFFER_LIST структуру, клонированную.

[in, optional] netBufferListPoolHandle

Дескриптор пула NET_BUFFER_LIST, полученный из предыдущего вызова функции NdisAllocateNetBufferListPool. Этот параметр является необязательным и может быть null.

[in, optional] netBufferPoolHandle

Дескриптор пула NET_BUFFER_LIST, полученный из предыдущего вызова функции NdisAllocateNetBufferPool. Этот параметр является необязательным и может быть null.

[out] netBufferList

Указатель на переменную, которая получает указатель на глубокую NET_BUFFER_LIST структуру.

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

Функция FwpsAllocateDeepCloneNetBufferList 0 возвращает один из следующих кодов NTSTATUS.

Возвращаемый код Описание
STATUS_SUCCESS Глубокая клонирование NET_BUFFER_LIST структура успешно выделена.
Другие коды состояния Произошла ошибка.

Замечания

Драйвер выноски вызывает функцию FwpsAllocateDeepCloneNetBufferList0 для выделения глубокой NET_BUFFER_LIST структуры существующей NET_BUFFER_LIST структуры.

Эта функция представляет собой оболочку вокруг функции NdisAllocateCloneNetBufferList, но она специализирована для использования функциями внедрения пакетов ВПП .

Если структура глубокого клона NET_BUFFER_LIST должна иметь атрибуты, связанные с определенным пулом, драйвер выноски должен указать дескриптор пула в параметре NetBufferListPoolHandle или NetBufferPoolHandle. Если эти параметры null, используется пул по умолчанию, предварительно выделенный NDIS.

Структура глубокого клона NET_BUFFER_LIST описывает те же данные, которые описаны исходной структурой NET_BUFFER_LIST. Функция FwpsAllocateDeepCloneNetBufferList0 копирует данные, описанные исходными mdls, в новые буферы данных. Структура клонирования NET_BUFFER_LIST включает начальную NET_BUFFER_LIST_CONTEXT структуру.

Эта функция задает элемент ParentNetBufferList только что созданной структуры клона NET_BUFFER_LIST, чтобы указать на родительскую NET_BUFFER_LIST структуру. Элемент дочерней структуры ChildRefCount увеличивается 1.

Драйвер выноски может изменить структуру клона NET_BUFFER_LIST и внедрить его в сетевой стек вместо исходной структуры NET_BUFFER_LIST путем вызова функций внедрения пакетов . После успешного внедрения данных, описанных в структуре клона NET_BUFFER_LIST в сетевом стеке, драйвер выноски освобождает структуру клона NET_BUFFER_LIST путем вызова функции FwpsFreeCloneNetBufferList0.

Драйвер выноски может вставлять или заменять отдельные чистые буферы (NET_BUFFER) или многомерные списки в глубоком клоне NET_BUFFER_LIST. Драйвер должен отменить эти изменения перед вызовом функции FwpsFreeCloneNetBufferList 0.

Рекомендации по управлению клонированных пакетов

Драйвер выноски не должен содержать клонированные пакеты неограниченное время. Клонированные пакеты могут препятствовать операциям управления питанием на неактивном компьютере.

Предназначено для глубоких клонированных пакетов в МПП, чтобы получить уточнение от приложения в пользовательском режиме или другой относительно быстрой операции, которая нуждается в пакете независимо от исходного. Драйвер выноски не должен содержать клонированные пакеты во время ожидания ввода пользователем, разрешения веб-службы или любой другой операции, которая может занять произвольное время.

Драйверы выноски должны всегда возвращать удерживаемые пакеты как можно быстрее.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Сборка WIP 25324
целевая платформа Всеобщий
заголовка fwpsk.h (include Fwpsk.h)
библиотеки Fwpkclnt.lib
IRQL <= DISPATCH_LEVEL

См. также

FwpsFreeCloneNetBufferList0

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

функции внедрения пакетов