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


функция обратного вызова 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 (include Ndis.h)
IRQL <= DISPATCH_LEVEL

См. также

AllocateNetBufferListForwardingContext

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateCloneNetBufferList

NdisFGetOptionalSwitchHandlers