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


функция обратного вызова NDIS_SWITCH_UPDATE_NET_BUFFER_LIST_DESTINATIONS (ndis.h)

Расширение Hyper-V расширяемого коммутатора вызывает функцию UpdateNetBufferListDestinations для фиксации изменений, внесенных расширением в пакет, который содержит несколько расширяемых портов назначения коммутатора. Функция сохраняет эти изменения в расширяемом переадресации переадресации контекста NET_BUFFER_LIST структуры пакета.

Синтаксис

NDIS_SWITCH_UPDATE_NET_BUFFER_LIST_DESTINATIONS NdisSwitchUpdateNetBufferListDestinations;

NDIS_STATUS NdisSwitchUpdateNetBufferListDestinations(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [in]      UINT32 NumberOfNewDestinations,
  [in]      PNDIS_SWITCH_FORWARDING_DESTINATION_ARRAY Destinations
)
{...}

Параметры

[in] NdisSwitchContext

Значение NDIS_SWITCH_CONTEXT, содержащее дескриптор расширяемого модуля коммутатора, к которому подключено расширение расширяемого коммутатора Hyper-V. Когда расширение вызывает NdisFGetOptionalSwitchHandlers, этот дескриптор возвращается через параметр NdisSwitchContext.

[in, out] NetBufferList

Указатель на структуру NET_BUFFER_LIST для одного пакета.

примечание Эта структура должна содержать расширяемый контекст переадресации переадресации. Если расширение создало или клонировало пакет, оно должно ранее выделить эту структуру, вызвав функцию AllocateNetBufferListForwardingContext.
 

[in] NumberOfNewDestinations

Значение UINT32, указывающее количество новых портов назначения, добавленных в пакет.

[in] Destinations

Указатель на структуру NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY. Эта структура задает расширяемые порты назначения коммутатора пакета.

Примечание Расширение получило эту структуру через предыдущий вызов функции GetNetBufferListDestinations.
 

Возвращаемое значение

Если вызов выполнен успешно, функция возвращает NDIS_STATUS_SUCCESS. В противном случае возвращается код ошибки NDIS_STATUS_Xxx, определенный в Ndis.h.

Замечания

Расширение расширяемого коммутатора вызывает функцию GetNetBufferListDestinations для получения массива портов назначения расширяемого коммутатора для пакета. Если функция возвращается успешно, массив получается с помощью параметра Назначения, который содержит указатель на структуру NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY. Каждый элемент в этом массиве форматируется как структура NDIS_SWITCH_PORT_DESTINATION, указывающая порт назначения для пакета.

После получения NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY структуры расширение может выполнить следующее:

Если расширение добавляет или изменяет порты назначения в структуре NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY, расширение должно вызвать функцию updateNetBufferListDestinations , чтобы зафикс ировать эти изменения в структуре NET_BUFFER_LIST пакета.
примечание только расширения пересылки могут вызывать UpdateNetBufferListDestinations для фиксации конечных портов, которые были добавлены или изменены для пакетов с несколькими конечными портами. Дополнительные сведения об этом типе расширения см. в расширения пересылки.
 
Если вызов UpdateNetBufferListDestinations возвращает NDIS_STATUS_SUCCESS, расширяемый интерфейс коммутатора гарантирует, что расширяемый порт коммутатора и подключение сетевого адаптера, на которые ссылаются порты назначения, не будут удалены до завершения операции отправки или получения пакета.

Кроме того, после фиксации изменений для конечных портов нельзя удалить конечные порты, а можно изменить только IsExcluded член NDIS_SWITCH_PORT_DESTINATION конечного порта. Дополнительные сведения см. в исключении доставки пакетов в порты назначения расширяемого коммутатора.

Примечание По соображениям производительности расширение не должно вызывать функцию updateNetBufferListDestinations , чтобы зафикс ировать изменения в пакете только с одним конечным портом. Вместо этого расширение вызывает AddNetBufferListDestination, чтобы зафиксировать изменения порта назначения пакета.
 
Дополнительные сведения о контексте переадресации расширяемого коммутатора см. в разделе Hyper-V Контекст переадресации переадресации коммутаторов.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Поддерживается в NDIS 6.30 и более поздних версиях.
целевая платформа Настольный
заголовка ndis.h (include Ndis.h)
IRQL <= DISPATCH_LEVEL

См. также

AllocateNetBufferListForwardingContext

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest

OID_SWITCH_NIC_DELETE