OID_NIC_SWITCH_ENUM_VPORTS
过分驱动程序或用户模式应用程序发出对象标识符 (OID) OID_NIC_SWITCH_ENUM_VPORTS方法请求以获取数组。 数组中的每个元素指定在网络适配器的 NIC 交换机上创建的虚拟端口 (VPort) 的属性。
从此 OID 查询请求成功返回后,NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向包含以下内容的缓冲区的指针:
定义数组中元素数 的NDIS_NIC_SWITCH_VPORT_INFO_ARRAY 结构。
NDIS_NIC_SWITCH_VPORT_INFO 结构的数组。 其中每个结构都包含有关网络适配器的 NIC 交换机上的 VPort 的信息。
注意如果未在网络适配器上创建 VPort,驱动程序会将NDIS_NIC_SWITCH_VPORT_INFO_ARRAY结构的 NumElements 成员设置为零,并且不会返回NDIS_NIC_SWITCH_VPORT_INFO结构。
注解
过度分配驱动程序和用户模式应用程序发出OID_NIC_SWITCH_ENUM_VPORTS的 OID 查询请求,以枚举在网络适配器的 NIC 交换机上分配的 VPort。
在驱动程序或应用程序发出 OID 请求之前,它必须初始化随请求一起传递的 NDIS_NIC_SWITCH_VPORT_INFO_ARRAY 结构。 驱动程序或应用程序在初始化 NDIS_NIC_SWITCH_VPORT_INFO_ARRAY 结构时必须遵循以下准则:
如果在 Flags 成员中设置了NDIS_NIC_SWITCH_VPORT_INFO_ARRAY_ENUM_ON_SPECIFIC_SWITCH标志,则会为在指定的 NIC 交换机上创建的所有 VPort 返回信息。 NIC 开关由该结构的 SwitchId 成员指定。
注意从 Windows Server 2012 开始,SR-IOV 接口仅支持网络适配器上的默认 NIC 开关。 无论 Flags 成员中设置的标志如何, SwitchId 成员都必须设置为 NDIS_DEFAULT_SWITCH_ID。
如果在 Flags 成员中设置了NDIS_NIC_SWITCH_VPORT_INFO_ARRAY_ENUM_ON_SPECIFIC_FUNCTION标志,则会返回网络适配器上连接到指定 PCI Express (PCIe) 物理功能 (PF) 或 Virtual Function (VF) 的所有 VPort 的信息。 PF 或 VF 由该结构的 AttachedFunctionId 成员指定。
如果将 AttachedFunctionId 成员设置为 NDIS_PF_FUNCTION_ID,则会针对附加到网络适配器的 PF 的所有 VPort(包括默认 VPort)返回信息。 如果将 AttachedFunctionId 成员设置为有效的 VF 标识符,则会将所有 VPort 的信息返回到指定的 VF。
注意从 Windows Server 2012 开始,只能将一个非默认 VPort 附加到 VF。 但是,可以将多个 VPort (包括默认 VPort) 附加到 PF。
如果 Flags 成员设置为零,则会返回连接到网络适配器上 PF 或 VF 的所有 VPort 的信息。 在这种情况下, 将忽略 SwitchId 和 AttachedFunctionId 的值。
有关详细信息,请参阅 枚举网络适配器上的虚拟端口。
返回状态代码
NDIS 处理微型端口驱动程序OID_NIC_SWITCH_ENUM_VPORTS请求的 OID 方法请求。 不会向驱动程序发出此 OID 请求。
当 NDIS 处理OID_NIC_SWITCH_ENUM_VPORTS请求时,它将返回以下状态代码之一:
状态代码 | 说明 |
---|---|
NDIS_STATUS_SUCCESS |
OID 请求已成功完成。 |
NDIS_STATUS_NOT_SUPPORTED |
微型端口驱动程序不支持单根 I/O 虚拟化 (SR-IOV) 接口,或者未启用该接口。 |
NDIS_STATUS_INVALID_PARAMETER |
NDIS_NIC_SWITCH_VF_INFO_ARRAY 结构的一个或多个成员具有无效值。 |
NDIS_STATUS_INVALID_LENGTH |
信息缓冲区太短。 NDIS 设置数据。METHOD_INFORMATION。NDIS_OID_REQUEST结构中的 BytesNeeded 成员达到所需的最小缓冲区大小。 |
NDIS_STATUS_FAILURE |
由于其他原因,请求失败。 |
要求
版本 |
在 NDIS 6.30 及更高版本中受支持。 |
标头 |
Ntddndis.h (包括 Ndis.h) |