NdisMEnableVirtualization 函数 (ndis.h)
在网络适配器上创建或删除 NIC 交换机期间,微型端口驱动程序调用 NdisMEnableVirtualization 函数。 通过调用此函数,驱动程序在 PCI Express (PCIe) 配置空间中配置单根 I/O 虚拟化 (SR-IOV) 扩展功能结构, (PF) 。
语法
NDIS_STATUS NdisMEnableVirtualization(
[in] NDIS_HANDLE NdisMiniportHandle,
[in] USHORT NumVFs,
[in] BOOLEAN EnableVFMigration,
[in] BOOLEAN EnableMigrationInterrupt,
[in] BOOLEAN EnableVirtualization
);
参数
[in] NdisMiniportHandle
NDIS 传递给 MiniportInitializeEx 的 MiniportAdapterHandle 参数的网络适配器句柄。
[in] NumVFs
一个 USHORT 值,该值包含要为网络适配器启用的虚拟函数 (VF) 的数目。 NdisMEnableVirtualization 将 SR-IOV 扩展功能结构的 NumVFs 成员设置为 NumVFs 参数的值。
[in] EnableVFMigration
此参数是为 NDIS 保留的,必须设置为 FALSE。
[in] EnableMigrationInterrupt
此参数是为 NDIS 保留的,必须设置为 FALSE。
[in] EnableVirtualization
一个 BOOLEAN 值,该值指定是否应在网络适配器的 PCI 配置空间中启用虚拟化。 如果 EnableVirtualization 为 TRUE, 则 NdisMEnableVirtualization 将设置 SR-IOV 控件成员的 VF Enable 位。 如果 EnableVirtualization 为 FALSE,则 NdisMEnableVirtualization 会清除此位。
返回值
NdisMEnableVirtualization 可以返回以下状态值之一。
返回代码 | 说明 |
---|---|
|
虚拟化操作已成功完成。 |
|
适配器或系统不支持 SR-IOV。 |
|
EnableVirtualization 参数设置为 FALSE,NumVFs 参数设置为非零值。 |
|
虚拟化操作失败。
注意 如果调用 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) 提供虚拟总线驱动程序 (VBD) 作为其 SR-IOV 驱动程序包的一部分,则其微型端口驱动程序不得调用 NdisMEnableVirtualization。 相反,驱动程序必须通过专用信道与 VBD 进行交互,并请求 VBD 调用 EnableVirtualization。 此函数由基础 PCI 总线驱动程序支持的 GUID_PCI_VIRTUALIZATION_INTERFACE 接口提供。在 Hyper-V 父分区的管理操作系统中运行的 VBD 可以通过在 PCI 总线上向其物理设备对象发出IRP_MN_QUERY_INTERFACE请求来查询GUID_PCI_VIRTUALIZATION_INTERFACE接口, (PDO) 。 必须从 IRQL = PASSIVE_LEVEL 发出此请求。 在此请求中,驱动程序必须将 InterfaceType 参数设置为 GUID_PCI_VIRTUALIZATION_INTERFACE。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.30 及更高版本中受支持。 |
目标平台 | 通用 |
标头 | ndis.h (包括 Ndis.h) |
Library | Ndis.lib |
IRQL | PASSIVE_LEVEL |
另请参阅