NDIS 发出OID_NIC_SWITCH_CREATE_SWITCH的对象标识符 (OID) 方法请求,以在网络适配器上创建 NIC 交换机。 当它处理此 OID 请求时,微型端口驱动程序将为适配器上的 NIC 开关分配资源。
NDIS 向网络适配器的 PCI Express(PCIe)物理功能(PF)的微型端口驱动程序发出此 OID 方法请求。 支持单根 I/O 虚拟化(SR-IOV)接口的 PF 微型端口驱动程序需要此 OID 方法请求。
注意, 过度应用驱动程序(如协议或筛选器驱动程序)无法向 PF 微型端口驱动程序发出 OID 方法请求OID_NIC_SWITCH_CREATE_SWITCH。
NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向 NDIS_NIC_SWITCH_PARAMETERS 结构的指针。
言论
当它收到 OID_NIC_SWITCH_CREATE_SWITCH 的 OID 方法请求时,PF 微型端口驱动程序必须执行以下作:
如果 PF 微型端口驱动程序支持静态交换机创建和配置,则在 NDIS 调用 MiniportInitializeEx时,它会创建 NIC 开关。 当驱动程序处理此 OID 请求时,它必须验证 NDIS_NIC_SWITCH_PARAMETERS 结构中的配置参数。 参数必须与驱动程序在调用 MiniportInitializeEx期间创建开关所用的参数相同。 如果这不是 true,驱动程序必须失败 OID 请求。
有关详细信息,请参阅 NIC 交换机的静态创建。
如果 PF 微型端口驱动程序支持动态交换机创建和配置,驱动程序必须验证 NDIS_NIC_SWITCH_PARAMETERS 结构的配置值,并根据这些值创建 NIC 开关。
有关详细信息,请参阅 动态创建 NIC 交换机。
PF 微型端口驱动程序必须为 NIC 交换机上的默认 VPort 分配必要的硬件和软件资源。
注释 默认 VPort 始终通过 OID 请求创建OID_NIC_SWITCH_CREATE_SWITCH,并通过 OID_NIC_SWITCH_DELETE_SWITCH的 OID 请求删除。 OID_NIC_SWITCH_CREATE_VPORT 和 OID_NIC_SWITCH_DELETE_VPORT 的 OID 请求用于在 NIC 交换机上创建和删除非默认 VPorts。
支持动态交换机创建和配置的 PF 微型端口驱动程序必须通过调用 NdisMEnableVirtualization在交换机上启用 SR-IOV 虚拟化。 此调用在适配器的 PCI Express(PCIe)配置空间的 SR-IOV 扩展功能结构中配置 NumVF 成员和 VF 启用 位。
有关 SR-IOV 配置空间的详细信息,请参阅 PCI-SIG 单根 I/O 虚拟化和共享 1.1 规范。
注意 如果 PF 微型端口驱动程序支持静态交换机创建,则在调用 miniportInitializeEx时,在创建开关后启用 SR-IOV 虚拟化。
如果 PF 微型端口驱动程序成功完成OID_NIC_SWITCH_CREATE_SWITCH的 OID 方法请求,则允许执行以下作:
可以通过 OID_NIC_SWITCH_ALLOCATE_VF的 OID 方法请求在 NIC 交换机上分配 VF。
可以通过 OID_NIC_SWITCH_CREATE_VPORT的 OID 方法请求在 NIC 交换机上创建非默认 VPorts。
有关如何处理此 OID 请求的详细信息,请参阅 处理OID_NIC_SWITCH_CREATE_SWITCH请求。
返回状态代码
PF 微型端口驱动程序为 OID_NIC_SWITCH_CREATE_SWITCH 的 OID 方法请求返回以下状态代码之一。
状态代码 | 描述 |
---|---|
NDIS_STATUS_SUCCESS |
OID 请求已成功完成。 |
NDIS_STATUS_NOT_SUPPORTED |
PF 微型端口驱动程序要么不支持 SR-IOV 接口,要么未启用该接口。 |
NDIS_STATUS_INVALID_PARAMETER |
NDIS_NIC_SWITCH_PARAMETERS 结构的一个或多个成员具有无效值。 |
NDIS_STATUS_INVALID_LENGTH |
信息缓冲区的长度小于 sizeof(NDIS_NIC_SWITCH_PARAMETERS)。 PF 微型端口驱动程序必须设置 数据。METHOD_INFORMATION。NDIS_OID_REQUEST 结构中的 BytesNeeded 成员达到所需的最小缓冲区大小。 |
NDIS_STATUS_FAILURE |
由于其他原因,请求失败。 |
要求
版本 |
NDIS 6.30 及更高版本中受支持。 |
页眉 |
Ntddndis.h (包括 Ndis.h) |