Compartir a través de


Función FwpsInjectForwardAsync0 (fwpsk.h)

La función FwpsInjectForwardAsync0 inserta datos de paquetes en la ruta de acceso de datos de reenvío.

NotaFwpsInjectForwardAsync0 es una versión específica de FwpsInjectForwardAsync. Para obtener más información, vea NOMBRES DE Version-Independent DE PMA y versiones específicas de Windows dirigidas a destinatarios.
 

Sintaxis

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

Identificador de inyección creado previamente por una llamada a Función FwpsInjectionHandleCreate0 .

[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 inyección de paquetes FWPS_PACKET_INJECTION_STATE es FWPS_PACKET_INJECTED_BY_SELF o FWPS_PACKET_PREVIOUSLY_INJECTED_BY_SELF.

[in] flags

Reservado. Los controladores de llamada deben establecer este parámetro en cero.

[in] addressFamily

Una de las siguientes familias de direcciones:

AF_INET

Familia de direcciones IPv4.

AF_INET6

Familia de direcciones IPv6.

[in] compartmentId

Identificador del compartimiento de enrutamiento en el que se insertan los datos del paquete, especificados como un tipo de COMPARTMENT_ID . Este identificador se proporciona a una llamada a través del miembro compartmentId del FWPS_INCOMING_METADATA_VALUES0 estructura que se pasa a la función de llamada classifyFn del controlador de llamada. Si el miembro compartmentId está disponible para las llamadas, FWPS_METADATA_FIELD_COMPARTMENT_ID se establecerá en el miembro currentMetadataValues . De lo contrario, establezca este parámetro en UNSPECIFIED_COMPARTMENT_ID.

[in] interfaceIndex

Índice de la interfaz de destino (en el que se enviarán los datos del paquete). El índice es un valor de 32 bits. Un controlador de llamada debe usar el valor del índice de interfaz que se pasa como uno de los valores de datos entrantes a su función de llamada classifyFn para este parámetro si el paquete se va a insertar en la misma interfaz donde se indicó el paquete original.

[in, out] netBufferList

Puntero a una estructura NET_BUFFER_LIST que describe los datos de paquete que se insertan. Un controlador de llamada asigna una estructura de NET_BUFFER_LIST para insertar datos de paquetes mediante una llamada a Función FwpsAllocateCloneNetBufferList0 o Función FwpsAllocateNetBufferAndNetBufferList0 . La estructura NET_BUFFER_LIST debe comenzar con un encabezado IP.

[in] completionFn

Puntero a una función de llamada completionFn proporcionada por el controlador de llamada. El motor de filtros llama a esta función después de que los datos del paquete, descritos por el parámetro netBufferList , se hayan insertado en la pila de red.

[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 FwpsInjectForwardAsync0 devuelve uno de los siguientes códigos NTSTATUS.

Código devuelto Descripción
STATUS_SUCCESS
La inserción de datos de paquetes se inició correctamente. El motor de filtros llamará a la función de finalización después de que el motor de filtro haya completado la inserción de los datos del paquete en la pila de red, o cuando se produzca un error posteriormente, en cuyo caso el miembro Status de la estructura de NET_BUFFER_LIST completada indicará el motivo del error.
STATUS_FWP_TCPIP_NOT_READY
La pila de red TCP/IP no está lista para aceptar la inserción de datos de paquetes.
STATUS_FWP_INJECT_HANDLE_CLOSING
El controlador de inyección se está cerrando.
Otros códigos de estado
Se produjo un error.

Comentarios

Un controlador de llamada llama a la función FwpsInjectForwardAsync0 para insertar datos de paquetes o un fragmento de paquete en la ruta de acceso de datos de reenvío.

Esta función se puede ejecutar de forma asincrónica. Los controladores de llamada normalmente insertan datos en la pila de red al modificar los datos de paquetes. Para obtener más información sobre cómo un controlador de llamada puede modificar los datos de paquetes, consulte Callout Driver Operations.

Un paquete o fragmento de paquete insertado con esta función no se indicará a ninguna capa DE PMA para el filtrado.

Si el valor devuelto no es STATUS_SUCCESS, no se llamará a la función de finalización. En este caso, la lista de búferes netos a la que apunta netBufferList debe liberarse mediante una llamada a FwpsFreeNetBufferList0 o FwpsFreeCloneNetBufferList0.

Los paquetes IP o fragmentos se pueden clonar, modificar e insertar en la pila de red. Sin embargo, el controlador de llamada debe volver a ensamblar un grupo de fragmentos como un único NET_BUFFER_LIST antes de que se pueda reinyectar.

Los paquetes insertados hacia delante no vuelven a entrar en la capa de reenvío. Por lo tanto, no se volverán a clasificar.

Requisitos

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

Consulte también

FWPS_INCOMING_METADATA_VALUES0 FwpsAllocateCloneNetBufferList0 FwpsAllocateNetBufferAndNetBufferList0

FwpsInjectionHandleCreate0

FwpsInjectionHandleDestroy0

NET_BUFFER_LIST

Funciones de inyección de paquetes

classifyFn

completionFn