Поделиться через


структура 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)

См. также раздел

NDIS_OBJECT_HEADER

NEIGHBOR_OFFLOAD_STATE_CACHED

NEIGHBOR_OFFLOAD_STATE_CONST

NEIGHBOR_OFFLOAD_STATE_DELEGATED

NdisInitiateOffload

NdisInvalidateOffload

NdisMAllocatePort

NdisQueryOffload

NdisTerminateOffload

NdisUpdateOffload

PATH_OFFLOAD_STATE_CACHED

PATH_OFFLOAD_STATE_CONST

PATH_OFFLOAD_STATE_DELEGATED

ProtocolInitiateOffloadComplete ProtocolInvalidateOffloadComplete ProtocolQueryOffloadComplete ProtocolTerminateOffloadComplete ProtocolUpdateOffloadComplete

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED