Função FwpsPendOperation0 (fwpsk.h)

A função FwpsPendOperation0 é chamada por um texto explicativo para suspender o processamento de pacotes até a conclusão de outra operação.

ObservaçãoFwpsPendOperation0 é uma versão específica do FwpsPendOperation. Consulte Nomes de Version-Independent WFP e Direcionamento de versões específicas do Windows para obter mais informações.
 

Sintaxe

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

Parâmetros

[in] completionHandle

Um identificador de conclusão necessário para aguardar a operação de filtragem atual. Esse parâmetro é obtido do membro completionHandle da estrutura FWPS_INCOMING_METADATA_VALUES0 passada para a função classifyFn do driver de texto explicativo.

[out] completionContext

O identificador para o contexto de conclusão desta operação pendente. Quando o texto explicativo estiver pronto para retomar o processamento de pacotes, ele chamará a função FwpsCompleteOperation0 com o valor desse parâmetro como o parâmetro completionContext de entrada.

Retornar valor

A função FwpsPendOperation0 retorna um dos seguintes códigos NTSTATUS.

Código de retorno Descrição
STATUS_SUCCESS
O processamento de pacotes foi pendente com êxito.
STATUS_FWP_CANNOT_PEND
Uma chamada foi feita para FwpsPendOperation0 em uma operação de classificação de reautorização. Para obter mais informações, consulte Comentários.
STATUS_FWP_NULL_POINTER
Um ou mais dos parâmetros são inválidos.
STATUS_FWP_TCPIP_NOT_READY
A pilha de rede TCP/IP não está pronta para permitir essa operação.
Outros códigos status
Ocorreu um erro.

Comentários

O texto explicativo deve manter o valor do parâmetro completionContext até que ele retome o processamento de pacotes. Quando a operação que motivou a chamada para essa função for concluída, o texto explicativo deverá chamar a função FwpsCompleteOperation0 , passando-lhe o valor do parâmetro completionContext .

Um texto explicativo pode chamar essa função apenas para aguardar um pacote que se origina do FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_ Xxx, FWPM_LAYER_ALE_AUTH_LISTEN_ Xxx ou FWPM_LAYER_ALE_AUTH_CONNECT_ camadas de filtragemXxx. Um texto explicativo pode aguardar a operação de processamento atual em um pacote quando o texto explicativo deve executar o processamento em uma dessas camadas que pode levar um longo intervalo para ser concluído ou que deve ocorrer em IRQL = PASSIVE_LEVEL se o IRQL > atual PASSIVE_LEVEL.

Para concluir uma conexão que estava anteriormente pendente na camada xxx FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_, o driver de texto explicativo deve reinjetar o pacote clonado nessa camada, bem como chamar a função FwpsCompleteOperation0 .

Para poder aguardar o processamento de pacotes, a função classifyFn do driver de texto explicativo deve definir o membro actionType da estrutura FWPS_CLASSIFY_OUT0 como FWP_ACTION_BLOCK e o membro Flags como FWPS_CLASSIFY_OUT_FLAG_ABSORB.

As conexões pendentes são autenticadas novamente após a execução da função FwpsCompleteOperation0 . As conexões TCP, se permitidas, são criadas concluindo a operação de handshake, mas as conexões não TCP criam apenas entradas de estado. Todos os dados de pacote pendentes são liberados da memória quando a função FwpsPendOperation0 é concluída, portanto, os aplicativos devem retransmitir esses pacotes após a execução de FwpsCompleteOperation0 . Os textos explicativos podem armazenar esses dados em buffer e reinjetar os dados em seu nome.

Somente uma autorização inicial de fluxo ALE (Application Layer Enforcement) pode ser adiada chamando FwpsPendOperation0 e FwpsCompleteOperation0. Se um fluxo ALE for reautorizado, o sinalizador FWP_CONDITION_FLAG_IS_REAUTHORIZE será definido. Uma chamada para FwpsPendOperation0 das camadas de filtragemFWPM_LAYER_ALE_AUTH_CONNECT_ Xxx ou FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_ Xxx falhará se o sinalizador de FWP_CONDITION_FLAG_IS_REAUTHORIZE estiver definido e o código STATUS_FWP_CANNOT_PEND status for retornado. Para obter mais informações, consulte Reautorização do ALE no SDK do Windows.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows Vista.
Plataforma de Destino Universal
Cabeçalho fwpsk.h (inclua Fwpsk.h)
Biblioteca Fwpkclnt.lib
IRQL <= DISPATCH_LEVEL

Confira também

FWPS_CLASSIFY_OUT0

FWPS_INCOMING_METADATA_VALUES0

FwpsCompleteOperation0

classifyFn