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

Функция SetNetBufferListSource задает идентификатор порта источника расширяемого коммутатора Hyper-V и индекс сетевого адаптера для пакета, указанного в структуре NET_BUFFER_LIST .

Синтаксис

NDIS_SWITCH_SET_NET_BUFFER_LIST_SOURCE NdisSwitchSetNetBufferListSource;

NDIS_STATUS NdisSwitchSetNetBufferListSource(
  [in] NDIS_SWITCH_CONTEXT NdisSwitchContext,
       PNET_BUFFER_LIST NetBufferList,
  [in] NDIS_SWITCH_PORT_ID PortId,
  [in] NDIS_SWITCH_NIC_INDEX NicIndex
)
{...}

Параметры

[in] NdisSwitchContext

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

NetBufferList

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

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

[in] PortId

Значение NDIS_SWITCH_PORT_ID, указывающее уникальный идентификатор порта источника на расширяемом коммутаторе.

[in] NicIndex

Значение NDIS_SWITCH_NIC_INDEX, указывающее индекс сетевого адаптера, подключенного к порту расширяемого коммутатора, заданному параметром PortId .

Дополнительные сведения о NDIS_SWITCH_NIC_INDEX значениях см. в разделе Значения индекса сетевого адаптера.

Примечание Этот параметр должен указывать значение индекса сетевого адаптера, который находится в подключенном состоянии. Нельзя указать значения индекса для сетевых адаптеров, которые находятся в созданном или отключенном состоянии. Дополнительные сведения о состояниях сетевого подключения см. в разделе Состояния порта расширяемого коммутатора Hyper-V и состояния сетевого адаптера.
 

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

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

Комментарии

Расширение расширяемого коммутатора вызывает функцию SetNetBufferListSource , чтобы задать идентификатор исходного порта и индекс сетевого адаптера в структуре NET_BUFFER_LIST пакета. Расширение делает это для следующих типов пакетов:

  • Новый пакет, выделенный расширением для операций отправки или получения.
    Примечание Прежде чем расширение вызовет SetNetBufferListSource для выделенного пакета, оно должно вызвать Метод AllocateNetBufferListForwardingContext.
     
  • Повторяющийся пакет, клонированный расширением из исходного пакета, который он фильтровал. Расширение дублирует пакет, вызывая NdisAllocateCloneNetBufferList.
В обоих случаях для нового или дублированного пакета для идентификатора исходного порта будет задано значение NDIS_SWITCH_DEFAULT_PORT_ID , а для индекса исходного сетевого адаптера — значение NDIS_SWITCH_DEFAULT_NIC_INDEX. Расширение вызывает функцию SetNetBufferListSource для изменения идентификатора исходного порта и индекса сетевого адаптера в структуре NET_BUFFER_LIST пакета.

Например, пакет с идентификатором исходного порта NDIS_SWITCH_DEFAULT_PORT_ID является доверенным и обходит множество расширяемых политик портов коммутатора. Эти политики включают списки управления доступом (ACL) и качество обслуживания (QoS). Если расширение указывает для пакета порт источника, отличный от порта по умолчанию, это позволяет применять политики для этого порта к пакету.

Примечание Так как пакеты с идентификатором исходного порта NDIS_SWITCH_DEFAULT_PORT_ID являются доверенными, расширение должно очень тщательно использовать этот идентификатор исходного порта при передаче трафика пакетов. Дополнительные сведения о рекомендуемом использовании NDIS_SWITCH_DEFAULT_PORT_ID для исходных портов см. в разделе Управление данными порта источника расширяемого коммутатора Hyper-V.
 
Дополнительные сведения об операциях отправки и получения пакетов см. в разделе Фильтрация операций отправки и получения пакетов.

Требования

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

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

AllocateNetBufferListForwardingContext

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateCloneNetBufferList

NdisFGetOptionalSwitchHandlers