OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK
NDIS выдает запрос метода идентификатора объекта (OID) OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK, чтобы уведомить драйвер минипорта виртуальной функции PCI Express (PCIe) (VF) о том, что данные в одном или нескольких блоках конфигурации изменились. NDIS выдает этот идентификатор идентификатора, когда драйвер мини-порта для физической функции PCIe (PF) вызывает NdisMInvalidateConfigBlock.
Элемент InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO структуру. Эта структура определяет один или несколько блоков конфигурации виртуальной функции (VF), данные которых были изменены (признаны недействительными) драйвером мини-порта PF.
Комментарии
Блок конфигурации VF используется для обмена данными между PF и драйверами мини-портов VF. IHV может определить один или несколько блоков конфигурации VF для устройства. Каждый блок конфигурации VF имеет определенный IHV формат, длину и идентификатор блока.
Примечание Данные из каждого блока конфигурации VF используются только драйверами мини-портов PF и VF.
Данные конфигурации VF обмениваются между следующими драйверами:
Драйвер VF, который выполняется в операционной системе на виртуальной машине. Эта операционная система работает в дочернем разделе Hyper-V.
Драйвер PF, который выполняется в операционной системе управления. Эта операционная система работает в родительском разделе Hyper-V.
Чтобы обрабатывать уведомления о недопустимых данных конфигурации VF, NDIS и драйверы мини-порта выполните следующие действия.
В гостевой операционной системе NDIS выдает запрос на управление вводом-выводом IOCTL_VPCI_INVALIDATE_BLOCK запроса. После завершения этого IOCTL NDIS получает уведомление об изменении данных конфигурации VF.
В операционной системе управления выполняются следующие действия.
Драйвер мини-порта PF вызывает функцию NdisMInvalidateConfigBlock , чтобы уведомить NDIS о том, что данные конфигурации VF изменились и больше не являются допустимыми. Драйвер задает параметру BlockMask битовую маску ULONGLONG, которая указывает, какие блоки конфигурации VF были изменены. Каждый бит в битовой маске соответствует блоку конфигурации VF. Если для бита задано значение 1, данные в соответствующем блоке конфигурации VF изменились.
NDIS сообщает стеку виртуализации, который выполняется в операционной системе управления, об изменении данных блока конфигурации VF. Стек виртуализации кэширует данные параметра BlockMask .
Примечание Каждый раз, когда драйвер минипорта PF вызывает NdisMInvalidateConfigBlock, стек виртуализации возвращает данные параметра BlockMask с текущим значением в кэше.
Стек виртуализации уведомляет драйвер виртуального PCI (VPCI), который выполняется в гостевой операционной системе, о том, что данные конфигурации VF недействительны. Стек виртуализации отправляет кэшированные данные параметров BlockMask драйверу VPCI.
В гостевой операционной системе выполняются следующие действия.
Драйвер VPCI сохраняет кэшированные данные параметров BlockMask в элементе BlockMaskструктуры VPCI_INVALIDATE_BLOCK_OUTPUT, связанной с запросом IOCTL_VPCI_INVALIDATE_BLOCK .
Драйвер VPCI успешно завершает запрос IOCTL_VPCI_INVALIDATE_BLOCK . В этом случае NDIS отправляет запрос метода OID OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK драйверу мини-порта VF. В запросе OID передается NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO . Эта структура содержит кэшированные данные параметров BlockMask .
NDIS также отправляет другой запрос IOCTL_VPCI_INVALIDATE_BLOCK для обработки последовательных уведомлений об изменениях данных конфигурации VF.
Когда драйвер VF обрабатывает запрос OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK, он считывает данные из указанных блоков конфигурации VF.
Дополнительные сведения о взаимодействии с серверным каналом в интерфейсе SR-IOV в рамках единого корневого интерфейса виртуализации ввода-вывода см. в разделе Sr-IOV PF/VF Backchannel Communication.
Коды состояния возврата
Драйвер мини-порта возвращает один из следующих кодов состояния для запроса метода OID OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK.
Код состояния | Описание |
---|---|
NDIS_STATUS_SUCCESS |
Запрос OID успешно завершен. |
NDIS_STATUS_NOT_SUPPORTED |
Драйвер мини-порта либо не поддерживает интерфейс SR-IOV, либо не поддерживает интерфейс sr-IOV. |
NDIS_STATUS_INVALID_PARAMETER |
Один или несколько элементов структуры NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO имеют недопустимые значения. |
NDIS_STATUS_INVALID_LENGTH |
Буфер сведений был слишком коротким. NDIS задает DATA. SET_INFORMATION. Элемент BytesNeeded в NDIS_OID_REQUEST структуру до размера структуры NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO . |
NDIS_STATUS_FAILURE |
Сбой запроса по другим причинам. |
Требования
Версия |
Поддерживается в NDIS 6.30 и более поздних версиях. |
Заголовок |
Ntddndis.h (включая Ndis.h) |
См. также раздел
NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO