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 传递给 MiniportInitializeEx 的 MiniportAdapterHandle 参数的网络适配器句柄。
[in] VFId
为其返回设备位置的 VF 的标识符。
[in] BlockMask
一个 ULONGLONG 值,该值指定前 64 个 VF 配置块的位掩码。 位掩码中的每个位对应于一个 VF 配置块。 如果位设置为 1,则与相应的 VF 配置块关联的数据已更改。
返回值
无
备注
VF 配置块用于 PF 和 VF 微型端口驱动程序之间的反向通道通信。 IHV 可以为设备定义一个或多个 VF 配置块。 每个 VF 配置块都有 IHV 定义的格式、长度和块 ID。
注意 每个 VF 配置块中的数据仅由 PF 和 VF 微型端口驱动程序使用。
- VF 驱动程序,在来宾操作系统中运行。 此操作系统在 Hyper-V 子分区中运行。
-
在管理操作系统中运行的 PF 驱动程序。
此操作系统在 Hyper-V 父分区中运行。
- 在来宾操作系统中,NDIS 发出 I/O 控制请求 IOCTL_VPCI_INVALIDATE_BLOCK 请求。 完成此 IOCTL 后,NDIS 会收到 VF 配置数据已更改的通知。
-
在管理操作系统中,执行以下步骤:
- PF 微型端口驱动程序调用 NdisMInvalidateConfigBlock 函数,以通知 NDIS VF 配置数据已更改且不再有效。
-
NDIS 向在管理操作系统中运行的虚拟化堆栈发出有关 VF 配置块数据的更改的信号。 虚拟化堆栈缓存 BlockMask 参数数据。
注意 每次 PF 微型端口驱动程序调用 NdisMInvalidateConfigBlock 时,虚拟化会将 BlockMask 参数数据与缓存中的当前值一起堆栈。
- 虚拟化堆栈通知虚拟 PCI (VPCI) 驱动程序(在来宾操作系统中运行)VF 配置数据无效。 虚拟化堆栈将缓存的 BlockMask 参数数据发送到 VPCI 驱动程序。
-
在来宾操作系统中,将执行以下步骤:
- VPCI 驱动程序将缓存的 BlockMask 参数数据保存在与IOCTL_VPCI_INVALIDATE_BLOCK请求关联的VPCI_INVALIDATE_BLOCK_OUTPUT结构的 BlockMask 成员中。
-
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 配置数据更改的连续通知。
- 当 VF 驱动程序处理 OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK 请求时,它会从指定的 VF 配置块读取数据。
有关 SR-IOV 接口的详细信息,请参阅 单根 I/O 虚拟化 (SR-IOV) 概述 。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 不支持,NDIS 6.30 及更高版本支持。 |
最低受支持的服务器 | Windows Server 2012 |
目标平台 | 通用 |
标头 | ndis.h (包括 Ndis.h) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
另请参阅
NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO