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) |
См. также
NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS