Compartir a través de


W_TCP_OFFLOAD_FORWARD_HANDLER función de devolución de llamada (ndischimney.h)

[La característica de descarga de chimenea TCP está en desuso y no se debe usar.]

NDIS llama a la función MiniportTcpOffloadForward para reenviar segmentos TCP recibidos no confirmados a un destino de descarga.

Sintaxis

W_TCP_OFFLOAD_FORWARD_HANDLER WTcpOffloadForwardHandler;

NDIS_STATUS WTcpOffloadForwardHandler(
  [in] IN NDIS_HANDLE MiniportAdapterContext,
  [in] IN PVOID MiniportOffloadContext,
  [in] IN PNET_BUFFER_LIST NetBufferList
)
{...}

Parámetros

[in] MiniportAdapterContext

Identificador de un área de contexto asignada de destino de descarga en la que el destino de descarga mantiene información de estado sobre esta instancia del adaptador. El controlador de minipuerto proporcionó este identificador a NDIS cuando llamó NdisMSetMiniportAttributes de su Función MiniportInitializeEx .

[in] MiniportOffloadContext

Puntero a una ubicación de memoria que contiene un valor PVOID. Este valor PVOID hace referencia al contexto de descarga de miniporte que contiene el objeto de estado de la conexión TCP para la que se reenvía los segmentos TCP. El destino de descarga proporcionó este valor PVOID cuando descargó el objeto de estado de conexión TCP.

[in] NetBufferList

Puntero a una estructura de NET_BUFFER_LIST . Esta estructura puede ser una estructura independiente o la primera estructura de una lista vinculada de estructuras de NET_BUFFER_LIST. Cada estructura NET_BUFFER_LIST de la lista describe una estructura NET_BUFFER . Cada NET_BUFFER estructura se asigna a una cadena de listas de descriptores de memoria (MDL). Las MDL asociadas a una estructura de NET_BUFFER contienen uno y solo un segmento TCP que se reenvía al destino de descarga. El primer byte del primer MDL es el primer byte del encabezado TCP. La NET_BUFFER_LIST y las estructuras asociadas están bloqueadas para que permanezcan residentes en memoria física. Sin embargo, no se asignan a la memoria del sistema.

Valor devuelto

NDIS_STATUS_PENDING es el único valor devuelto permitido. Un destino de descarga siempre completa una solicitud de reenvío de forma asincrónica mediante una llamada a Función NdisTcpOffloadForwardComplete .

Comentarios

La pila de hosts reenvía uno o varios segmentos TCP que ha recibido, pero que no se han confirmado en las situaciones siguientes:

  • La pila de hosts recibió los segmentos en una conexión TCP que se estaba descargando en el destino de descarga. Puesto que la conexión no se ha descargado completamente, el destino de descarga no pudo procesar los segmentos TCP en ese momento.
  • La pila de hosts está en un sistema de hospedaje múltiple que recibió los segmentos en una interfaz de red distinta de la en la que se descarga la conexión TCP.
  • El destino de descarga anteriormente indicó paquetes recibidos que tenían opciones de IP establecidas o que eran fragmentos que necesitaban reensamblado. Después de procesar las opciones de IP o volver a ensamblar correctamente los paquetes, la pila de hosts reenvía los segmentos TCP al destino de descarga.
La pila de hosts nunca intenta reenviar segmentos TCP para una conexión TCP cuando:
  • Esa conexión se está descargando. La pila de hosts siempre espera a que se complete la descarga de la conexión antes de reenviar los paquetes de esa conexión. La pila de hosts reenvía los segmentos TCP lo antes posible después de que se haya completado la descarga de la conexión. Sin embargo, no hay ningún límite de tiempo para reenviar dichos segmentos.
  • La descarga de esa conexión se está finalizando. En este caso, la pila de hosts almacena en búfer los datos hasta que se completa la finalización de la descarga y, a continuación, procesa los segmentos.
La pila de hosts reenvía segmentos TCP(no diagramas de ip) a un destino de descarga. Por lo tanto, el único encabezado que proporciona la pila de hosts para cada segmento es el encabezado TCP, incluidas las opciones tcp que están presentes. Esta es toda la información de encabezado que el destino de descarga necesita para procesar el segmento recibido.

Al reenviar segmentos TCP, la pila de hosts transfiere un segmento TCP por NET_BUFFER estructura. La pila de hosts asocia solo una estructura de NET_BUFFER y, por lo tanto, un segmento TCP reenviado, con cada estructura de NET_BUFFER_LIST de la lista vinculada.

La pila de hosts asigna el NET_BUFFER_LIST y las estructuras asociadas que NDIS pasa a la función MiniportTcpOffloadForward . El destino de descarga posee estos recursos hasta que los pasa al Función NdisTcpOffloadForwardComplete . Aunque posee estos recursos, el destino de descarga es libre de ponerlos en cola para su procesamiento.

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado ndischimney.h (incluya Ndischimney.h)
IRQL Cualquier nivel

Consulte también

MiniportInitializeEx

NET_BUFFER_LIST

NdisMSetMiniportAttributes

NdisTcpOffloadForwardComplete