NdisMEnableVirtualization 函数 (ndis.h)

微型端口驱动程序在网络适配器上创建或删除 NIC 交换机期间调用 NdisMEnableVirtualization 函数。 通过调用此函数,驱动程序在网络适配器的物理函数(PF)的 PCI Express(PCIe)配置空间中配置单根 I/O 虚拟化(SR-IOV)扩展功能结构。

注意,NdisMEnableVirtualization 只能由网络适配器的 PF 的微型端口驱动程序调用。
 

语法

NDIS_STATUS NdisMEnableVirtualization(
  [in] NDIS_HANDLE NdisMiniportHandle,
  [in] USHORT      NumVFs,
  [in] BOOLEAN     EnableVFMigration,
  [in] BOOLEAN     EnableMigrationInterrupt,
  [in] BOOLEAN     EnableVirtualization
);

参数

[in] NdisMiniportHandle

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

[in] NumVFs

一个 USHORT 值,该值包含要为网络适配器启用的虚拟函数(VF)数。 NdisMEnableVirtualization 将 SR-IOV 扩展功能结构的 NumFS 成员设置为 NumVF 参数的值。

注意 如果 enableVirtualization 参数 为 FALSE,则必须将 NumVf 设置为零。
 

[in] EnableVFMigration

此参数保留为 NDIS,必须设置为 FALSE。

[in] EnableMigrationInterrupt

此参数保留为 NDIS,必须设置为 FALSE。

[in] EnableVirtualization

一个 BOOLEAN 值,该值指定是否应在网络适配器的 PCI 配置空间中启用虚拟化。 如果 EnableVirtualization 为 TRUE,NdisMEnableVirtualization 设置 SR-IOV 控件成员 VF Enable 位。 NdisMEnableVirtualization 如果 EnableVirtualization 为 FALSE,则清除此位。

返回值

NdisMEnableVirtualization 可以返回以下状态值之一。

返回代码 描述
NDIS_STATUS_SUCCESS
虚拟化作成功完成。
NDIS_STATUS_NOT_SUPPORTED
适配器或系统不支持 SR-IOV。
NDIS_STATUS_INVALID_PARAMETER
EnableVirtualization 参数设置为 FALSE,NumVF 参数设置为非零值。
NDIS_STATUS_FAILURE
虚拟化作失败。
注释NdisMEnableVirtualization 函数在启用虚拟化时调用它来启用虚拟化时失败。 驱动程序必须先禁用虚拟化(通过调用具有 EnableVirtualization 参数设置为 FALSE 的函数),然后驱动程序才能重新启用虚拟化。
 

言论

PF 微型端口驱动程序调用 NdisMEnableVirtualization 在 PCI 配置空间中配置 SR-IOV 扩展功能字段。 此调用用于在配置空间中启用或禁用虚拟化,还用于指定网络适配器应向 PCIe 构造公开的 VF 数。

当 PF 微型端口驱动程序处理 OID_NIC_SWITCH_CREATE_SWITCH的 OID 方法请求时,驱动程序将调用 NdisMEnableVirtualization,以便在 NIC 交换机的网络适配器上启用虚拟化。 驱动程序通过使用以下参数设置调用 NdisMEnableVirtualization 来执行此作。

术语 描述
NumVF 设置为要为 NIC 交换机启用的 VF 数。
EnableVirtualization 设置为 TRUE。
 

当 PF 微型端口驱动程序处理 OID_NIC_SWITCH_DELETE_SWITCH的 OID 方法请求时,驱动程序会调用 NdisMEnableVirtualization 禁用网络适配器上的虚拟化。 驱动程序通过使用以下参数设置调用 NdisMEnableVirtualization 来执行此作:

术语 描述
NumVF 设置为零。
EnableVirtualization 设置为 FALSE。
 

有关如何创建 NIC 交换机的详细信息,请参阅 创建 NIC 交换机

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

虚拟总线驱动程序的交互

如果独立硬件供应商(IHV)在其 SR-IOV 驱动程序包中提供虚拟总线驱动程序(VBD),则其微型端口驱动程序不得调用 NdisMEnableVirtualization。 相反,驱动程序必须通过专用信道与 VBD 接口,并请求 VBD 调用 EnableVirtualization。 此函数由基础 PCI 总线驱动程序支持的 GUID_PCI_VIRTUALIZATION_INTERFACE 接口提供。

在 Hyper-V 父分区的管理作系统中运行的 VBD 可以通过向 PCI 总线上的物理设备对象(PDO)发出 IRP_MN_QUERY_INTERFACE 请求来查询 GUID_PCI_VIRTUALIZATION_INTERFACE 接口。 必须从 IRQL = PASSIVE_LEVEL发出此请求。 在此请求中,驱动程序必须将 InterfaceType 参数设置为GUID_PCI_VIRTUALIZATION_INTERFACE。

要求

要求 价值
最低支持的客户端 NDIS 6.30 及更高版本中受支持。
目标平台 普遍
标头 ndis.h (包括 Ndis.h)
Ndis.lib
IRQL PASSIVE_LEVEL

另请参阅

EnableVirtualization

GUID_PCI_VIRTUALIZATION_INTERFACE

OID_NIC_SWITCH_CREATE_SWITCH

OID_NIC_SWITCH_DELETE_SWITCH