Compartir a través de


estructura TCP_OFFLOAD_STATE_DELEGATED (ndischimney.h)

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

La estructura TCP_OFFLOAD_STATE_DELEGATED contiene las variables delegadas de un objeto de estado de conexión TCP.

Sintaxis

typedef struct _TCP_OFFLOAD_STATE_DELEGATED {
  OFFLOAD_STATE_HEADER         Header;
  TCP_OFFLOAD_CONNECTION_STATE State;
  USHORT                       Flags;
  ULONG                        RcvNxt;
  ULONG                        RcvWnd;
  ULONG                        SndUna;
  ULONG                        SndNxt;
  ULONG                        SndMax;
  ULONG                        SndWnd;
  ULONG                        MaxSndWnd;
  ULONG                        SendWL1;
  ULONG                        CWnd;
  ULONG                        SsThresh;
  USHORT                       SRtt;
  USHORT                       RttVar;
  ULONG                        TsRecent;
  ULONG                        TsRecentAge;
  ULONG                        TsTime;
  ULONG                        TotalRT;
  UCHAR                        DupAckCount;
  UCHAR                        SndWndProbeCount;
  struct {
    UCHAR ProbeCount;
    ULONG TimeoutDelta;
  } KeepAlive;
  struct {
    UCHAR Count;
    ULONG TimeoutDelta;
  } Retransmit;
  union {
    struct {
      PNET_BUFFER_LIST SendDataHead;
      PNET_BUFFER_LIST SendDataTail;
    };
    ULONG SendBacklogSize;
  };
  union {
    PNET_BUFFER_LIST BufferedData;
    ULONG            ReceiveBacklogSize;
  };
  ULONG                        DWnd;
} TCP_OFFLOAD_STATE_DELEGATED, *PTCP_OFFLOAD_STATE_DELEGATED;

Miembros

Header

Estructura OFFLOAD_STATE_HEADER . NDIS establece el miembro Length de Header en el tamaño, en bytes, de la estructura TCP_OFFLOAD_STATE_DELEGATED. El miembro RecognizeOptions de Header está reservado.

State

El estado actual de la conexión TCP (consulte RFC 793) como uno de los siguientes valores de TCP_OFFLOAD_CONNECTION_STATE:

TcpConnectionClosed

Sin estado de conexión.

TcpConnectionListen

Esperando una solicitud de conexión desde cualquier TCP y puerto remotos.

TcpConnectionSynSent

Esperando una solicitud de conexión coincidente después de haber enviado una solicitud de conexión.

TcpConnectionSynRcvd

Esperando una confirmación de confirmación de solicitud de conexión después de haber recibido y enviado una solicitud de conexión.

TcpConnectionEstablished

Una conexión abierta: los datos recibidos se pueden entregar al usuario. Estado normal de la fase de transferencia de datos de la conexión.

TcpConnectionFinWait1

Esperando una solicitud de terminación de conexión desde el TCP remoto o una confirmación de la solicitud de terminación de conexión que se envió anteriormente.

TcpConnectionFinWait2

Esperando una solicitud de terminación de conexión desde el TCP remoto.

TcpConnectionCloseWait

Esperando una solicitud de finalización de conexión del usuario local.

TcpConnectionClosing

Esperando una confirmación de solicitud de terminación de conexión desde el TCP remoto.

TcpConnectionLastAck

Esperando una confirmación de la solicitud de terminación de conexión enviada previamente al TCP remoto, que incluye una confirmación de su solicitud de terminación de conexión.

TcpConnectionTimeWait

Esperando tiempo suficiente para pasar para asegurarse de que el TCP remoto recibió la confirmación de su solicitud de terminación de conexión.

Tenga en cuenta que la pila de hosts puede descargar una conexión TCP cuando la conexión está en cualquier estado excepto TcpConnectionClosed, TcpConnectionListen, TcpConnectionSynRcvd,

Estado TcpConnectionSynSent o TcpConnectionTimeWait . La pila de hosts puede consultar, actualizar, invalidar o finalizar una conexión TCP independientemente del estado de conexión.

Flags

Reservado para uso del sistema.

RcvNxt

Número de secuencia del siguiente segmento de recepción (consulte RCV. SIGUIENTE en RFC 793).

RcvWnd

El tamaño de la ventana de recepción, en bytes (consulte RCV. WND en RFC 793).

SndUna

Número de secuencia del primer byte de datos no reconocidos (consulte SND). UNA en RFC 793). Para obtener más información, vea Enviar datos que contienen datos que se retransmitirán.

SndNxt

Número de secuencia del siguiente byte que se va a enviar en la conexión (consulte SND. APARECERÁ EN RFC 793). Para obtener más información, vea Enviar datos que contienen datos que se retransmitirán.

SndMax

Número máximo de secuencia que se ha enviado en la conexión. Para obtener más información, vea Enviar datos que contienen datos que se retransmitirán.

SndWnd

El tamaño de la ventana de envío, en bytes (consulte SND). WND en RFC 793).

MaxSndWnd

Tamaño máximo de la ventana de envío, en bytes (consulte RFC 813).

SendWL1

Número de secuencia de segmento usado para la última actualización de la ventana (consulte SND). WL1 en RFC 793).

CWnd

Tamaño de la ventana de congestión, en bytes (consulte cwnd en RFC 2581).

SsThresh

Umbral de inicio lento, en bytes (consulte ssthresh en RFC 2581).

SRtt

El tiempo de ida y vuelta suavizado, en tics del reloj (consulte SRTT en RFC 793 y 2988). Se mantiene por conexión porque tiene en cuenta la ruta de acceso, el host y, a veces, el comportamiento de la aplicación.

RttVar

Variación del tiempo de ida y vuelta, en tics del reloj (véase RTTVAR en RFC 2988).

TsRecent

Valor de marca de tiempo que se va a enviar en el siguiente ACK (consulte TS. Reciente en RFC 1323)

TsRecentAge

El tiempo, en tics de reloj, desde que se recibió la marca de tiempo más reciente (véase RFC 1323).

TsTime

Valor actual de la marca de tiempo ajustada.

TotalRT

Tiempo total, en tics de reloj, que se ha dedicado a retransmitir el segmento TCP actual.

DupAckCount

Número de ACK que se han aceptado para el mismo número de secuencia (consulte RFC 1323).

SndWndProbeCount

El sondeo de ventana de envío actual. Para obtener una descripción de la ronda de sondeo de ventana de envío, consulte Persist Timer.

KeepAlive

Este miembro es una unión que consta de los siguientes miembros:

KeepAlive.ProbeCount

Número de sondeos keepalive que se han enviado que no han recibido una respuesta (consulte RFC 1122).

KeepAlive.TimeoutDelta

Tiempo restante, en tics de reloj, hasta el siguiente tiempo de espera keepalive (consulte RFC 1122). Tenga en cuenta que un valor de -1 inmediatamente después de descargar la conexión TCP indica que el temporizador keepalive no se estaba ejecutando cuando se descargó la conexión. Si el temporizador keepalive del destino de descarga no se está ejecutando, el destino de descarga debe devolver -1 en este miembro al responder a una llamada a la función MiniportQueryOffload o a la función MiniportTerminateOffload.

Retransmit

Este miembro es una unión que consta de los siguientes miembros:

Retransmit.Count

Número de retransmisiones enviadas (véase RFC 2581).

Retransmit.TimeoutDelta

La hora, en tics del reloj, restante hasta el siguiente tiempo de espera de retransmisión (véase RFC 2581). Tenga en cuenta que un valor de -1 inmediatamente después de descargar la conexión TCP indica que el temporizador de retransmisión no se estaba ejecutando cuando se descargó la conexión. El temporizador de retransmisión no se estaba ejecutando porque no había datos de envío pendientes en la conexión cuando se descargó la conexión. Si el temporizador de retransmisión del destino de descarga no se está ejecutando, el destino de descarga debe devolver -1 en este miembro al responder a una llamada a la función MiniportQueryOffload o a la función MiniportTerminateOffload.

SendDataHead

Puntero a una estructura NET_BUFFER_LIST . Esta estructura NET_BUFFER_LIST está en la lista vinculada a la que apunta el miembro NetBufferListChain del NDIS_MINIPORT_OFFLOAD_BLOCK_LIST estructura que precede inmediatamente a la estructura TCP_OFFLOAD_STATE_DELEGATED. Si el puntero NetBufferListChain es NULL, SendDataHead no es significativo.

El puntero SendDataHead apunta a la primera estructura NET_BUFFER_LIST cuya estructura de NET_BUFFER ha almacenado en búfer los datos de envío asociados.

Esta variable solo se usa en una operación de inicio de descarga o finalización de la descarga. Para obtener más información sobre cómo se usa esta variable, vea Controlar los datos de envío pendientes durante y después de una operación de descarga y controlar los datos de envío pendientes durante una operación de finalización de la descarga.

SendDataTail

Puntero a una estructura NET_BUFFER_LIST . Esta estructura NET_BUFFER_LIST está en la lista vinculada a la que apunta el miembro NetBufferListChain de la estructura NDIS_MINIPORT_OFFLOAD_BLOCK_LIST que precede inmediatamente a la estructura TCP_OFFLOAD_STATE_DELEGATED. Si el puntero NetBufferListChain es NULL, SendDataTail no es significativo.

El puntero SendDataTail apunta a la última estructura de NET_BUFFER_LIST cuya estructura de NET_BUFFER ha almacenado en búfer los datos de envío asociados.

Esta variable solo se usa en una operación de inicio de descarga o finalización de la descarga. Para obtener más información sobre cómo se usa esta variable, vea Controlar los datos de envío pendientes durante y después de una operación de descarga y controlar los datos de envío pendientes durante una operación de descarga de finalización.

SendBacklogSize

El destino de descarga especifica este valor para indicar el número de bytes de datos que la pila de hosts debe tener pendiente en el destino de descarga para obtener un rendimiento óptimo. (Este es el número de bytes de envío que se han pasado al destino de descarga, pero que aún no se han completado con el destino de descarga). Las variables y el algoritmo específicos que usa el destino de descarga para calcular el tamaño del trabajo pendiente de envío son específicos de la implementación. El tamaño del trabajo pendiente de envío puede ser una función del tiempo de ida y vuelta (RTT) de la conexión, el ancho de banda de la interfaz y otros parámetros. Un destino de descarga podría, por ejemplo, usar el mínimo del producto de ancho de banda/retraso y la ventana recibida anunciada. Sin embargo, tenga en cuenta que el tamaño del trabajo pendiente de envío no varía según el número de bytes de datos que se publican actualmente para la transmisión en la conexión.

La pila de hosts puede consultar el estado delegado tcp de la conexión para obtener el tamaño del trabajo pendiente de envío. Además, el destino de descarga puede indicar un cambio en el tamaño del trabajo pendiente de envío llamando al Función NdisTcpOffloadEventHandler .

Si el destino de descarga no admite la característica send-backlog-size, debe escribir un valor de 0xFFFFFFFF en SendBacklogSize cuando se consulta el estado delegado tcp de la conexión. La variable SendBacklogSize no se usa en la operación de descarga de finalización.

BufferedData

Puntero a los datos de recepción almacenados en búfer. La pila de hosts puede pasar estos datos al destino de descarga al descargar una conexión TCP. (Para obtener más información, vea Controlar los datos de recepción almacenados en búfer durante y después de una operación de descarga). El destino de descarga puede pasar estos datos a la pila de hosts al cargar una conexión TCP. (Para obtener más información, consulte Control de los datos de recepción almacenados en búfer durante una operación de descarga de finalización).

ReceiveBacklogSize

El destino de descarga especifica este valor para indicar el número de bytes de datos de recepción almacenados en búfer en el destino de descarga para la conexión TCP descargada. La pila de hosts puede consultar el estado delegado de TCP para que la conexión obtenga este valor. La pila de hosts usa este valor para publicar una o varias solicitudes de recepción en la conexión que son lo suficientemente grandes como para contener todos los datos almacenados en búfer.

Si el destino de descarga no admite la característica de tamaño de trabajo pendiente de recepción, debe escribir un valor de 0xFFFFFFFF en ReceiveBacklogSize .

DWnd

Comentarios

La pila de hosts proporciona valores iniciales para las variables delegadas TCP cuando descarga estas variables en el destino de descarga. Una vez descargado, el destino de descarga mantiene las variables delegadas de TCP. Solo el destino de descarga puede cambiar el valor de una variable delegada TCP descargada. El destino de descarga no notifica a la pila de hosts los cambios en los valores de variables delegadas TCP descargadas. Sin embargo, la pila de hosts puede consultar el valor de variables delegadas TCP descargadas, lo que hace que NDIS llame a la función MiniportQueryOffload del destino de descarga. Cuando la pila de hosts finaliza la descarga del objeto de estado de conexión TCP haciendo que NDIS llame al destino de descarga. La función MiniportTerminateOffload , el destino de descarga pasa el valor de las variables delegadas TCP en el objeto de estado de conexión TCP terminado a la pila de hosts.

Cuando se pasa a un destino de descarga, se asocia una estructura de TCP_OFFLOAD_STATE_DELEGATED a un NDIS_MINIPORT_OFFLOAD_BLOCK_LIST estructura, que contiene un encabezado con formato de estructura NDIS_OBJECT_HEADER . El miembro Revision de la estructura NDIS_OBJECT_HEADER, en este caso, especifica el número de revisión de la estructura TCP_OFFLOAD_STATE_DELEGATED.

Requisitos

Requisito Valor
Header ndischimney.h (incluya Ndischimney.h)

Consulte también

MiniportQueryOffload

MiniportTerminateOffload

NDIS_OBJECT_HEADER

OFFLOAD_STATE_HEADER

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST