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


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

Мини-драйвер вызывает функцию NdisMGetVirtualFunctionLocation для запроса расположения устройства виртуальной функции PCI Express (PCIe) на шине PCI. Драйвер использует расположение устройства для создания идентификатора запрашивателя PCIe (RID) для VF.

ПримечаниеNdisMGetVirtualFunctionLocation должно вызываться только драйвером мини-порта для физической функции PCIe сетевого адаптера (PF).
 

Синтаксис

void NdisMGetVirtualFunctionLocation(
  [in]  NDIS_HANDLE            NdisMiniportHandle,
  [in]  NDIS_SRIOV_FUNCTION_ID VFId,
  [out] PUSHORT                SegmentNumber,
  [out] PUCHAR                 BusNumber,
  [out] PUCHAR                 FunctionNumber
);

Параметры

[in] NdisMiniportHandle

Сетевой адаптер обрабатывает, который NDIS передается в параметр MiniportAdapterHandleMiniportInitializeEx.

[in] VFId

Идентификатор VF, для которого возвращается расположение устройства.

[out] SegmentNumber

Указатель на указанную вызывающим переменную, в которой эта функция возвращает значение USHORT для текущего номера сегмента PCI. Это значение указывает группу шин PCI, на которой подключено устройство.

[out] BusNumber

Указатель на указанную вызывающим переменную, в которой эта функция возвращает значение UCHAR. Это значение указывает текущий номер шины PCI, на котором подключено устройство.

[out] FunctionNumber

Указатель на указанную вызывающим переменную, в которой эта функция возвращает значение UCHAR. Это значение указывает номер функции логического устройства на устройстве.

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

Никакой

Замечания

При обработке запроса метода OID_NIC_SWITCH_ALLOCATE_VFдрайвер мини-порта PF должен вернуть rid для VF, который драйвер успешно выделил на сетевом адаптере. Драйвер создает RID следующим образом:

  1. Драйвер сначала вызывает функцию NdisMGetVirtualFunctionLocation, чтобы получить сведения о расположении, связанном с шиной, для VF.
  2. Затем драйвер вызывает макрос NDIS_MAKE_RID с информацией о расположении, связанной с шиной, для создания RID.

Дополнительные сведения об выделении ресурсов VF см. в последовательности инициализации виртуальных функций.

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

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

Если независимый поставщик оборудования (IHV) предоставляет драйвер виртуальной шины (VBD) в рамках пакета драйвера SR-IOV , его минипорт-драйвер не должен вызывать NdisMGetVirtualFunctionLocation. Вместо этого драйвер должен интерфейс с VBD через частный канал связи и запросить вызов VBD GetLocation. Эта функция предоставляется из интерфейса 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 и более поздних версиях.
минимальный поддерживаемый сервер Windows Server 2012
целевая платформа Всеобщий
заголовка ndis.h (include Ndis.h)
библиотеки Ndis.lib
IRQL PASSIVE_LEVEL

См. также

GUID_PCI_VIRTUALIZATION_INTERFACE

GetLocation

NDIS_MAKE_RID

OID_NIC_SWITCH_ALLOCATE_VF