Выдача запросов OID_NIC_SWITCH_ALLOCATE_VF
Прежде чем выдается запрос метода идентификатора объекта (OID) OID_NIC_SWITCH_ALLOCATE_VF на минипорт-драйвер физической функции PCI Express (PCIe) (PF), верхостоящий драйвер форматирует структуру NDIS_NIC_SWITCH_VF_PARAMETERS. Эта структура содержит параметры конфигурации для ресурсов, выделенных для виртуальной функции PCIe (VF) сетевого адаптера. Верхнеуровневый драйвер должен установить члены этой структуры следующим образом:
Элемент SwitchId должен иметь идентификатор коммутатора сетевого адаптера, созданного ранее на сетевом адаптере. Коммутатор NIC создается через вызов метода OID OID_NIC_SWITCH_CREATE_SWITCH.
При обработке запроса метода OID OID_NIC_SWITCH_ALLOCATE_VFминипорт-драйвер для физической функции PCIe выделяет ресурсы для VF. Если ресурсы выделены успешно, драйвер минипорта PF назначает VF указанному коммутатору сетевого адаптера.
Примечание Начиная с NDIS 6.30 в Windows Server 2012 интерфейс SR-IOV поддерживает только сетевой коммутатор по умолчанию на сетевом адаптере. Значение элемента SwitchId должно иметь значение NDIS_DEFAULT_SWITCH_ID.
Дополнительные сведения о коммутаторе сетевого адаптера см. в коммутаторах сетевых адаптеров.
Элемент VFId должен иметь значение NDIS_INVALID_VF_FUNCTION_ID.
Элемент RequestorId должен иметь значение NDIS_INVALID_RID.
Для элементов VMFriendlyName и VMName необходимо задать параметры дочерней секции Hyper-V. Драйвер минипорта PF использует эти члены только в информационных целях.
Примечание Дочерний раздел Hyper-V также называется виртуальной машины.
Виртуальная функция (VF) связана с указанной виртуальной машиной (VM) перед тем как накладывающийся драйвер выдает запрос OID_NIC_SWITCH_CREATE_SWITCH.
Параметр NicName должен быть установлен в качестве идентификатора сетевого адаптера виртуальной машины. Этот виртуальный адаптер предоставляется в гостевой операционной системе, работающей на виртуальной машине. Драйвер мини-порта PF использует этот элемент только для информационных целей.
Когда ресурсы выделяются для VF и он подключается к дочернему разделу, сетевой адаптер VF появляется в гостевой операционной системе. Сетевой адаптер виртуальной машины объединяется с сетевым адаптером VF для передачи пакетов через аппаратный маршрут данных VF.
Однако VF можно отсоединить от дочерней секции, например во время динамической миграции. В этом случае передача пакетов осуществляется через программный синтетический путь передачи данных. Более подробную информацию о путях данных см. в разделах SR-IOV"Пути данных".
PermanentMacAddress и CurrentMacAddress членам должны быть заданы адреса управления доступом к мультимедиа (MAC) для виртуального сетевого адаптера VF. Эти адреса открыты для сетевого стека, который запускается в гостевой операционной системе раздела дочерней виртуальной машины Hyper-V.
Высокоуровневый драйвер отправляет запрос метода OID OID_NIC_SWITCH_ALLOCATE_VF, выполнив следующие действия:
Верхний драйвер инициализирует структуру NDIS_OID_REQUEST для запроса метода OID. Драйвер устанавливает элемент InformationBuffer в виде указателя на инициализированную структуру NDIS_NIC_SWITCH_VF_PARAMETERS.
Вышележащий драйвер вызывает NdisOidRequest, чтобы направить запрос OID к базовому драйверу минипорта PF.
Примечание Когда вышестоящий драйвер вызывает NdisOidRequest, NDIS перехватывает запрос OID и проверяет параметры VF, указанные в структуре NDIS_NIC_SWITCH_VF_PARAMETERS. Если параметры проверены успешно, NDIS перенаправит идентификатор OID в драйвер мини-порта PF. В противном случае NDIS отклоняет запрос OID с NDIS_STATUS_INVALID_PARAMETER.
После того, как надлежащий драйвер запрашивает выделение ресурсов для VF, этот драйвер является единственным компонентом, который может запросить освобождение этих ресурсов для того же VF. Для того чтобы вышестоящий драйвер освободил ресурсы VF, он должен выдать запрос на установку OID OID_NIC_SWITCH_FREE_VF. Прежде чем верхний драйвер может быть остановлен, он должен освободить ресурсы для каждого виртуального функционала (VF), выделенного запросом драйвера OID_NIC_SWITCH_ALLOCATE_VF.