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.
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.
[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 |
---|---|
|
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. |
|
La capa MAC no está lista para aceptar la inyección de datos de paquetes. |
|
El controlador de inyección se está cerrando. |
|
El identificador de inyección no se creó con el parámetro flags del FwpsInjectionHandleCreate0 función establecida en FWPS_INJECTION_TYPE_L2. |
|
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 |