NdisMInvalidateConfigBlock 函数 (ndis.h)

微型端口驱动程序调用 NdisMInvalidateConfigBlock 函数,以通知 NDIS 一个或多个虚拟函数 (VF) 配置块的数据已更改。

注意 只有微型端口驱动程序才能为网络适配器的 PCIe 物理函数 (PF) 调用 NdisMInvalidateConfigBlock
 

语法

void NdisMInvalidateConfigBlock(
  [in] NDIS_HANDLE            NdisMiniportHandle,
  [in] NDIS_SRIOV_FUNCTION_ID VFId,
  [in] ULONGLONG              BlockMask
);

参数

[in] NdisMiniportHandle

NDIS 传递给 MiniportInitializeExMiniportAdapterHandle 参数的网络适配器句柄。

[in] VFId

为其返回设备位置的 VF 的标识符。

[in] BlockMask

一个 ULONGLONG 值,该值指定前 64 个 VF 配置块的位掩码。 位掩码中的每个位对应于一个 VF 配置块。 如果位设置为 1,则与相应的 VF 配置块关联的数据已更改。

返回值

备注

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

注意 每个 VF 配置块中的数据仅由 PF 和 VF 微型端口驱动程序使用。
 
VF 配置数据在以下驱动程序之间交换:
  • VF 驱动程序,在来宾操作系统中运行。 此操作系统在 Hyper-V 子分区中运行。
  • 在管理操作系统中运行的 PF 驱动程序。

    此操作系统在 Hyper-V 父分区中运行。

为了处理无效 VF 配置数据的通知,NDIS 和微型端口驱动程序执行以下步骤:
  1. 在来宾操作系统中,NDIS 发出 I/O 控制请求 IOCTL_VPCI_INVALIDATE_BLOCK 请求。 完成此 IOCTL 后,NDIS 会收到 VF 配置数据已更改的通知。
  2. 在管理操作系统中,执行以下步骤:
    1. PF 微型端口驱动程序调用 NdisMInvalidateConfigBlock 函数,以通知 NDIS 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 反向通道通信

有关 SR-IOV 接口的详细信息,请参阅 单根 I/O 虚拟化 (SR-IOV) 概述

要求

要求
最低受支持的客户端 不支持,NDIS 6.30 及更高版本支持。
最低受支持的服务器 Windows Server 2012
目标平台 通用
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL

另请参阅

IOCTL_VPCI_INVALIDATE_BLOCK

NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO

OID_SRIOV_READ_VF_CONFIG_SPACE

VPCI_INVALIDATE_BLOCK_OUTPUT