Compartilhar via


Função FwpsInjectMacReceiveAsync0 (fwpsk.h)

A função FwpsInjectMacReceiveAsync0 pode reinjetar um quadro mac (controle de acesso à mídia) absorvido anteriormente (ou um clone do quadro) de volta para o caminho de dados de entrada da camada 2 do qual foi interceptado ou injetar um quadro MAC inventado.

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

 

Sintaxe

NTSTATUS FwpsInjectMacReceiveAsync0(
  [in]           HANDLE               injectionHandle,
  [in, optional] HANDLE               injectionContext,
  [in]           UINT32               flags,
  [in]           UINT16               layerId,
  [in]           IF_INDEX             interfaceIndex,
  [in]           NDIS_PORT_NUMBER     NdisPortNumber,
  [in, out]      NET_BUFFER_LIST      *netBufferLists,
  [in]           FWPS_INJECT_COMPLETE completionFn,
  [in, optional] HANDLE               completionContext
);

Parâmetros

[in] injectionHandle

Um identificador de injeção que foi obtido anteriormente por uma chamada para a função FwpsInjectionHandleCreate0 com o parâmetro flags definido como FWPS_INJECTION_TYPE_L2.

Nota Defina o parâmetro addressFamily da função FwpsInjectionHandleCreate0 como AF_UNSPEC.
 

[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. Deve ser definido como zero.

[in] layerId

O identificador de tempo de execução para a camada de filtragem na qual o fluxo de dados está sendo processado.

[in] interfaceIndex

O índice de interface que é passado para o valor de entrada classifyFn do driver de texto explicativo FWPS_FIELD_XxxMAC_FRAMEXxx_INTERFACE_INDEX.

[in] NdisPortNumber

O número da porta NDIS que é passado para o valor de entrada classifyFn do driver de texto explicativo FWPS_FIELD_XxxMAC_FRAMEXxx_NDIS_PORT.

[in, out] netBufferLists

Um ponteiro para uma estrutura NET_BUFFER_LIST que descreve os dados do pacote que estão sendo injetados. Um driver de texto explicativo aloca uma estrutura NET_BUFFER_LIST a ser usada para injetar dados de pacote chamando a função FwpsAllocateCloneNetBufferList0 ou a função FwpsAllocateNetBufferAndNetBufferList0 .

Quando (layerId == FWPS_LAYER_INBOUND_MAC_FRAME_ETHERNET), o NET_BUFFER_LIST deve começar com um cabeçalho Ethernet.

Quando (layerId == FWPS_LAYER_INBOUND_MAC_FRAME_NATIVE), o NET_BUFFER_LIST deve começar com um cabeçalho MAC.

[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 netBufferLists , foram injetados na pilha de rede. Esse ponteiro deve ser especificado ao injetar estruturas NET_BUFFER_LIST clonadas ou criadas. Ao injetar estruturas de NET_BUFFER_LIST originais, esse parâmetro poderá ser NULL se as estruturas originais não forem alteradas.

[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 FwpsInjectMacReceiveAsync0 retorna um dos seguintes códigos NTSTATUS.

Código de retorno Descrição
STATUS_SUCCESS
A injeção de dados de quadro MAC foi iniciada com êxito. O mecanismo de filtro chama a função de conclusão depois que o mecanismo de filtro conclui a injeção dos dados de quadro MAC ou quando ocorreu um erro posteriormente. No caso de um erro, o membro Status da estrutura de NET_BUFFER_LIST concluída indicará o motivo da falha.
STATUS_FWP_TCPIP_NOT_READY
A camada MAC não está pronta para aceitar a injeção de dados de pacote.
STATUS_FWP_INJECT_HANDLE_CLOSING
A alça de injeção está sendo fechada.
STATUS_FWP_INJECT_HANDLE_STALE
O identificador de injeção não foi criado com o parâmetro flags do Função FwpsInjectionHandleCreate0 definida como FWPS_INJECTION_TYPE_L2.
Outros códigos de status
Ocorreu um erro.

Comentários

Um driver de retorno de chamada chama a função FwpsInjectMacReceiveAsync0 para reinjetar um quadro MAC absorvido anteriormente (ou um clone do quadro) de volta para o caminho de dados de entrada da camada 2 do qual ele foi interceptado ou para injetar um quadro MAC inventado.

O parâmetro netBufferLists pode ser uma cadeia de NET_BUFFER_LIST . No entanto, a função de conclusão pode ser invocada várias vezes cada, concluindo um segmento (ou um único NET_BUFFER_LIST) da cadeia.

Os quadros injetados poderão ser classificados novamente se os pacotes corresponderem ao mesmo filtro que o classificado originalmente. Portanto, assim como acontece com textos explicativos em camadas de IP, os textos explicativos de camada 2 também devem proteger contra inspeção infinita de pacotes chamando FwpsQueryPacketInjectionState0.

Requisitos

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

Confira também

FwpsAllocateCloneNetBufferList0 FwpsAllocateNetBufferAndNetBufferList0 FwpsInjectionHandleCreate0

FwpsQueryPacketInjectionState0

NET_BUFFER_LIST

classifyFn

completionFn