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 и драйверы мини-порта выполните следующие действия.

  1. В гостевой операционной системе NDIS выдает запрос на управление вводом-выводом IOCTL_VPCI_INVALIDATE_BLOCK запроса. После завершения этого IOCTL NDIS получает уведомление об изменении данных конфигурации VF.

  2. В операционной системе управления выполняются следующие действия.

    1. Драйвер мини-порта PF вызывает функцию NdisMInvalidateConfigBlock , чтобы уведомить NDIS о том, что данные конфигурации VF изменились и больше не являются допустимыми. Драйвер задает параметру BlockMask битовую маску ULONGLONG, которая указывает, какие блоки конфигурации VF были изменены. Каждый бит в битовой маске соответствует блоку конфигурации VF. Если для бита задано значение 1, данные в соответствующем блоке конфигурации VF изменились.

    2. NDIS сообщает стеку виртуализации, который выполняется в операционной системе управления, об изменении данных блока конфигурации VF. Стек виртуализации кэширует данные параметра BlockMask .

      Примечание Каждый раз, когда драйвер минипорта PF вызывает NdisMInvalidateConfigBlock, стек виртуализации возвращает данные параметра BlockMask с текущим значением в кэше.

    3. Стек виртуализации уведомляет драйвер виртуального PCI (VPCI), который выполняется в гостевой операционной системе, о том, что данные конфигурации VF недействительны. Стек виртуализации отправляет кэшированные данные параметров BlockMask драйверу VPCI.

  3. В гостевой операционной системе выполняются следующие действия.

    1. Драйвер VPCI сохраняет кэшированные данные параметров BlockMask в элементе BlockMaskструктуры VPCI_INVALIDATE_BLOCK_OUTPUT, связанной с запросом IOCTL_VPCI_INVALIDATE_BLOCK .

    2. Драйвер 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.

    3. Когда драйвер 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)

См. также раздел


IOCTL_VPCI_INVALIDATE_BLOCK

NDIS_OID_REQUEST

NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO

NdisMInvalidateConfigBlock

OID_SRIOV_READ_VF_CONFIG_SPACE

VPCI_INVALIDATE_BLOCK_OUTPUT