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


структура FWPS_CALLOUT2 (fwpsk.h)

Структура FWPS_CALLOUT2 определяет данные, необходимые драйверу выноски для регистрации выноски в обработчике фильтров.

Обратите внимание, FWPS_CALLOUT2 — это конкретная версия FWPS_CALLOUT, используемая в Windows 8 и более поздних версиях. Дополнительные сведения см. в разделах ИМЕНА Version-Independent ВПП и Выбор конкретных версий Windows . Для Windows 7 доступно FWPS_CALLOUT1 . Для Windows Vista доступно FWPS_CALLOUT0 .

 

Синтаксис

typedef struct FWPS_CALLOUT2_ {
  GUID                                calloutKey;
  UINT32                              flags;
  FWPS_CALLOUT_CLASSIFY_FN2           classifyFn;
  FWPS_CALLOUT_NOTIFY_FN2             notifyFn;
  FWPS_CALLOUT_FLOW_DELETE_NOTIFY_FN0 flowDeleteFn;
} FWPS_CALLOUT2;

Члены

calloutKey

Guid, определяемый драйвером выноски, который однозначно идентифицирует выноску.

flags

Флаги, указывающие параметры выноски. Возможные флаги:

Значение Значение
FWP_CALLOUT_FLAG_CONDITIONAL_ON_FLOW
0x00000001
Драйвер выноски может указать этот флаг при регистрации выноски, которая будет добавлена на уровне, поддерживающем потоки данных. Если этот флаг указан, обработчик фильтров вызывает функцию выноски classifyFn2 драйвера выноски только при наличии контекста, связанного с потоком данных. Драйвер выноски связывает контекст с потоком данных, вызывая функцию FwpsFlowAssociateContext0 .
FWP_CALLOUT_FLAG_ALLOW_OFFLOAD
0x00000002
Драйвер выноски задает этот флаг, чтобы указать, что функция выноски classifyFn2 драйвера выноски не затрагивается путем разгрузки обработки сетевых данных для сетевых карт с поддержкой разгрузки. Если этот флаг не указан, разгрузка обработки сетевых данных отключается для всего трафика, обрабатываемого фильтрами, задающими выноску для действия фильтра.
FWP_CALLOUT_FLAG_ENABLE_COMMIT_ADD_NOTIFY
0x00000004
Драйвер выноски задает этот флаг, чтобы указать, что он может получать уведомления об объектах и фильтрах, добавленных в транзакцию. Подсистема фильтрации отправляет уведомление после фиксации транзакции.
FWP_CALLOUT_FLAG_ALLOW_MID_STREAM_INSPECTION
0x00000008
Драйвер выноски задает этот флаг, чтобы указать, что он может выполнять динамическую проверку потоков данных на уровне потока. См. Stream Инспекция.
FWP_CALLOUT_FLAG_ALLOW_RECLASSIFY
0x00000010
Драйвер выноски указывает этот флаг для регистрации для вызова при переклассифицировании существующей операции сокета.
FWP_CALLOUT_FLAG_RESERVED1
0x00000020
Зарезервировано для системного использования. Драйверы выносок должны игнорировать этот флаг.
FWP_CALLOUT_FLAG_ALLOW_RSC
0x00000040
Драйвер выноски задает этот флаг, чтобы указать, что выноска поддерживает объединение сегментов приема TCP (RSC) с большими пакетами размером до 64 КБ. Если этот флаг не указан и выноска зарегистрирована, RSC отключается для всего трафика, обрабатываемого фильтрами, которые указывают выноску для действия фильтра.
FWP_CALLOUT_FLAG_ALLOW_L2_BATCH_CLASSIFY
0x00000080
Драйвер выноски задает этот флаг при регистрации выноски, которая будет добавлена на уровне 2, чтобы указать, что его функция выноски classifyFn2 может классифицировать несколько цепочек NET_BUFFER_LIST структур. Дополнительные сведения см. в разделе Использование фильтрации уровня 2.
Внимание!  

Если драйвер выноски устанавливает этот флаг, он не может использовать следующие функции для изменения NET_BUFFER_LISTs.

Если этот флаг установлен, FwpsAllocateCloneNetBufferList0 всегда будет возвращать ошибку INVALID_PARAMETER . Это может неожиданно привести к тому, что сторонний драйвер выноски не сможет управлять количеством ссылок NET_BUFFER_LISTs, что приведет к остановке операций отправки и получения.

FWP_CALLOUT_FLAG_ALLOW_USO
0x00000100
Драйвер выноски задает этот флаг, чтобы указать, что выноска поддерживает разгрузку сегментации UDP (USO) с пакетами, превышающими MTU сетевого носителя. Если этот флаг не указан и выноска зарегистрирована, uso отключается для всего трафика, обрабатываемого любыми фильтрами, задающими выноску для действия фильтра. Примечание: Самая ранняя версия, в которой поддерживается этот флаг, — Windows Insider Preview версии 10.0.25876.
FWP_CALLOUT_FLAG_ALLOW_URO
0x00000200
Драйвер выноски задает этот флаг, чтобы указать, что выноска поддерживает разгрузку приема UDP (URO) с большими пакетами размером до 64 КБ. Если этот флаг не указан и выноска зарегистрирована, то URO отключается для всего трафика, обрабатываемого любыми фильтрами, задающими выноску для действия фильтра. Примечание: Если этот флаг указан, выноски не должны клонировать и повторно пересылать входящие пакеты URO.

classifyFn

Указатель на функцию выноски classifyFn2 драйвера выноски. Подсистема фильтрации вызывает эту функцию всякий раз, когда есть сетевые данные для обработки выноской.

notifyFn

Указатель на функцию notifyFn2 драйвера выноски. Обработчик фильтров вызывает эту функцию для уведомления драйвера выноски о событиях, связанных с выноской.

flowDeleteFn

Указатель на функцию выноски flowDeleteFn драйвера выноски. Подсистема фильтрации вызывает эту функцию всякий раз, когда поток данных, обрабатываемый выноской, завершается.

Если драйвер выноски не связывает контекст с потоками данных, которые обрабатывает выноска, этот элемент должен иметь значение NULL.

Комментарии

Драйвер выноски передает указатель на инициализированную структуру FWPS_CALLOUT2 функцию FwpsCalloutRegister2 при регистрации выноски с помощью обработчика фильтров.

Выноска может установить флаг FWP_CALLOUT_FLAG_CONDITIONAL_ON_FLOW только для подключений, для которых драйвер заинтересован в выполнении проверки потока. Эта выноска будет игнорироваться во всех остальных подключениях. Производительность будет повышена, и драйверу не придется поддерживать ненужные данные о состоянии.

Эта структура по существу идентична предыдущей версии , FWPS_CALLOUT1. Единственное отличие заключается в том, что члены этой версии хранят обновленные версии указателей функции выноски, а дополнительные флаги доступны для установки драйверов выносок.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 8.
Верхняя часть fwpsk.h (включая Fwpsk.h)

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

FWPS_CALLOUT0

FWPS_CALLOUT1

FwpsCalloutRegister2

Использование фильтрации уровня 2

classifyFn2

flowDeleteFn

notifyFn2