структура NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST (ndischimney.h)
[Функция разгрузки tcp chimney является устаревшей и не должна использоваться.]
Структура NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST.
Синтаксис
typedef struct _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST {
IN NDIS_OBJECT_HEADER Header;
IN _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST *NextBlock;
#if ...
struct _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
IN _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST *DependentBlockList;
#else
struct _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
#endif
OUT NDIS_STATUS Status;
IN PVOID NdisReserved[3];
IN OUT PNDIS_OFFLOAD_HANDLE OffloadHandle;
IN PVOID ProtocolReserved[2];
IN PVOID MiniportReserved[2];
IN PVOID ImReserved[2];
IN PVOID Scratch[2];
IN PVOID SourceHandle;
IN NDIS_PORT_NUMBER PortNumber;
IN OUT PNET_BUFFER_LIST NetBufferListChain;
} NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, *PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
Члены
Header
Заголовок структуры NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST. Заголовок форматируется как NDIS_OBJECT_HEADER структура. Структура NDIS_OBJECT_HEADER содержит номер редакции структуры NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, тип состояния разгрузки, который сразу следует за структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST в памяти, и размер структуры NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, включая заголовок, в байтах.
Элемент Type структуры NDIS_OBJECT_HEADER указывает тип состояния разгрузки и, как следствие, конкретную структуру состояния разгрузки (или структуры), которые сразу следуют за NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST структурой в памяти.
Поддерживаются следующие OFFLOAD_STATE_TYPE значения:
NeighborOffloadConstState
Указывает состояние соседа константы. Это состояние отформатировано как NEIGHBOR_OFFLOAD_STATE_CONST структура.
NeighborOffloadCachedState
Указывает кэшированное соседнее состояние. Это состояние отформатировано как структура NEIGHBOR_OFFLOAD_STATE_CACHED .
NeighborOffloadDelegatedState
Указывает делегированное соседнее состояние. Это состояние отформатировано как NEIGHBOR_OFFLOAD_STATE_DELEGATED структура.
NeighborOffloadState
Указывает все соседнее состояние, включая константу, кэшированное и делегированное соседнее состояние. Это состояние отформатировано как структура NEIGHBOR_OFFLOAD_STATE_CONST, за которой следует структура NEIGHBOR_OFFLOAD_STATE_CACHED, а затем структура NEIGHBOR_OFFLOAD_STATE_DELEGATED.
Ip4OffloadConstState
Указывает состояние константного пути (IPv4). Это состояние отформатировано как структура PATH_OFFLOAD_STATE_CONST .
Ip4OffloadCachedState
Указывает состояние кэшированного пути (IPv4). Это состояние отформатировано как структура PATH_OFFLOAD_STATE_CACHED .
Ip4OffloadDelegatedState
Указывает состояние делегированного пути (IPv4). Это состояние отформатировано как PATH_OFFLOAD_STATE_DELEGATED структура. В настоящее время состояние делегированного пути отсутствует. Структура PATH_OFFLOAD_STATE_DELEGATED не содержит переменных.
Ip4OffloadState
Задает все состояние пути (IPv4), включая состояние константы, кэшированного и делегированного пути. Это состояние отформатировано как структура PATH_OFFLOAD_STATE_CONST, за которой следует структура PATH_OFFLOAD_STATE_CACHED, а затем структура PATH_OFFLOAD_STATE_DELEGATED.
Ip6OffloadConstState
Указывает состояние постоянного пути (IPv6). Это состояние отформатировано как структура PATH_OFFLOAD_STATE_CONST.
Ip6OffloadCachedState
Указывает состояние кэшированного пути (IPv6). Это состояние отформатировано как PATH_OFFLOAD_STATE_CACHED структура.
Ip6OffloadDelegatedState
Указывает состояние делегированного пути (IPv6). Это состояние отформатировано как структура PATH_OFFLOAD_STATE_DELEGATED. В настоящее время состояние делегированного пути отсутствует. Структура PATH_OFFLOAD_STATE_DELEGATED не содержит переменных.
Ip6OffloadState
Задает все состояние пути (IPv6), включая состояние константы, кэшированного и делегированного пути. Это состояние отформатировано как структура PATH_OFFLOAD_STATE_CONST, за которой следует структура PATH_OFFLOAD_STATE_CACHED, а затем структура PATH_OFFLOAD_STATE_DELEGATED.
TcpOffloadConstState
Указывает постоянное состояние TCP. Это состояние отформатировано как структура TCP_OFFLOAD_STATE_CONST .
TcpOffloadCachedState
Указывает кэшированное состояние TCP. Это состояние отформатировано как структура TCP_OFFLOAD_STATE_CACHED .
TcpOffloadDelegatedState
Указывает делегированное состояние TCP. Это состояние отформатировано как TCP_OFFLOAD_STATE_DELEGATED структура.
TcpOffloadResourceState
Зарезервировано. Это значение OFFLOAD_STATE_TYPE, а также структура TCP_OFFLOAD_RESOURCE_STATE в настоящее время не используются.
TcpOffloadState
Указывает все состояние TCP, включая константное, кэшированное и делегированное состояние TCP. Это состояние отформатировано как структура TCP_OFFLOAD_STATE_CONST, за которой следует структура TCP_OFFLOAD_STATE_CACHED, а затем структура TCP_OFFLOAD_STATE_DELEGATED.
FilterReservedOffloadState
Зарезервировано для драйверов фильтров.
NextBlock
Указатель на следующую NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST структуру на уровне состояния разгрузки (сосед, путь или TCP), указанный элементом Type элемента Header . NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST структуры, связанные с помощью указателей NextBlock , всегда находятся на одном уровне состояния разгрузки. Значение NextBlock, равное NULL, указывает на отсутствие дополнительной структуры следующего NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST на этом уровне.
_NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST
DependentBlockList
Указатель на структуру NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, которая находится на зависимом слое состояния разгрузки (более высокий слой в дереве состояния разгрузки).
Для разгрузки tcp-дымохода:
Элемент DependentBlockList структуры NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST на соседнем слое может указывать только на структуру NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST на уровне пути. Элемент DependentBlockList структуры NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST на уровне пути может указывать только на структуру NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST на уровне TCP. Элемент DependentBlockList структуры NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST на уровне TCP всегда имеет значение NULL.
Значение DependentBlockList, равное NULL, указывает на отсутствие зависимой структуры NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST.
Status
Состояние завершения запуска разгрузки, разгрузки запроса, разгрузки обновления, отмены разгрузки, отмены разгрузки или завершения операции разгрузки, выполненной целевым объектом разгрузки в состоянии, связанном со структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST или на которую ссылается эта структура. В зависимости от операции NDIS записывает одно из следующих NDIS_STATUS значений в элемент Status :
NDIS_STATUS_SUCCESS
Инициировать разгрузку. Базовый целевой объект разгрузки успешно разгрузил состояние, связанное со структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, и состояние, связанное со всеми непосредственно зависимыми PROTOCOL_MINIPORT_OFFLOAD_BLOCK_LIST структурами.
Запрос, обновление, отмена разгрузки или завершение. Целевой объект разгрузки успешно выполнил операцию в состоянии, связанном со структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST или на которое ссылается эта структура.
NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS
Инициировать разгрузку. Базовый целевой объект разгрузки успешно разгрузил состояние, связанное со структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, но не смог разгрузить состояние, связанное с одной или несколькими непосредственно зависимыми NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST структурами.
Запрос, обновление, отмена разгрузки или отмена. Не допускается значение состояния.
NDIS_STATUS_FAILURE
Инициировать разгрузку. Базовому целевому объекту разгрузки не удалось разгрузить состояние, связанное со структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST. Причину сбоя нельзя классифицировать.
Запрос, обновление, отмена разгрузки. Целевому объекту разгрузки не удалось выполнить операцию с состоянием, связанным со структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST или на которое ссылается структура.
NDIS_STATUS_RESOURCES
Инициировать разгрузку. Целевому объекту разгрузки не удалось разгрузить состояние, связанное со структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, так как целевому объекту разгрузки не удалось выделить достаточно памяти узла.
Запрос, обновление, отмена разгрузки или отмена. Не допускается значение состояния.
NDIS_STATUS_OFFLOAD_TCP_ENTRIES
Инициировать разгрузку. Целевому объекту разгрузки не удалось разгрузить состояние, связанное со структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, так как целевому объекту разгрузки не удалось выделить объект состояния tcp-подключения.
Запрос, обновление, отмена разгрузки или отмена. Не допускается значение состояния.
NDIS_STATUS_OFFLOAD_PATH_ENTRIES
Инициировать разгрузку. Целевому объекту разгрузки не удалось разгрузить состояние, связанное со структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, так как целевому объекту состояния пути не удалось выделить.
Запрос, обновление, отмена разгрузки или отмена. Не допускается значение состояния.
NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES
Запуск разгрузки. Целевому объекту разгрузки не удалось разгрузить состояние, связанное со структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, так как целевому объекту разгрузки не удалось выделить соседний объект состояния.
Запрос, обновление, отмена разгрузки или отмена. Не допускается значение состояния.
NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES
Инициирование разгрузки. Целевому объекту разгрузки не удалось разгрузить состояние, связанное со структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, так как стек узлов указал в элементе DlSourceAddress, отличном от NULL. NEIGHBOR_OFFLOAD_STATE_CONST структуры и целевой объект разгрузки либо не поддерживает настраиваемые исходные MAC-адреса, либо не может принимать дополнительные исходные MAC-адреса.
Запрос, обновление, отмена разгрузки или отмена. Не допускается значение состояния.
NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES
Запуск разгрузки. Целевому объекту разгрузки не удалось разгрузить состояние, связанное со структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, так как целевому объекту разгрузки не удалось выделить структуру данных для исходного IP-адреса, на который ссылается указатель SourceAddress в структура PATH_OFFLOAD_STATE_CONST .
Запрос, обновление, отмена разгрузки или отмена. Не допускается значение состояния.
NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER
Запуск разгрузки. Целевому объекту разгрузки не удалось разгрузить состояние, связанное со структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, так как целевому объекту разгрузки не удалось выделить достаточное количество буферов передачи TCP.
Запрос, обновление, отмена разгрузки или отмена. Не допускается значение состояния.
NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER
Инициировать разгрузку. Целевому объекту разгрузки не удалось разгрузить состояние, связанное со структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, так как целевому объекту разгрузки не удалось выделить достаточное количество буферов приема TCP.
Запрос, обновление, отмена разгрузки или отмена. Не допускается значение состояния.
NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW
Инициировать разгрузку: целевому объекту разгрузки не удалось разгрузить состояние, связанное со структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, так как член InitialRcvWnd , указанный в TCP_OFFLOAD_STATE_CACHED структура больше, чем может поддерживать целевой объект разгрузки.
Запрос, обновление, отмена разгрузки или отмена. Не допускается значение состояния.
NDIS_STATUS_OFFLOAD_VLAN_ENTRIES
Запуск разгрузки. Целевой объект разгрузки не имеет ресурсов для отслеживания дополнительных идентификаторов виртуальных ЛС.
Запрос, обновление, отмена разгрузки или отмена. Не допускается значение состояния.
NDIS_STATUS_OFFLOAD_VLAN_MISMATCH
Запуск разгрузки. Соседний идентификатор VlanId является ненулевым и не соответствует одному из идентификаторов виртуальной локальной сети интерфейса.
Запрос, обновление, отмена разгрузки или отмена. Не допускается значение состояния.
NDIS_STATUS_OFFLOAD_PATH_MTU
Инициировать разгрузку. Путь MTU для TCP-подключения больше, чем поддерживает целевой объект разгрузки.
Запрос, обновление, отмена разгрузки или отмена. Не допускается значение состояния.
NdisReserved[3]
Зарезервировано для использования NDIS.
OffloadHandle
Указатель на структуру NDIS_OFFLOAD_HANDLE . Структура NDIS_OFFLOAD_HANDLE представляет контекст протокола или промежуточного драйвера для объекта разгрузки состояния.
ProtocolReserved[2]
Зарезервировано для использования драйверами протоколов, которые могут использовать эту область в своих целях.
MiniportReserved[2]
Зарезервировано для использования целевыми объектами разгрузки или частью мини-порта промежуточного драйвера.
ImReserved[2]
Зарезервировано для использования промежуточными драйверами, которые могут использовать эту область для собственных целей.
Scratch[2]
Драйвер протокола или промежуточный драйвер может использовать эту область для внутреннего отслеживания. Информация в этой области действительна только в том случае, если драйвер владеет NDIS_PROTOCOL_OFFLOAD_BLOCK_LIS Т.
SourceHandle
Этот член не имеет значения для протокола или промежуточного драйвера. Протокол или промежуточный драйвер не должны изменять этот элемент.
При распространении завершения операции обработки состояния промежуточный драйвер копирует
SourceHandle, хранящийся в записи вызова мгновенных сообщений к члену SourceHandle NDIS_MINIPORT_OFFLOAD_BLOCK_LIST структуры, которая передается в функцию NdisMXxxComplete.
PortNumber
Номер порта, идентифицирующий порт адаптера мини-порта. Чтобы назначить номер порта адаптера мини-порта, вызовите функцию NdisMAllocatePort . Нулевое значение определяет порт адаптера мини-порта по умолчанию. Используйте порт по умолчанию, если драйвер мини-порта не выделил порты для указанного адаптера.
NetBufferListChain
Если в протоколе или промежуточном драйвере указано значение NULL , NetBufferListChain не имеет значения и может игнорироваться базовым драйвером или целевым объектом разгрузки.
Если протокол или промежуточный драйвер задает значение, отличное от NULL , NetBufferListChain указывает на NET_BUFFER_LIST структуру, которая может быть автономной структурой или первой структурой в связанном списке таких структур. Каждая структура NET_BUFFER_LIST в связанном списке описывает одну NET_BUFFER структуру. Структура NET_BUFFER сопоставляется с цепочкой списков дескрипторов памяти (MDL). NET_BUFFER_LIST и связанные структуры блокируются, чтобы они оставались в физической памяти. Однако они не сопоставляются с системной памятью.
Многомерные списки, связанные с NET_BUFFER структурами, содержат данные, передаваемые в рамках операции обработки состояния или завершения такой операции. В настоящее время связанный список может содержать только один тип данных: необработанные данные отправки. Дополнительные сведения об отправке данных см. в разделе Обработка необработанных данных во время и после операции разгрузки.
Целевой объект разгрузки или промежуточный драйвер может передавать необработанные данные отправки в слишком большой драйвер или стек узла при завершении разгрузки TCP-подключения. В этом случае целевой объект разгрузки указывает значение, отличное от NULL , для элемента NetBufferListChain при вызовеФункция NdisMTerminateOffloadComplete. Если целевой объект разгрузки не передает данные отправки для завершаемого TCP-подключения, он задает значение NULL для элемента NetBufferListChain .
Комментарии
Промежуточный драйвер создает структуру NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST из NDIS_MINIPORT_OFFLOAD_BLOCK_LIST структуру при распространении операции обработки состояния. When Распространяя завершение такой операции, промежуточный драйвер использует NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST структуру для создания NDIS_MINIPORT_OFFLOAD_BLOCK_LIST структуры.
За структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST в памяти сразу же следует структура состояния разгрузки , содержащая состояние, которое должно быть (или которое было) выгружено, запрошено, обновлено, признано недействительным или завершено. Элемент Typeв заголовке структуры NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST указывает тип состояния разгрузки и, как следствие, конкретную структуру состояния разгрузки (или структуры), которые следуют за NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST структурой в памяти.
Требования
Требование | Значение |
---|---|
Заголовок | ndischimney.h (включая Ndischimney.h) |