функция обратного вызова 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 для одного пакета.
[in] NumberOfNewDestinations
Значение UINT32, указывающее количество новых портов назначения, добавленных в пакет.
[in] Destinations
Указатель на структуру NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . Эта структура определяет порты назначения расширяемого коммутатора пакета.
Возвращаемое значение
Если вызов завершается успешно, функция возвращает 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_PORT_DESTINATION в массив.
Дополнительные сведения см. в разделе Добавление данных порта назначения расширяемого коммутатора в пакет.
-
Измените существующие элементы NDIS_SWITCH_PORT_DESTINATION массива, чтобы исключить пересылку пакета на указанный порт.
Дополнительные сведения см. в разделе Исключение доставки пакетов в порты назначения расширяемого коммутатора.
Кроме того, после фиксации изменений для портов назначения конечные порты нельзя удалить, и можно изменить только элемент IsExcludedструктуры NDIS_SWITCH_PORT_DESTINATION порта назначения. Дополнительные сведения см. в разделе Исключение доставки пакетов в порты назначения расширяемого коммутатора.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается в NDIS 6.30 и более поздних версиях. |
Целевая платформа | Персональный компьютер |
Верхняя часть | ndis.h (включая Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
См. также раздел
AllocateNetBufferListForwardingContext