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


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

Драйвер мини-порта вызывает функцию NdisMQueryProbedBars для получения значений базовых регистров адресов (BAR) PCI Express (PCIe) сетевого адаптера. Эта функция возвращает значения BAR, которые были предоставлены сетевым адаптером после запроса, выполненного драйвером шины PCI. Этот запрос определяет объем памяти или адресного пространства ввода-вывода, необходимого сетевому адаптеру.

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

Синтаксис

NDIS_STATUS NdisMQueryProbedBars(
  [in]  NDIS_HANDLE NdisMiniportHandle,
  [out] PULONG      BaseRegisterValues
);

Параметры

[in] NdisMiniportHandle

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

[out] BaseRegisterValues

Указатель на массив значений ULONG. Массив содержит значение ULONG для каждой панели bar сетевого адаптера PCIe.

Примечание. NdisMQueryProbedBars возвращает максимум PCI_TYPE0_ADDRESSES значений в этом массиве.
 

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

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

Код возврата Описание
NDIS_STATUS_SUCCESS
Операция запроса успешно завершена.
NDIS_STATUS_FAILURE
Сбой операции запроса.

Комментарии

Драйвер шины PCI, работающий в операционной системе управления родительского раздела Hyper-V, запрашивает требования к памяти или пространству адресов ввода-вывода для каждого регистра базовых адресов PCI (BAR) сетевого адаптера. Драйвер шины PCI выполняет этот запрос при первом обнаружении адаптера в шине.

С помощью этого запроса PCI BAR драйвер шины PCI определяет следующее:

  • Указывает, поддерживается ли интерфейс PCI BAR сетевым адаптером.
  • Если bar поддерживается, сколько памяти или адресного пространства ввода-вывода требуется для bar.
Драйвер виртуальной шины PCI (VPCI) работает в гостевой операционной системе дочернего раздела Hyper-V. Когда виртуальная функция PCI Express (PCIe) подключена к дочернему разделу, драйвер шины VPCI предоставляет виртуальный сетевой адаптер для VF (сетевого адаптера VF). Перед этим драйвер шины VPCI должен выполнить запрос PCI BAR для определения требуемого объема памяти или адресного пространства, необходимых сетевому адаптеру VF.

Так как доступ к пространству конфигурации PCI является привилегированной операцией, его могут выполнять только компоненты, работающие в операционной системе управления родительского раздела Hyper-V. Когда драйвер шины VPCI запрашивает BAR PCI, NDIS отправляет запрос идентификатора объекта (OID) OID_SRIOV_PROBED_BARS драйверу мини-порта PF. Результаты, возвращаемые этим запросом OID, перенаправляются драйверу шины VPCI, чтобы определить, какой объем адресного пространства памяти потребуется сетевому адаптеру VF.

Во время обработки этого запроса OID драйвер может вызвать NdisMQueryProbedBars , чтобы получить значения, возвращаемые из запроса BAR, выполняемого драйвером PCI.

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

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

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

Если независимый поставщик оборудования (IHV) предоставляет драйвер виртуальной шины (VBD) в составе пакета драйверов SR-IOV, его драйвер мини-порта не должен вызывать NdisMQueryProbedBars. Вместо этого драйвер должен выполнять взаимодействие с VBD через частный коммуникационный канал и запрашивать вызов GetVirtualFunctionProbedBars. Эта функция предоставляется из интерфейса 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

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

GUID_PCI_VIRTUALIZATION_INTERFACE

GetVirtualFunctionProbedBars

OID_SRIOV_PROBED_BARS