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


OID_SRIOV_READ_VF_CONFIG_SPACE

Переопределяющий драйвер выдает запрос метода идентификатора объекта (OID) OID_SRIOV_READ_VF_CONFIG_SPACE для чтения данных из пространства конфигурации PCI Express (PCIe) для указанной виртуальной функции PCIe на сетевом адаптере.

После успешного возврата из этого запроса метода OID InformationBuffer член структуры NDIS_OID_REQUEST содержит указатель на выделенный вызывающим буфер. Этот буфер отформатирован следующим образом:

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

  • Дополнительное буферное пространство для чтения данных из пространства конфигурации PCI.

Замечания

Мини-порт VF запускается в гостевой операционной системе дочерней секции Hyper-V. Из-за этого драйвер минипорта VF не может напрямую получить доступ к аппаратным ресурсам, таким как пространство конфигурации PCI VF. Только минипорт-драйвер для физической функции PCIe (PF) может получить доступ к пространству конфигурации PCI для VF. Драйвер мини-порта PF запускается в операционной системе управления Hyper-V родительской секции и имеет привилегированный доступ к ресурсам VF.

Чтобы считывать пространство конфигурации VF PCI, переопределяющие драйверы, работающие в операционной системе управления, выдают запрос метода OID OID_SRIOV_READ_VF_CONFIG_SPACE драйверу минипорта PF. Этот запрос метода OID требуется для драйверов минипорта PF, поддерживающих интерфейс виртуализации единого корневого ввода-вывода (SR-IOV).

Например, стек виртуализации, работающий в операционной системе управления, выдает запрос метода OID OID_SRIOV_READ_VF_CONFIG_SPACE, когда драйвер мини-порта VF вызывает NdisMGetBusData для чтения из пространства конфигурации VF PCI.

При обработке запроса метода OID OID_SRIOV_READ_VF_CONFIG_SPACE драйвер минипорта PF должен соответствовать следующим рекомендациям:

  • Драйвер минипорта должен убедиться, что VF, указанный VFId членом структуры NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS, содержит ресурсы, которые были ранее выделены. Драйвер минипорта выделяет ресурсы для VF через запрос метода OID OID_NIC_SWITCH_ALLOCATE_VF. Если ресурсы для указанной виртуальной машины не выделены, драйвер должен завершить запрос OID.

  • Минипорт-драйвер должен убедиться, что буфер (на который ссылается InformationBuffer член структуры NDIS_OID_REQUEST) достаточно велик, чтобы вернуть запрошенные данные пространства конфигурации PCIe. Если это не так, драйвер должен завершить запрос OID.

  • Мини-порт драйвер обычно вызывает NdisMGetVirtualFunctionBusData для запроса запрошенного пространства конфигурации PCIe. Однако минипорт-драйвер также может возвращать данные о пространстве конфигурации PCIe для VF, кэшируемые драйвером из предыдущих операций чтения или записи пространства конфигурации PCIe.

    Примечание Если независимый поставщик оборудования (IHV) предоставляет драйвер виртуальной шины (VBD) в рамках пакета драйвера SR-IOV, его минипорт-драйвер не должен вызывать NdisMGetVirtualFunctionBusData. Вместо этого драйвер должен интерфейсировать с VBD через частный канал связи и запрашивать вызов VBD ReadVfConfigBlock. Эта функция предоставляется из интерфейса GUID_VPCI_INTERFACE_STANDARD, поддерживаемого базовым драйвером виртуальной шины PCI (VPCI).

Если драйвер мини-порта PF может успешно завершить запрос OID, драйвер должен скопировать запрошенные данные пространства конфигурации PCI в буфер, на который ссылается InformationBuffer член структуры NDIS_OID_REQUEST. Драйвер копирует данные в буфер в смещение, указанное BufferOffset элемент структуры NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS.

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

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

Драйвер минипорта PF возвращает один из следующих кодов состояния для запроса метода OID OID_SRIOV_READ_VF_CONFIG_SPACE.

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

NDIS_STATUS_SUCCESS

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

NDIS_STATUS_NOT_SUPPORTED

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

NDIS_STATUS_INVALID_PARAMETER

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

NDIS_STATUS_INVALID_LENGTH

Буфер информации был слишком коротким. Драйвер минипорта должен задать DATA. METHOD_INFORMATION. Элемент BytesNeeded в структуре NDIS_OID_REQUEST к минимальному размеру буфера, который требуется.

NDIS_STATUS_FAILURE

Запрос завершился ошибкой по другим причинам.

Требования

Версия

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

Заголовок

Ntddndis.h (include Ndis.h)

См. также


GUID_VPCI_INTERFACE_STANDARD

NDIS_OID_REQUEST

NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS

NdisMGetBusData

NdisMGetVirtualFunctionBusData

OID_NIC_SWITCH_ALLOCATE_VF

ReadVfConfigBlock