OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK

NDIS 发出对象标识符 (OID) 方法请求OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK,以通知 PCI Express (PCIe) Virtual Function (VF 的微型端口驱动程序,) 一个或多个配置块中的数据已更改。 当 PCIe 物理函数的微型端口驱动程序 (PF) 调用 NdisMInvalidateConfigBlock 时,NDIS 会发出此 OID。

NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO结构的指针。 此结构指定一个或多个虚拟函数 (VF) 配置块,其数据已被 PF 微型端口驱动程序) 更改 (失效

注解

VF 配置块用于 PF 和 VF 微型端口驱动程序之间的反向通道通信。 IHV 可以为设备定义一个或多个 VF 配置块。 每个 VF 配置块都有 IHV 定义的格式、长度和块 ID。

注意 每个 VF 配置块中的数据仅由 PF 和 VF 微型端口驱动程序使用。

VF 配置数据在以下驱动程序之间交换:

  • VF 驱动程序,在来宾操作系统中运行。 此操作系统在 Hyper-V 子分区中运行。

  • 在管理操作系统中运行的 PF 驱动程序。 此操作系统在 Hyper-V 父分区中运行。

为了处理无效 VF 配置数据的通知,NDIS 和微型端口驱动程序执行以下步骤:

  1. 在来宾操作系统中,NDIS 发出 IOCTL_VPCI_INVALIDATE_BLOCK 请求的 I/O 控制请求。 完成此 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 参数数据保存在与IOCTL_VPCI_INVALIDATE_BLOCK请求关联的VPCI_INVALIDATE_BLOCK_OUTPUT结构的 BlockMask 成员中。

    2. VPCI 驱动程序成功完成 IOCTL_VPCI_INVALIDATE_BLOCK 请求。 发生这种情况时,NDIS 会向 VF 微型端口驱动程序发出OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK的 OID 方法请求。 NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO在 OID 请求中传递。 此结构包含缓存的 BlockMask 参数数据。

      NDIS 还发出另一个 IOCTL_VPCI_INVALIDATE_BLOCK 请求,用于处理 VF 配置数据更改的连续通知。

    3. 当 VF 驱动程序处理OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK请求时,它会从指定的 VF 配置块读取数据。

有关单根 I/O 虚拟化 (SR-IOV) 接口中的反向通道通信的详细信息,请参阅 SR-IOV PF/VF 反向通道通信

返回状态代码

微型端口驱动程序为 OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK 的 OID 方法请求返回以下状态代码之一。

状态代码 说明

NDIS_STATUS_SUCCESS

OID 请求已成功完成。

NDIS_STATUS_NOT_SUPPORTED

微型端口驱动程序不支持单根 I/O 虚拟化 (SR-IOV) 接口,或者未启用该接口。

NDIS_STATUS_INVALID_PARAMETER

NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO 结构的一个或多个成员具有无效值。

NDIS_STATUS_INVALID_LENGTH

信息缓冲区太短。 NDIS 设置 数据。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