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) |