структура TCP_OFFLOAD_STATE_DELEGATED (ndischimney.h)
[Функция разгрузки дымохода TCP не рекомендуется и не должна использоваться.]
Структура TCP_OFFLOAD_STATE_DELEGATED содержит делегированные переменные объекта состояния TCP-подключения.
Синтаксис
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;
Члены
Header
Структура OFFLOAD_STATE_HEADER. NDIS задает элемент длины заголовка размером в байтах структуры TCP_OFFLOAD_STATE_DELEGATED. Распознаваемыеoptions элемент заголовка зарезервирован.
State
Текущее состояние TCP-подключения (см. RFC 793) в качестве одного из следующих значений TCP_OFFLOAD_CONNECTION_STATE:
TcpConnectionClosed
Нет состояния подключения.
TcpConnectionListen
Ожидание запроса на подключение из любого удаленного TCP-порта.
TcpConnectionSynSent
Дождитесь соответствующего запроса подключения после отправки запроса на подключение.
TcpConnectionSynRcvd
Дождитесь подтверждения запроса на подтверждение подключения после получения и отправки запроса на подключение.
TcpConnectionEstablished
Открытое подключение: полученные данные могут быть доставлены пользователю. Обычное состояние для этапа передачи данных подключения.
TcpConnectionFinWait1
Ожидание запроса на завершение подключения из удаленного TCP или подтверждение запроса на завершение подключения, который был отправлен ранее.
TcpConnectionFinWait2
Ожидание запроса на завершение подключения из удаленного TCP.
TcpConnectionCloseWait
Ожидание запроса на завершение подключения от локального пользователя.
TcpConnectionClosing
Ожидание подтверждения запроса на завершение подключения из удаленного TCP.
TcpConnectionLastAck
Дождитесь подтверждения запроса на завершение подключения, ранее отправленного на удаленный TCP, который включает подтверждение запроса на завершение подключения.
TcpConnectionTimeWait
Дождитесь достаточного времени, чтобы убедиться, что удаленный TCP получил подтверждение запроса на завершение подключения.
Обратите внимание, что стек узлов может выгрузить TCP-подключение, если подключение находится в любом состоянии, кроме TcpConnectionClosed, TcpConnectionListen, TcpConnectionSynRcvd.
состояние TcpConnectionSynSynSentили состояние tcpConnectionTimeWa it. Стек узлов может запрашивать, обновлять, отменять или завершать TCP-подключение независимо от состояния подключения.
Flags
Зарезервировано для использования системы.
RcvNxt
Порядковый номер для следующего сегмента получения (см. RCV. ДАЛЕЕ в RFC 793).
RcvWnd
Размер окна получения в байтах (см. RCV). WND в RFC 793).
SndUna
Порядковый номер для первого байта ненавиденных данных (см. раздел SND. UNA в RFC 793). Дополнительные сведения см. в отправке данных, содержащих данные для повторной передачи.
SndNxt
Порядковый номер для следующего байта для отправки подключения (см. SND. NXT в RFC 793). Дополнительные сведения см. в отправке данных, содержащих данные для повторной передачи.
SndMax
Максимальный номер последовательности, отправляемый в соединении. Дополнительные сведения см. в отправке данных, содержащих данные для повторной передачи.
SndWnd
Размер окна отправки в байтах (см. раздел SND. WND в RFC 793).
MaxSndWnd
Максимальный размер окна отправки в байтах (см. RFC 813).
SendWL1
Номер последовательности сегмента, используемый для последнего обновления окна (см. раздел SND. WL1 в RFC 793).
CWnd
Размер окна перегрузки в байтах (см. cwnd в RFC 2581).
SsThresh
Порог медленного запуска в байтах (см. ssthresh в RFC 2581).
SRtt
Сглаживаемое время круговой поездки в часах (см. SRTT в RFCs 793 и 2988). Поддерживается на основе каждого подключения, так как он учитывает путь, узел и иногда поведение приложения.
RttVar
Вариант времени кругового пути в часах (см. RTTVAR в RFC 2988).
TsRecent
Значение метки времени для отправки в следующем ACK (см. раздел TS. Последние в RFC 1323)
TsRecentAge
Продолжительность времени, в часах, с момента получения последней метки времени (см. RFC 1323).
TsTime
Текущее значение скорректированной метки времени.
TotalRT
Общее время в часах, которое было потрачено повторной передачи текущего сегмента TCP.
DupAckCount
Число акций, принятых для одного и того же номера последовательности (см. RFC 1323).
SndWndProbeCount
Текущий цикл проверки окна отправки. Описание цикла проверки окна отправки см. в разделе Сохранение таймера.
KeepAlive
Этот член является союзом, состоящим из следующих членов:
KeepAlive.ProbeCount
Количество отправленных проб хранения, которые не получили ответа (см. RFC 1122).
KeepAlive.TimeoutDelta
Время, оставшееся в часах, до следующего тайм-аута (см. RFC 1122). Обратите внимание, что значение -1 сразу после разгрузки TCP-подключения указывает, что таймер хранения не запущен при отключении подключения. Если таймер разгрузки целевого объекта не выполняется, целевой объект разгрузки должен возвращать -1 в этом элементе при реагировании на вызов функции MiniportQueryOffload или функции MiniportTerminateOffload.
Retransmit
Этот член является союзом, состоящим из следующих членов:
Retransmit.Count
Количество отправленных повторных передач (см. RFC 2581).
Retransmit.TimeoutDelta
Время, в часах, оставшееся до следующего времени ожидания повторной передачи (см. RFC 2581). Обратите внимание, что значение -1 сразу после разгрузки TCP-подключения указывает, что таймер повторной передачи не запущен при отключении подключения. Таймер повторной передачи не запущен, так как при отключении подключения не было незавершенных данных отправки. Если таймер повторной передачи целевого объекта не выполняется, целевой объект разгрузки должен возвращать -1 в этом элементе при реагировании на вызов функции MiniportQueryOffload или функции MiniportTerminateOffload.
SendDataHead
Указатель на структуру NET_BUFFER_LIST. Эта NET_BUFFER_LIST структура находится в связанном списке, на который указывает элемент NetBufferListChain элемента NDIS_MINIPORT_OFFLOAD_BLOCK_LIST структура, которая непосредственно перед структурой TCP_OFFLOAD_STATE_DELEGATED. Если указатель NetBufferListChainNULL, SendDataHead не имеет значения.
Указатель SendDataHead указывает на первую NET_BUFFER_LIST структуру, с которой NET_BUFFER структура буферизирует связанные с ним данные отправки.
Эта переменная используется только при инициировании разгрузки или прерывании операции разгрузки. Дополнительные сведения об использовании этой переменной см. в разделе Обработка невыполненных данных отправки во время и после операции разгрузки и обработки невыполненных данных отправки во время операции завершения разгрузки.
SendDataTail
Указатель на структуру NET_BUFFER_LIST. Эта NET_BUFFER_LIST структура находится в связанном списке, на который указывает элемент NetBufferListChain структуры NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, которая непосредственно перед структурой TCP_OFFLOAD_STATE_DELEGATED. Если указатель NetBufferListChain NULL, SendDataTail не имеет значения.
Указатель SendDataTail указывает на последнюю NET_BUFFER_LIST структуру, с которой NET_BUFFER структура буферизирует связанные с ним данные отправки.
Эта переменная используется только при инициировании разгрузки или прерывании операции разгрузки. Дополнительные сведения об использовании этой переменной см. в разделе обработка невыполненных данных отправки во время и после операции разгрузки и обработки невыполненных данных отправки во время операции завершения разгрузки
SendBacklogSize
Целевой объект разгрузки указывает это значение, чтобы указать количество байтов данных, которые стек узлов должен иметь выдающийся в целевом объекте разгрузки для оптимальной производительности. (Это число байтов отправки, переданных в целевой объект разгрузки, но которые еще не были завершены целевым объектом разгрузки.) Определенные переменные и алгоритмы, которые целевой объект разгрузки использует для вычисления размера невыполненной работы отправки, зависят от реализации. Размер невыполненной отправки может быть функцией времени округления (RTT) для подключения, пропускной способности интерфейса и других параметров. Целевой объект разгрузки может, например, использовать минимум продукта пропускной способности или задержки и объявленного окна получения. Обратите внимание, что размер невыполненной работы по отправке не зависит от количества байтов данных, которые в настоящее время размещены для передачи в соединении.
Стек узлов может запрашивать делегированное tcp-состояние для подключения, чтобы получить размер невыполненной отправки. Кроме того, целевой объект разгрузки может указывать на изменение размера невыполненной работы отправки путем вызова функция NdisTcpOffloadEventHandler.
Если целевой объект разгрузки не поддерживает функцию размера невыполненной отправки, она должна записать значение 0xFFFFFFFF, чтобы SendBacklogSize при запросе состояния TCP-делегированного подключения. Переменная SendBacklogSize не используется в операции завершения разгрузки.
BufferedData
Указатель на буферные данные получения. Стек узлов может передавать такие данные в целевой объект разгрузки при разгрузке TCP-подключения. (Дополнительные сведения см. в разделе Обработка буферированных данных получения данных во время и после операции разгрузки.) Целевой объект разгрузки может передавать такие данные в стек узлов при отправке TCP-подключения. (Дополнительные сведения см. в разделе Обработка буферных данных получения во время операции завершения разгрузки.)
ReceiveBacklogSize
Целевой объект разгрузки указывает это значение, указывающее количество байтов данных получения, буферизованного в целевом объекте разгрузки для отключенного TCP-подключения. Стек узлов может запрашивать делегированное состояние TCP для подключения, чтобы получить это значение. Стек узлов использует это значение для отправки одного или нескольких запросов на подключение, достаточно большое для хранения всех буферных данных.
Если целевой объект разгрузки не поддерживает функцию размера невыполненной работы, она должна записать значение 0xFFFFFFFF для ReceiveBacklogSize.
DWnd
Замечания
Стек узлов предоставляет начальные значения для делегированных переменных TCP при разгрузке этих переменных в целевой объект разгрузки. После разгрузки делегированные tcp-переменные принадлежат и поддерживаются целевым объектом разгрузки. Только целевой объект разгрузки может изменить значение делегированной переменной TCP. Целевой объект разгрузки не уведомляет стек узлов об изменениях значений выгрузленных делегированных переменных TCP. Однако стек узлов может запрашивать значение отключенных делегированных переменных TCP, что приводит к вызову функции NDIS разгрузки miniportQueryOffload. Когда стек узлов завершает разгрузку объекта состояния TCP-подключения, вызвав NDIS для вызова целевого объекта разгрузки. функция MiniportTerminateOffload, целевой объект разгрузки передает значение делегированных tcp-переменных в объекте состояния подключения TCP в стек узла.
При передаче в целевой объект разгрузки структура TCP_OFFLOAD_STATE_DELEGATED связана с объектом NDIS_MINIPORT_OFFLOAD_BLOCK_LIST структура, содержащая заголовок, отформатированный как структура NDIS_OBJECT_HEADER. В данном случае элемент редакции структуры NDIS_OBJECT_HEADER указывает номер редакции структуры TCP_OFFLOAD_STATE_DELEGATED.
Требования
Требование | Ценность |
---|---|
заголовка | ndischimney.h (включая Ndischimney.h) |