Запрос регистров базовых адресов PCI виртуальной функции
Примечание Этот метод можно использовать только в драйверах, работающих в операционной системе управления родительского раздела Hyper-V.
Драйвер шины PCI, работающий в операционной системе управления родительского раздела Hyper-V, запрашивает требования к памяти или пространству адресов ввода-вывода для каждого базового регистра адресов PCI (BAR) сетевого адаптера. Драйвер шины PCI выполняет этот запрос при первом обнаружении адаптера в шине.
С помощью этого запроса PCI BAR драйвер шины PCI определяет следующее:
Поддерживается ли сетевым адаптером интерфейс PCI BAR.
Если bar поддерживается, сколько памяти или адресного пространства ввода-вывода требуется для bar.
Драйвер PCI выполняет этот запрос PCI BAR следующим образом:
Драйвер PCI сначала записывает все из них в bar.
Затем драйвер 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_BAR_RESOURCES могут быть выданы только 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 , чтобы определить эти сведения.
Дополнительные сведения о базовых регистрах адресов устройства PCI см. в спецификации локальной шины PCI.