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


Перечисление виртуальных портов в сетевом адаптере

Сверхуровневый драйвер или пользовательское приложение может получить список всех виртуальных портов (VPorts) в сетевом коммутаторе сетевого адаптера, который поддерживает виртуализацию одно корневых операций ввода-вывода (SR-IOV). Драйвер или приложение отправляет запрос метода идентификатора объекта (OID) OID_NIC_SWITCH_ENUM_VPORTS для получения этого списка.

После успешного возврата из этого запроса OID элемент InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на буфер, содержащий следующее:

  • Структура NDIS_NIC_SWITCH_VPORT_INFO_ARRAY , определяющая количество элементов в массиве.

  • Массив структур NDIS_NIC_SWITCH_VPORT_INFO . Каждая из этих структур содержит сведения о VPort на сетевом коммутаторе сетевого адаптера.

    Примечание Если на сетевом адаптере не созданы виртуальные порты, драйвер устанавливает для элемента NumElements структуры NDIS_NIC_SWITCH_VPORT_INFO_ARRAY значение 0 и NDIS_NIC_SWITCH_VPORT_INFO структуры не возвращаются.

Перед тем, как драйвер или приложение пользователя выдает запрос на OID_NIC_SWITCH_ENUM_VPORTS , оно должно инициализировать структуру NDIS_NIC_SWITCH_VPORT_INFO_ARRAY , которая передается вместе с запросом. При инициализации структуры NDIS_NIC_SWITCH_VPORT_INFO_ARRAY драйвер или приложение должны следовать следующим рекомендациям:

  • Если флаг NDIS_NIC_SWITCH_VPORT_INFO_ARRAY_ENUM_ON_SPECIFIC_SWITCH установлен в элементе Flags , возвращаются сведения обо всех виртуальных портах, созданных на указанном коммутаторе сетевой карты. Переключатель сетевого адаптера задается элементом SwitchId этой структуры.

    Примечание Начиная с Windows Server 2012 интерфейс SR-IOV поддерживает только один коммутатор сетевого адаптера. Этот параметр называется коммутатором сетевой карты по умолчанию, на который ссылается идентификатор NDIS_DEFAULT_SWITCH_ID. Независимо от флагов, установленных в элементе Flags , параметру SwitchId необходимо задать значение NDIS_DEFAULT_SWITCH_ID.

  • Если флаг NDIS_NIC_SWITCH_VPORT_INFO_ARRAY_ENUM_ON_SPECIFIC_FUNCTION установлен в элементе Flags , возвращаются сведения обо всех виртуальных портах, подключенных к указанной физической функции PCI Express (PCIe) или виртуальной функции (VF) сетевого адаптера. PF или VF задается элементом AttachedFunctionId этой структуры.

    Если для элемента AttachedFunctionId задано значение NDIS_PF_FUNCTION_ID, возвращаются сведения для всех виртуальных портов. Сюда входит VPort по умолчанию, подключенный к PF. Если для элемента AttachedFunctionId задан допустимый идентификатор VF, возвращаются сведения обо всех виртуальных портах, присоединенных к указанному VF.

    Примечание Начиная с Windows Server 2012 к VF можно подключить только один неотложимый VPort. Однако к PF можно подключить несколько виртуальных портов (включая VPort по умолчанию).

  • Если для элемента Flags задано значение 0, возвращаются сведения обо всех виртуальных портах, подключенных к PF или VF на сетевом адаптере. В этом случае значения SwitchId и AttachedFunctionId игнорируются.

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