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


OID_SRIOV_PROBED_BARS

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

NDIS выдает запросы OID OID_SRIOV_PROBED_BARS к драйверу мини-порта для физической функции PCIe сетевого адаптера (PF). Этот запрос OID необходим для драйверов мини-портов PF, поддерживающих интерфейс sr-IOV.

Элемент InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на буфер. Этот буфер имеет следующий формат:

  • Структура NDIS_SRIOV_PROBED_BARS_INFO , содержащая параметры для операции чтения в BAR PCI сетевого адаптера.

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

Комментарии

Драйвер шины 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 OID_SRIOV_PROBED_BARS могут быть выданы только NDIS. Запрос OID не должен выдаваться с помощью слишком ных драйверов, таких как протокол драйверов фильтров.

Запрос OID_SRIOV_PROBED_BARS содержит структуру NDIS_SRIOV_PROBED_BARS_INFO . Когда драйвер минипорта PF обрабатывает этот OID, драйвер должен возвращать значения PCI BAR в массиве, на который ссылается элемент BaseRegisterValuesOffsetструктуры NDIS_SRIOV_PROBED_BARS_INFO . Для каждого смещения в массиве драйвер минипорта PF должен задать для элемента массива значение ULONG bar с тем же смещением в пространстве конфигурации PCI физического адаптера.

Каждое значение BAR, возвращаемое драйвером, должно быть таким же, как и в запросе PCI BAR, которое выполняется драйвером PCI, работающим в операционной системе управления. Драйвер мини-порта PF может вызвать NdisMQueryProbedBars для определения этих сведений.

Дополнительные сведения о BAR устройства PCI см. в статье Спецификация локальной шины PCI.

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

Коды состояния возврата

Драйвер мини-порта PF возвращает один из следующих кодов состояния для запроса запроса OID_SRIOV_PROBED_BARS:

Код состояния Описание

NDIS_STATUS_SUCCESS

Запрос OID успешно завершен.

NDIS_STATUS_NOT_SUPPORTED

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

NDIS_STATUS_INVALID_PARAMETER

Один или несколько членов структуры NDIS_SRIOV_PROBED_BARS_INFO имеют недопустимые значения.

NDIS_STATUS_INVALID_LENGTH

Буфер сведений меньше (sizeof(NDIS_SRIOV_PROBED_BARS_INFO) + PCI_TYPE0_ADDRESSES). Драйвер мини-порта PF должен задать data. QUERY_INFORMATION. Элемент BytesNeeded в NDIS_OID_REQUEST структуру до минимального требуемого размера буфера.

NDIS_STATUS_FAILURE

Сбой запроса по другим причинам.

Требования

Версия

Поддерживается в NDIS 6.30 и более поздних версиях.

Заголовок

Ntddndis.h (включая Ndis.h)

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


NDIS_OID_REQUEST

NDIS_SRIOV_PROBED_BARS_INFO

NdisMQueryProbedBars