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

Функция FwpsPendOperation0 вызывается с помощью выноски для приостановки обработки пакетов до завершения другой операции.

ПримечаниеFwpsPendOperation0 — это определенная версия FwpsPendOperation. Дополнительные сведения см. в разделах Имена Version-Independent и Выбор конкретных версий Windows .
 

Синтаксис

NTSTATUS FwpsPendOperation0(
  [in]  HANDLE completionHandle,
  [out] HANDLE *completionContext
);

Параметры

[in] completionHandle

Дескриптор завершения, необходимый для выполнения текущей операции фильтрации. Этот параметр получается из члена completionHandleструктуры FWPS_INCOMING_METADATA_VALUES0 , переданной в функцию classifyFn драйвера выноски.

[out] completionContext

Дескриптор контекста завершения данной операции выполнения. Когда выноска готова к возобновлению обработки пакетов, она вызывает функцию FwpsCompleteOperation0 со значением этого параметра в качестве входного параметра completionContext .

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

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

Код возврата Описание
STATUS_SUCCESS
Обработка пакетов успешно выполнена.
STATUS_FWP_CANNOT_PEND
Был выполнен вызов FwpsPendOperation0 в операции классификации повторной проверки подлинности. Дополнительные сведения см. в подразделе "Примечания".
STATUS_FWP_NULL_POINTER
Один или несколько параметров недопустимы.
STATUS_FWP_TCPIP_NOT_READY
Сетевой стек TCP/IP не готов разрешить эту операцию.
Другие коды состояния
Произошла ошибка.

Комментарии

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

Выноска может вызывать эту функцию только для отправки пакета, который поступает из слоев фильтрации FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_ Xxx, FWPM_LAYER_ALE_AUTH_LISTEN_ Xxx или FWPM_LAYER_ALE_AUTH_CONNECT_ Xxx. Выноска может выполнять текущую операцию обработки пакета, когда выноска должна выполнять обработку на одном из этих уровней, которая может занять много времени или которая должна выполняться в irQL = PASSIVE_LEVEL, если текущий IRQL > PASSIVE_LEVEL.

Чтобы завершить подключение, которое ранее было установлено на уровне FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_ Xxx , драйвер выноски должен повторно выбрать пакет, который был клонирован на этом уровне, а также вызвать функцию FwpsCompleteOperation0 .

Чтобы иметь возможность выполнять обработку пакетов, функция classifyFn драйвера выноски должна задать элементу actionType структуры FWPS_CLASSIFY_OUT0 значение FWP_ACTION_BLOCK, а члену Flags — FWPS_CLASSIFY_OUT_FLAG_ABSORB.

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

Отложить можно только начальную авторизацию потока ALE, вызвав FwpsPendOperation0 и FwpsCompleteOperation0. Если поток ALE повторно авторизован, устанавливается флаг FWP_CONDITION_FLAG_IS_REAUTHORIZE. Вызов FwpsPendOperation0 из слоев фильтрации FWPM_LAYER_ALE_AUTH_CONNECT_ Xxx или FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_ Xxx завершится ошибкой, если установлен флаг FWP_CONDITION_FLAG_IS_REAUTHORIZE и будет возвращен код состояния STATUS_FWP_CANNOT_PEND. Дополнительные сведения см. в статье Повторная проверка подлинности ALE в Windows SDK.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows Vista.
Целевая платформа Универсальное
Верхняя часть fwpsk.h (включая Fwpsk.h)
Библиотека Fwpkclnt.lib
IRQL <= DISPATCH_LEVEL

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

FWPS_CLASSIFY_OUT0

FWPS_INCOMING_METADATA_VALUES0

FwpsCompleteOperation0

classifyFn