Инициализация драйвера Минипорта VF
В этом разделе описываются рекомендации по написанию функции MiniportInitializeEx для минипорт-драйвера для виртуальной функции PCI Express (PCIe). VF предоставляется сетевым адаптером, поддерживающим виртуализацию одно корневых операций ввода-вывода (SR-IOV).
Примечание.
Эти рекомендации применяются только к драйверам минипорта VF сетевого адаптера SR-IOV. Рекомендации по инициализации минипорта драйвера физической функции PCIe (PF) адаптера см. в разделе инициализация драйвера минипорта PF.
Драйвер минипорта VF выполняет те же действия, что и любой драйвер минипорта NDIS при вызове функции MiniportInitializeEx. Дополнительные сведения об этих шагах см. в разделе "Инициализация минипорт-драйвера".
Помимо этих действий, драйвер минипорта VF должен выполнить следующие дополнительные действия, когда NDIS вызывает функцию MiniportInitializeEx драйвера:
Драйвер мини-порта VF вызывает функцию NdisGetHypervisorInfo , чтобы убедиться, что она выполняется в дочерней секции Hyper-V. Эта функция возвращает NDIS_HYPERVISOR_INFO структуру, которая определяет тип секции. Если тип секции сообщается как NdisHypervisorPartitionMsHvChild, минипорт драйвер выполняется в дочерней секции Hyper-V, подключенной к PF на адаптере.
Примечание.
Если тип секции сообщается как NdisHypervisorPartitionMsHvParent, драйвер минипорта выполняется в родительской секции Hyper-V, подключенной к PF на адаптере. В этом случае минипорт-драйвер не должен инициализироваться в качестве драйвера VF. Если это возможно, драйвер должен инициализировать как драйвер PF, как описано в последовательности инициализации для драйверов минипорта PF.
В отличие от драйвера минипорта PF, драйвер минипорта VF не должен быть установлен с стандартизованными ключевое слово SR-IOV и не должен пытаться прочитать эти ключевое слово. Дополнительные сведения об этих ключевое слово см. в стандартных ключевых словах INF для SR-IOV.
Драйвер минипорта VF сообщает возможности оборудования SR-IOV базового виртуального сетевого адаптера через структуру NDIS_SRIOV_CAPABILITIES , которая инициализирована следующим образом:
Драйвер минипорта инициализирует элемент заголовка. Драйвер задает элемент type заголовка для NDIS_OBJECT_TYPE_DEFAULT.
Начиная с версии NDIS 6.30, драйвер минипорта устанавливает для элемента "Редакция заголовка" значение NDIS_SRIOV_CAPABILITIES _REVISION_1, а элемент "Размер" — NDIS_SIZEOF_SRIOV_CAPABILITIES_REVISION_1.
Драйвер минипорта задает флаг NDIS_SRIOV_CAPS_PF_MINIPORT в члене ШриовCapabilities , чтобы сообщить о возможностях SR-IOV.
Примечание.
Драйвер минипорта VF должен задать флаг NDIS_SRIOV_CAPS_VF_MINIPORT и флаг NDIS_SRIOV_CAPS_SRIOV_SUPPORTED.
Драйвер минипорта VF регистрирует возможности SR-IOV сетевого адаптера, выполнив следующие действия.
Минипорт-драйвер инициализирует структуру NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .
Минипорт-драйвер задает члены HardwareSriovCapabilities и CurrentSriovCapabilities указателем на ранее инициализированную структуру NDIS_SRIOV_CAPABILITIES.
Драйвер вызывает NdisMSetMiniportAttributes и задает параметр MiniportAttributes указателем на структуру NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES.
Драйвер мини-порта VF не должен объявлять возможности очереди виртуальных машин (VMQ). Однако драйвер может объявить поддержку других технологий NDIS, таких как управление питанием и масштабирование на стороне получения (RSS).
Дополнительные сведения о RSS см. в статье "Масштабирование на стороне получения".