Función FwpsInjectMacReceiveAsync0 (fwpsk.h)

La función FwpsInjectMacReceiveAsync0 puede volver a expulsar un marco de control de acceso multimedia (MAC) previamente absorbido (o un clon del marco) a la ruta de acceso de datos entrantes de la capa 2 desde la que se interceptó o insertar un marco MAC inventado.

NotaFwpsInjectMacReceiveAsync0 es una versión específica de FwpsInjectMacReceiveAsync. Para obtener más información, consulte NOMBRES de PMA Version-Independent y versiones específicas de destino de Windows .

 

Sintaxis

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

Identificador de inyección obtenido anteriormente por una llamada a la función FwpsInjectionHandleCreate0 con el parámetro flags establecido en FWPS_INJECTION_TYPE_L2.

Nota Establezca el parámetro addressFamily de la función FwpsInjectionHandleCreate0 en AF_UNSPEC.
 

[in, optional] injectionContext

Identificador opcional para el contexto de inyección. Si se especifica, se puede obtener llamando a . Función FwpsQueryPacketInjectionState0 cuando el estado de inserción de paquetes FWPS_PACKET_INJECTION_STATE es FWPS_PACKET_INJECTED_BY_SELF o FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF.

[in] flags

Reservado. Debe establecerse en cero.

[in] layerId

Identificador en tiempo de ejecución de la capa de filtrado en la que se está procesando el flujo de datos.

[in] interfaceIndex

Índice de interfaz que se pasa al valor entrante de classifyFn del controlador de llamada FWPS_FIELD_XxxMAC_FRAMEXxx_INTERFACE_INDEX.

[in] NdisPortNumber

Número de puerto NDIS que se pasa al valor entrante de clasifique del controlador de llamada FWPS_FIELD_XxxMAC_FRAMEXxx_NDIS_PORT.

[in, out] netBufferLists

Puntero a una estructura de NET_BUFFER_LIST que describe los datos de paquete que se insertan. Un controlador de llamada asigna una estructura de NET_BUFFER_LIST que se va a usar para insertar datos de paquetes mediante una llamada a la función FwpsAllocateCloneNetBufferList0 o a la función FwpsAllocateNetBufferAndNetBufferList0 .

Cuando (layerId == FWPS_LAYER_INBOUND_MAC_FRAME_ETHERNET), el NET_BUFFER_LIST debe comenzar con un encabezado Ethernet.

Cuando (layerId == FWPS_LAYER_INBOUND_MAC_FRAME_NATIVE), el NET_BUFFER_LIST debe comenzar con un encabezado MAC.

[in] completionFn

Puntero a una función de llamada completionFn proporcionada por el controlador de llamada. El motor de filtro llama a esta función después de los datos del paquete, descritos por el parámetro netBufferLists , se ha insertado en la pila de red. Este puntero debe especificarse al insertar estructuras clonadas o creadas NET_BUFFER_LIST. Al insertar estructuras de NET_BUFFER_LIST originales, este parámetro puede ser NULL si las estructuras originales no se modifican.

[in, optional] completionContext

Puntero a un contexto proporcionado por el controlador de llamada que se pasa a la función de llamada a la que apunta el parámetro completionFn . Este parámetro es opcional y puede ser NULL.

Valor devuelto

La función FwpsInjectMacReceiveAsync0 devuelve uno de los siguientes códigos NTSTATUS.

Código devuelto Descripción
STATUS_SUCCESS
La inserción de datos de fotogramas MAC se inició correctamente. El motor de filtros llama a la función de finalización después de que el motor de filtro haya completado la inserción de los datos de fotogramas MAC, o cuando se produjo un error posteriormente. En caso de error, el miembro Status de la estructura de NET_BUFFER_LIST completada indicará el motivo del error.
STATUS_FWP_TCPIP_NOT_READY
La capa MAC no está lista para aceptar la inyección de datos de paquetes.
STATUS_FWP_INJECT_HANDLE_CLOSING
El controlador de inyección se está cerrando.
STATUS_FWP_INJECT_HANDLE_STALE
El identificador de inyección no se creó con el parámetro flags del FwpsInjectionHandleCreate0 función establecida en FWPS_INJECTION_TYPE_L2.
Otros códigos de estado
Se produjo un error.

Comentarios

Un controlador de devolución de llamada llama a la función FwpsInjectMacReceiveAsync0 para volver a expulsar un marco MAC previamente absorbido (o un clon del marco) a la ruta de acceso de datos entrantes de la capa 2 desde la que se interceptó, o para insertar un marco MAC inventado.

El parámetro netBufferLists puede ser una cadena de NET_BUFFER_LIST . Sin embargo, la función de finalización se podría invocar varias veces cada una, completando un segmento (o una sola NET_BUFFER_LIST) de la cadena.

Los fotogramas insertados podrían volver a clasificarse si los paquetes coinciden con el mismo filtro que el clasificado originalmente. Por lo tanto, al igual que con las llamadas en capas IP, las llamadas de capa 2 también deben protegerse frente a la inspección infinita de paquetes mediante una llamada a FwpsQueryPacketInjectionState0.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 8.
Plataforma de destino Universal
Encabezado fwpsk.h (incluya Fwpsk.h)
Library Fwpkclnt.lib
IRQL <= DISPATCH_LEVEL

Consulte también

FwpsAllocateCloneNetBufferList0 FwpsAllocateNetBufferAndNetBufferList0 FwpsInjectionHandleCreate0

FwpsQueryPacketInjectionState0

NET_BUFFER_LIST

classifyFn

completionFn