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

Функция AddNetBufferListDestination добавляет один порт назначения для пакета, указанного в структуре NET_BUFFER_LIST .

Синтаксис

NDIS_SWITCH_ADD_NET_BUFFER_LIST_DESTINATION NdisSwitchAddNetBufferListDestination;

NDIS_STATUS NdisSwitchAddNetBufferListDestination(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [in]      PNDIS_SWITCH_PORT_DESTINATION Destination
)
{...}

Параметры

[in] NdisSwitchContext

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

[in, out] NetBufferList

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

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

[in] Destination

Указатель на структуру NDIS_SWITCH_PORT_DESTINATION . Эта структура определяет порт расширяемого коммутатора назначения, в который будет перенаправлен пакет.

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

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

Комментарии

Расширение переадресации расширяемого коммутатора вызывает Метод AddNetBufferListDestination , чтобы определить один порт назначения расширяемого коммутатора для пакета. Расширение задает этот порт путем инициализации структуры NDIS_SWITCH_PORT_DESTINATION . Расширение задает для параметра Destination указатель на эту структуру. Дополнительные сведения о том, как указать порт назначения расширяемого коммутатора, см. в статье Управление данными порта назначения расширяемого коммутатора Hyper-V.

Примечание Из соображений производительности расширение не должно вызывать пакеты AddNetBufferListDestination с несколькими портами назначения.
 
Перед вызовом AddNetBufferListDestination расширение должно следовать этим рекомендациям:
  • Только расширения пересылки могут вызывать AddNetBufferListDestination , чтобы добавить порт назначения для пакета. Дополнительные сведения об этом типе расширения см. в разделе Переадресация расширений.
  • Если расширение переадресации создает пакет с одним портом назначения, оно должно сначала вызвать функцию AllocateNetBufferListForwardingContext . Эта функция выделяет контекст переадресации расширяемого коммутатора для пакета. Эти данные содержат расширяемые порты источника коммутатора и порты назначения в сведениях о внеполосном подключении (OOB) для пакета.

    Дополнительные сведения об этом контексте см. в разделе Контекст переадресации расширяемого коммутатора Hyper-V.

  • После того как расширение изменяет сведения о портах назначения в структуре NDIS_SWITCH_PORT_DESTINATION , оно вызывает Метод AddNetBufferListDestination , чтобы зафиксировать изменения в структуре NET_BUFFER_LIST пакета.
    Примечание Из соображений производительности расширение не должно вызывать функцию UpdateNetBufferListDestinations для фиксации изменений для пакета.
     
Примечание После того как расширение переадресации зафиксирует изменения портов назначения в контексте переадресации, конечные порты нельзя удалить, и можно изменить только элемент IsExcludedструктуры NDIS_SWITCH_PORT_DESTINATION порта назначения. Дополнительные сведения см. в разделе Исключение доставки пакетов в порты назначения расширяемого коммутатора.
 

Требования

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

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

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

UpdateNetBufferListDestinations