структура NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST (ndischimney.h)
[Функция разгрузки дымохода TCP не рекомендуется и не должна использоваться.]
Структура 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, включая заголовок, в байтах.
Элемент типа структуры 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), указанный элементом типа элемента заголовка. NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST структуры, связанные с NextBlock, указатели всегда находятся на одном уровне состояния разгрузки. Значение NextBlockNULL указывает на отсутствие дополнительной 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.
Значение DependentBlockListNULL указывает на отсутствие зависимой структуры 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, так как стек узлов указал не-NULLDlSourceAddress в элементе NEIGHBOR_OFFLOAD_STATE_CONST структура и целевой объект разгрузки либо не поддерживает настраиваемые исходные MAC-адреса, либо не может принимать дополнительные исходные MAC-адреса.
Запрос, обновление, недопустимое или завершение разгрузки: недопустимое значение состояния.
NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES
Инициирование разгрузки. Не удалось выгрузить состояние, связанное со структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, так как целевой объект разгрузки не мог выделить структуру данных для исходного IP-адреса, на который ссылается указатель sourceAddress 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 T.
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 сопоставляется с цепочкой списков дескрипторов памяти (MDLs). NET_BUFFER_LIST и связанные структуры заблокированы, чтобы они оставались резидентными в физической памяти. Однако они не сопоставляются с системной памятью.
Многомерные выражения, связанные с структурами NET_BUFFER, содержат данные, передаваемые в рамках операции управления состоянием или завершения такой операции. В настоящее время связанный список может содержать только один тип данных: невыполненные данные отправки. Дополнительные сведения об отправке данных см. в разделе Обработка невыполненных данных отправки во время и послеоперации разгрузки.
Целевой объект разгрузки или промежуточный драйвер может передавать незавершенные данные, передаваемые драйверу или стеку узлов при завершении разгрузки TCP-подключения. В этом случае целевой объект разгрузки указывает значение, отличное отNULL для члена NetBufferListChain при вызове функции NdisMTerminateOffloadComplete. Если целевой объект разгрузки не передает данные отправки для завершения TCP-подключения, он задает значение NULL для члена NetBufferListChain.
Замечания
Промежуточный драйвер создает структуру NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST из NDIS_MINIPORT_OFFLOAD_BLOCK_LIST структуру при распространении операции управления состоянием. Когда распространения такой операции, промежуточный драйвер использует структуру NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST для создания структуры NDIS_MINIPORT_OFFLOAD_BLOCK_LIST.
За структурой NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST можно сразу же следить за структурой состояния разгрузки, содержащей состояние, которое должно быть загружено (или которое было) выгружено, запрашивается, обновляется, недопустимая или завершенная. Элемент типа элемента заголовка структуры NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST указывает тип состояния разгрузки и, по сути, конкретную структуру состояния разгрузки (или структуры), следуйте NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST структуре в памяти.
Требования
Требование | Ценность |
---|---|
заголовка | ndischimney.h (включая Ndischimney.h) |