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


Функция NdisMEnableVirtualization (ndis.h)

Драйвер мини-порта вызывает функцию NdisMEnableVirtualization во время создания или удаления коммутатора сетевого адаптера на сетевом адаптере. Вызывая эту функцию, драйвер настраивает структуру расширенных возможностей однокорневой виртуализации ввода-вывода (SR-IOV) в пространстве конфигурации PCI Express (PCIe) для физической функции (PF) сетевого адаптера.

Примечание. NdisMEnableVirtualization должен вызываться только драйвером мини-порта для PF сетевого адаптера.
 

Синтаксис

NDIS_STATUS NdisMEnableVirtualization(
  [in] NDIS_HANDLE NdisMiniportHandle,
  [in] USHORT      NumVFs,
  [in] BOOLEAN     EnableVFMigration,
  [in] BOOLEAN     EnableMigrationInterrupt,
  [in] BOOLEAN     EnableVirtualization
);

Параметры

[in] NdisMiniportHandle

Сетевой адаптер обрабатывает данные NDIS, переданные параметру MiniportAdapterHandleобъекта MiniportInitializeEx.

[in] NumVFs

Значение USHORT, содержащее количество виртуальных функций (VF), которые должны быть включены для сетевого адаптера. NdisMEnableVirtualization задает для элемента NumVFs структуры расширенных возможностей SR-IOV значение параметра NumVFs .

Примечание Если параметр EnableVirtualization имеет значение FALSE, numVFs необходимо задать нулевое значение.
 

[in] EnableVFMigration

Этот параметр зарезервирован для NDIS и должен иметь значение FALSE.

[in] EnableMigrationInterrupt

Этот параметр зарезервирован для NDIS и должен иметь значение FALSE.

[in] EnableVirtualization

Значение BOOLEAN, указывающее, должна ли быть включена виртуализация в пространстве конфигурации PCI сетевого адаптера. Если параметр EnableVirtualization имеет значение TRUE, NdisMEnableVirtualization задает бит VF Enable элемента управления SR-IOV. NdisMEnableVirtualization очищает этот бит, если EnableVirtualization имеет значение FALSE.

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

NdisMEnableVirtualization может возвращать одно из следующих значений состояния.

Код возврата Описание
NDIS_STATUS_SUCCESS
Операция виртуализации успешно завершена.
NDIS_STATUS_NOT_SUPPORTED
Адаптер или система не поддерживают SR-IOV.
NDIS_STATUS_INVALID_PARAMETER
Для параметра EnableVirtualization задано значение FALSE, а для параметра NumVFs — ненулевое значение.
NDIS_STATUS_FAILURE
Операция виртуализации завершилась сбоем.
Примечание Функция NdisMEnableVirtualization завершается сбоем, если она вызывается для включения виртуализации, когда виртуализация уже включена. Прежде чем драйвер сможет повторно включить виртуализацию, драйвер должен отключить виртуализацию (вызвав функцию с параметром EnableVirtualization , установленным в значение FALSE).
 

Комментарии

Драйверы мини-порта PF вызывают NdisMEnableVirtualization , чтобы настроить поля расширенных возможностей SR-IOV в пространстве конфигурации PCI. Этот вызов используется для включения или отключения виртуализации в пространстве конфигурации, а также для указания количества виртуальных машин, которые должны быть предоставлены структуре PCIe сетевым адаптером.

Когда драйвер минипорта PF обрабатывает запрос метода OID OID_NIC_SWITCH_CREATE_SWITCH, драйвер вызывает NdisMEnableVirtualization , чтобы включить виртуализацию сетевого адаптера для коммутатора сетевого адаптера. Для этого драйвер вызывает NdisMEnableVirtualization со следующими параметрами.

Термин Описание
NumVFs Задайте для параметра число виртуальных машин, которые должны быть включены для коммутатора сетевого адаптера.
EnableVirtualization Задайте значение TRUE.
 

Когда драйвер мини-порта PF обрабатывает запрос метода OID OID_NIC_SWITCH_DELETE_SWITCH, драйвер вызывает NdisMEnableVirtualization , чтобы отключить виртуализацию сетевого адаптера. Для этого драйвер вызывает NdisMEnableVirtualization со следующими параметрами:

Термин Описание
NumVFs Задайте нулевое значение.
EnableVirtualization Установите значение FALSE.
 

Дополнительные сведения о создании коммутатора сетевого адаптера см. в разделе Создание коммутатора сетевого адаптера.

Дополнительные сведения об интерфейсе SR-IOV см. в статье Обзор виртуализации однокорневого ввода-вывода (SR-IOV).

Взаимодействие с драйвером виртуальной шины

Если независимый поставщик оборудования (IHV) предоставляет драйвер виртуальной шины (VBD) в составе пакета драйверов SR-IOV, его драйвер мини-порта не должен вызывать NdisMEnableVirtualization. Вместо этого драйвер должен осуществлять взаимодействие с VBD через частный коммуникационный канал и запрашивать, чтобы VBD вызвал EnableVirtualization. Эта функция предоставляется интерфейсом GUID_PCI_VIRTUALIZATION_INTERFACE , поддерживаемым базовым драйвером шины PCI.

VBD, работающий в операционной системе управления родительского раздела Hyper-V, может запрашивать интерфейс GUID_PCI_VIRTUALIZATION_INTERFACE , отправляя IRP_MN_QUERY_INTERFACE запрос к объекту физического устройства (PDO) на шине PCI. Этот запрос должен быть выполнен из IRQL = PASSIVE_LEVEL. В этом запросе драйвер должен задать для параметра InterfaceType значение GUID_PCI_VIRTUALIZATION_INTERFACE.

Требования

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

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

EnableVirtualization

GUID_PCI_VIRTUALIZATION_INTERFACE

OID_NIC_SWITCH_CREATE_SWITCH

OID_NIC_SWITCH_DELETE_SWITCH