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


функция обратного вызова FWPS_CALLOUT_CLASSIFY_FN2 (fwpsk.h)

Подсистема фильтрации вызывает функцию выноски классифицироватьFn2 при каждом обработке данных выноской.

ПримечаниеклассифицироватьFn2 является конкретной версией классифицироватьFn, используемой в Windows 8 и более поздних версиях. Дополнительные сведения см. в статье МПП Version-Independent имен и целевых версий Windows. Для Windows 7 доступен классифицироватьFn1. Для Windows Vista доступна классификацияFn0.

 

Синтаксис

FWPS_CALLOUT_CLASSIFY_FN2 FwpsCalloutClassifyFn2;

void FwpsCalloutClassifyFn2(
  [in]                const FWPS_INCOMING_VALUES0 *inFixedValues,
  [in]                const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues,
  [in, out, optional] void *layerData,
  [in, optional]      const void *classifyContext,
  [in]                const FWPS_FILTER2 *filter,
  [in]                UINT64 flowContext,
  [in, out]           FWPS_CLASSIFY_OUT0 *classifyOut
)
{...}

Параметры

[in] inFixedValues

Указатель на структуру FWPS_INCOMING_VALUES0. Эта структура содержит значения для каждого поля данных в фильтруемом слое.

[in] inMetaValues

Указатель на объект структура FWPS_INCOMING_METADATA_VALUES0. Эта структура содержит значения для каждого поля метаданных в фильтруемом слое.

[in, out, optional] layerData

Указатель на структуру, описывающую необработанные данные в фильтруемом слое. Этот параметр может иметь значение NULL в зависимости от от отфильтрованного слоя и условий, в которых вызывается функция выноски классифицируемойFn2. Для слоя потока этот параметр указывает на FWPS_STREAM_CALLOUT_IO_PACKET0 структура. Для всех остальных слоев этот параметр указывает на структуру NET_BUFFER_LIST, если она не имеет значения NULL.

[in, optional] classifyContext

Указатель на контекстные данные, связанные с драйвером выноски обработчиком фильтров.

[in] filter

Указатель на структуру FWPS_FILTER2. Эта структура описывает фильтр, указывающий выноску для действия фильтра.

[in] flowContext

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

[in, out] classifyOut

Указатель на структуру FWPS_CLASSIFY_OUT0, которая получает все данные, которые функция вызова классифицируетFn2.

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

Никакой

Замечания

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

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

Функция выноски классифицироватьFn2 должна очистить флаг FWPS_RIGHT_ACTION_WRITE в правах член структуры FWPS_CLASSIFY_OUT0 в любой из следующих ситуаций:

  • Если функция выноски классифицируетFn2, actionType член структуры FWPS_CLASSIFY_OUT0 FWP_ACTION_BLOCK.
  • Если функция выноски classifyFn2 задает элемент actionType структуры FWPS_CLASSIFY_OUT0 FWP_ACTION_PERMIT, а флаг FWPS_FILTER_FLAG_CLEAR_ACTION_RIGHT установлен в элементе Flags структуры FWPS_FILTER2.
  • Когда выноска указала, что она намерена изменить список клона чистого буфера путем установки параметра intendToModify значение TRUE в вызове функцию FwpsReferenceNetBufferList0.

    Эта функция по сути идентична предыдущей версии, классифицироватьFn1. Однако обновленная структура FWPS_FILTER2 указывает на параметр фильтра , а параметр layerData необязателен.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows 8.
целевая платформа Виндоус
заголовка fwpsk.h (include Fwpsk.h)
IRQL <= DISPATCH_LEVEL

См. также

связывание контекста с потоком данных

функций выноски драйвера

ведение журнала данных

FWPS_CLASSIFY_OUT0

FWPS_FILTER2

FWPS_INCOMING_METADATA_VALUES0

FWPS_INCOMING_VALUES0

FwpsCalloutRegister2

FwpsReferenceNetBufferList0

NET_BUFFER_LIST

Пример ы изменения пакетов

регистрации выносок с помощью модуля фильтров

использование выноски для глубокой проверки потоковых данных

использование выноски для глубокой проверки

классифицироватьFn

классифицироватьFn0

классифицироватьFn1