Функция FwpsAllocateCloneNetBufferList0 (fwpsk.h)
Функция FwpsAllocateCloneNetBufferList0 выделяет NET_BUFFER_LIST структуру, которая является клоном существующей структуры NET_BUFFER_LIST.
Синтаксис
NTSTATUS FwpsAllocateCloneNetBufferList0(
[in, out] NET_BUFFER_LIST *originalNetBufferList,
[in, optional] NDIS_HANDLE netBufferListPoolHandle,
[in, optional] NDIS_HANDLE netBufferPoolHandle,
[in] ULONG allocateCloneFlags,
[out] NET_BUFFER_LIST **netBufferList
);
Параметры
[in, out] originalNetBufferList
Указатель на исходную структуру NET_BUFFER_LIST, клонированную.
[in, optional] netBufferListPoolHandle
Дескриптор пула NET_BUFFER_LIST, полученный из предыдущего вызова функция NdisAllocateNetBufferListPool. Этот параметр является необязательным и может быть null.
[in, optional] netBufferPoolHandle
Дескриптор пула NET_BUFFER, полученный из предыдущего вызова функции NdisAllocateNetBufferPool. Этот параметр является необязательным и может быть null.
[in] allocateCloneFlags
В настоящее время для этой функции нет флагов. Драйверы выноски должны задать этот параметр равным нулю.
[out] netBufferList
Указатель на переменную, которая получает указатель на структуру клона NET_BUFFER_LIST.
Возвращаемое значение
Функция FwpsAllocateCloneNetBufferList0 возвращает один из следующих кодов NTSTATUS.
Возвращаемый код | Описание |
---|---|
|
Клонирование NET_BUFFER_LIST структуры успешно выделено. |
|
Произошла ошибка. |
Замечания
Драйвер выноски вызывает функцию FwpsAllocateCloneNetBufferList0 для выделения клона NET_BUFFER_LIST структуры существующей NET_BUFFER_LIST структуры.
Эта функция является оболочкой вокруг функция NdisAllocateCloneNetBufferList, но она специализирована для использования функциями внедрения пакетов ВПП .
Если структура клона NET_BUFFER_LIST должна иметь атрибуты, связанные с определенным пулом, драйвер выноски должен указать дескриптор пула в параметре NetBufferListPoolHandle или NetBufferPoolHandle. Если эти параметры null, используется пул по умолчанию, предварительно выделенный NDIS.
Структура клонирования NET_BUFFER_LIST описывает те же данные, которые описаны исходной структурой NET_BUFFER_LIST. Функция FwpsAllocateCloneNetBufferList0 не копирует данные, описанные в исходных многомерных выражениях, в новые буферы данных. Вместо этого клон NET_BUFFER_LIST структура ссылается на исходные буферы данных. Структура клонирования 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) или многомерные списки в списке клоновых чистых буферов. Перед вызовом такого драйвера необходимо отменить изменения. функцию FwpsFreeCloneNetBufferList0.
рекомендации по управлению клонированных пакетов
Драйвер выноски не должен содержать клонированные пакеты неограниченное время. Клонированные пакеты могут препятствовать операциям управления питанием на неактивном компьютере.Предназначено для клонированных пакетов в МПП, чтобы получить уточнение от приложения в режиме пользователя или другой относительно быстрой операции. Драйвер выноски не должен содержать клонированные пакеты, например ожидание ввода пользователем или ожидание разрешения веб-службы или ожидание любой другой операции, которая может занять произвольное время.
Если драйвер выноски должен ждать потенциально длительной операции, она создает глубокую копию пакета с помощью FwpsAllocateNetBufferAndNetBufferList0, и он блокирует и поглощает исходный пакет.
Драйверы выноски должны всегда возвращать удерживаемые пакеты как можно быстрее.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows Vista. |
целевая платформа | Всеобщий |
заголовка | fwpsk.h (include Fwpsk.h) |
библиотеки | Fwpkclnt.lib |
IRQL | <= DISPATCH_LEVEL |