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.
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.
[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 |
---|---|
|
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. |
|
A camada MAC não está pronta para aceitar a injeção de dados de pacote. |
|
A alça de injeção está sendo fechada. |
|
O identificador de injeção não foi criado com o parâmetro flags do Função FwpsInjectionHandleCreate0 definida como FWPS_INJECTION_TYPE_L2. |
|
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 |