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

Расширение коммутатора Hyper-V вызывает функцию UpdateNetBufferListDestinations для фиксации изменений, внесенных расширением в пакет, содержащий несколько портов назначения расширяемого коммутатора. Функция сохраняет эти изменения в контексте расширяемого переадресации внешнего контроллера (OOB) структуры 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 , чтобы получить массив портов назначения расширяемого коммутатора для пакета. Если функция возвращает успешно, массив получается с помощью параметра Destinations , который содержит указатель на структуру 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 (включая Ndis.h)
IRQL <= DISPATCH_LEVEL

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

AllocateNetBufferListForwardingContext

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest

OID_SWITCH_NIC_DELETE