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


функция обратного вызова 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. Расширение задает параметру назначения указатель на эту структуру. Дополнительные сведения о том, как указать расширяемый порт назначения коммутатора, см. в разделе Hyper-V Управление Hyper-V расширяемыми данными порта назначения коммутатора.

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

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

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

Требования

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

См. также

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

UpdateNetBufferListDestinations