Функция 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 (включая Fwpsk.h) |
Библиотека | Fwpkclnt.lib |
IRQL | <= DISPATCH_LEVEL |