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

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

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

Синтаксис

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

Параметры

[in] NdisMiniportHandle

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

[in] VFId

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

[out] SegmentNumber

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

[out] BusNumber

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

[out] FunctionNumber

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

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

None

Remarks

При обработке запроса метода 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 через частный канал связи и запрашивать вызов GetLocation для VBD. Эта функция предоставляется из интерфейса 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 (включая Ndis.h)
Библиотека Ndis.lib
IRQL PASSIVE_LEVEL

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

GUID_PCI_VIRTUALIZATION_INTERFACE

GetLocation

NDIS_MAKE_RID

OID_NIC_SWITCH_ALLOCATE_VF