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 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 al fwpsInjectionHandleCreate0 función con las marcas parámetro 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 inyecció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 del controlador de llamada clasifiqueFn valor entrante FWPS_FIELD_XxxMAC_FRAMEXxx_INTERFACE_INDEX.
[in] NdisPortNumber
Número de puerto NDIS que se pasa al del controlador de llamada clasifiqueFn valor entrante FWPS_FIELD_XxxMAC_FRAMEXxx_NDIS_PORT.
[in, out] netBufferLists
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 que se 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 finalizaciónFn función de llamada proporcionada por el controlador de llamada. El motor de filtros 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 NET_BUFFER_LIST clonadas o creadas. 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 se puede 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 del marco MAC o cuando se produjo un error posteriormente. En caso de error, el estado miembro 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 las marcas parámetro del función FwpsInjectionHandleCreate0 establecida en FWPS_INJECTION_TYPE_L2. |
|
Error. |
Observaciones
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 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 puede invocar varias veces cada una, completando un segmento (o un solo 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 nivel 2 también deben protegerse contra la inspección infinita de paquetes llamando a FwpsQueryPacketInjectionState0.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Disponible a partir de Windows 8. |
de la plataforma de destino de | Universal |
encabezado de | fwpsk.h (incluya Fwpsk.h) |
biblioteca de | Fwpkclnt.lib |
irQL | <= DISPATCH_LEVEL |