Compartilhar via


Função FwpsInjectNetworkReceiveAsync0 (fwpsk.h)

A função FwpsInjectNetworkReceiveAsync0 injeta dados de pacote no caminho de dados de recebimento.

ObservaçãoFwpsInjectNetworkReceiveAsync0 é uma versão específica do FwpsInjectNetworkReceiveAsync. Consulte nomes de Version-Independent WFP e versões específicas de destino do Windows para obter mais informações.
 

Sintaxe

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

Parâmetros

[in] injectionHandle

Um identificador de injeção criado anteriormente por uma chamada para a função FwpsInjectionHandleCreate0 com os sinalizadores parâmetro definido como FWPS_INJECTION_TYPE_NETWORK.

[in, optional] injectionContext

Um identificador opcional para o contexto de injeção. Se especificado, ele pode ser obtido chamando 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] 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 todo o membro compartimental do FWPS_INCOMING_METADATA_VALUES0 estrutura passada para a função de texto explicativo do driver de texto explicativo classifyFn. 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 na qual os dados do pacote original foram recebidos. Um driver de texto explicativo deve usar o valor do índice de interface que é passado como um dos valores de dados de entrada para seu classifyFn função de texto explicativo para esse parâmetro se o pacote deve ser injetado na mesma interface em que o pacote original foi indicado.

[in] subInterfaceIndex

O índice da subinterface na qual os dados do pacote original foram recebidos. Um driver de texto explicativo deve usar o valor do índice de subinterface que é passado como um dos valores de dados de entrada para seu classificarFn função de texto explicativo para esse parâmetro se o pacote deve ser injetado na mesma subinterface em que o pacote original foi indicado.

[in, out] netBufferList

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

[in] completionFn

Um ponteiro para um completionFn função de texto explicativo 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, foram 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 apontado pelo parâmetro completionFn. Esse parâmetro é opcional e pode ser NULL.

Valor de retorno

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

Código de retorno Descrição
STATUS_SUCCESS
A injeção de dados do 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. No caso de um erro, o Status membro 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.
STATUS_FWP_INJECT_HANDLE_STALE
O identificador de injeção não foi criado com os sinalizadores parâmetro do função FwpsInjectionHandleCreate0 definida como FWPS_INJECTION_TYPE_NETWORK.
Outros códigos de status
Ocorreu um erro.

Observações

Um driver explicativo chama a função FwpsInjectNetworkReceiveAsync0 para injetar dados de pacote ou um fragmento de pacote no caminho de dados de recebimento. Essa função pode ser executada de forma assíncrona. Normalmente, os drivers de texto explicativo injetam dados na pilha de rede ao modificar os dados do pacote. Para obter mais informações sobre como um driver de texto explicativo pode modificar os dados do pacote, consulte operações de driver de texto explicativo.

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 líquidos apontada pelo netBufferList deve ser liberada por uma chamada para FwpsFreeNetBufferList0 ou FwpsFreeCloneNetBufferList0.

O pacote injetado pode ser indicado ao driver de texto explicativo novamente. Para evitar looping infinito, o driver deve primeiro chamar o função FwpsQueryPacketInjectionState0 antes de prosseguir com uma chamada para a função de texto explicativo classifyFn, e o driver deve permitir pacotes com o estado de injeção FWPS_PACKET_INJECTION_STATE definido como FWPS_PACKET_INJECTED_BY_SELF ou FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF passar sem alterações.

Requisitos

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

Consulte também

FWPS_INCOMING_METADATA_VALUES0

FWPS_PACKET_INJECTION_STATE

FwpsAllocateCloneNetBufferList0 FwpsAllocateNetBufferAndNetBufferList0

FwpsFreeCloneNetBufferList0

FwpsFreeNetBufferList0

FwpsInjectionHandleCreate0

FwpsInjectionHandleDestroy0

FwpsQueryPacketInjectionState0

NET_BUFFER_LIST

classifyFn

completionFn