Compartilhar via


Função FwpsInjectForwardAsync0 (fwpsk.h)

A função FwpsInjectForwardAsync0 injeta dados de pacote no caminho de dados de encaminhamento.

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

Sintaxe

NTSTATUS FwpsInjectForwardAsync0(
  [in]           HANDLE                injectionHandle,
  [in, optional] HANDLE                injectionContext,
  [in]           UINT32                flags,
  [in]           ADDRESS_FAMILY        addressFamily,
  [in]           COMPARTMENT_ID        compartmentId,
  [in]           IF_INDEX              interfaceIndex,
  [in, out]      NET_BUFFER_LIST       *netBufferList,
  [in]           FWPS_INJECT_COMPLETE0 completionFn,
  [in, optional] HANDLE                completionContext
);

Parâmetros

[in] injectionHandle

Um identificador de injeção que foi criado anteriormente por uma chamada para o Função FwpsInjectionHandleCreate0 .

[in, optional] injectionContext

Um identificador opcional para o contexto de injeção. Se especificado, ele pode ser obtido chamando o A função FwpsQueryPacketInjectionState0 quando o estado de injeção de pacote FWPS_PACKET_INJECTION_STATE é FWPS_PACKET_INJECTED_BY_SELF ou FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF.

[in] flags

Reservado. Os drivers de texto explicativo devem definir esse parâmetro como zero.

[in] addressFamily

Uma das seguintes famílias de endereços:

AF_INET

A família de endereços IPv4.

AF_INET6

A família de endereços IPv6.

[in] compartmentId

O identificador do compartimento de roteamento no qual os dados do pacote são injetados, especificado como um tipo de COMPARTMENT_ID . Esse identificador é fornecido a um texto explicativo por meio do membro compartimental do FWPS_INCOMING_METADATA_VALUES0 estrutura que é passada para a função de texto explicativo classifyFn do driver de texto explicativo. Se o membro compartmentId estiver disponível para textos explicativos, FWPS_METADATA_FIELD_COMPARTMENT_ID será definido no membro currentMetadataValues . Caso contrário, defina esse parâmetro como UNSPECIFIED_COMPARTMENT_ID.

[in] interfaceIndex

O índice da interface de destino (no qual os dados do pacote devem ser enviados). O índice é um valor de 32 bits. Um driver de texto explicativo deve usar o valor do índice de interface que é passado como um dos valores de dados de entrada para sua função de texto explicativo classifyFn para esse parâmetro se o pacote deve ser injetado na mesma interface em que o pacote original foi indicado.

[in, out] netBufferList

Um ponteiro para uma estrutura NET_BUFFER_LIST que descreve os dados de pacote que estão sendo injetados. Um driver de texto explicativo aloca uma estrutura NET_BUFFER_LIST para injetar dados de pacote chamando o Função FwpsAllocateCloneNetBufferList0 ou a Função FwpsAllocateNetBufferAndNetBufferList0 . A estrutura NET_BUFFER_LIST deve começar com um cabeçalho IP.

[in] completionFn

Um ponteiro para uma função de texto explicativo completionFn fornecida pelo driver de texto explicativo. O mecanismo de filtro chama essa função depois que os dados do pacote, descritos pelo parâmetro netBufferList , são injetados na pilha de rede.

[in, optional] completionContext

Um ponteiro para um contexto fornecido pelo driver de texto explicativo que é passado para a função de texto explicativo apontada pelo parâmetro completionFn . Esse parâmetro é opcional e pode ser NULL.

Retornar valor

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

Código de retorno Descrição
STATUS_SUCCESS
A injeção de dados de pacote foi iniciada com êxito. O mecanismo de filtro chamará a função de conclusão depois que o mecanismo de filtro tiver concluído a injeção dos dados do pacote na pilha de rede ou quando ocorrer um erro posteriormente, nesse caso, o membro Status da estrutura de NET_BUFFER_LIST concluída indicará o motivo da falha.
STATUS_FWP_TCPIP_NOT_READY
A pilha de rede TCP/IP não está pronta para aceitar a injeção de dados de pacote.
STATUS_FWP_INJECT_HANDLE_CLOSING
O identificador de injeção está sendo fechado.
Outros códigos status
Ocorreu um erro.

Comentários

Um driver de texto explicativo chama a função FwpsInjectForwardAsync0 para injetar dados de pacote ou um fragmento de pacote no caminho de dados de encaminhamento.

Essa função pode ser executada de forma assíncrona. Os drivers de texto explicativo normalmente injetam dados na pilha de rede ao modificar dados de pacotes. Para obter mais informações sobre como um driver de texto explicativo pode modificar dados de pacotes, consulte Operações de driver de texto explicativo.

Um pacote ou fragmento de pacote injetado com essa função não será indicado a nenhuma camada WFP para filtragem.

Se o valor retornado não for STATUS_SUCCESS, a função de conclusão não será chamada. Nesse caso, a lista de buffers net apontada por netBufferList deve ser liberada por uma chamada para FwpsFreeNetBufferList0 ou FwpsFreeCloneNetBufferList0.

Pacotes IP ou fragmentos podem ser clonados, modificados e injetados novamente na pilha de rede. No entanto, um grupo de fragmentos deve ser remontado pelo driver de texto explicativo como um único NET_BUFFER_LIST antes que ele possa ser reinjetado.

Os pacotes injetados na frente não reentram na camada de encaminhamento. Portanto, eles não serão reclassificados.

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_INCOMING_METADATA_VALUES0 FwpsAllocateCloneNetBufferList0 FwpsAllocateNetBufferAndNetBufferList0

FwpsInjectionHandleCreate0

FwpsInjectionHandleDestroy0

NET_BUFFER_LIST

Funções de injeção de pacote

classifyFn

completionFn