NDIS_SWITCH_NIC_PARAMETERS 结构 (ntddndis.h)

NDIS_SWITCH_NIC_PARAMETERS 结构指定连接到 Hyper-V 可扩展交换机端口的网络适配器 (NIC) 的配置参数。

语法

typedef struct _NDIS_SWITCH_NIC_PARAMETERS {
  NDIS_OBJECT_HEADER           Header;
  ULONG                        Flags;
  NDIS_SWITCH_NIC_NAME         NicName;
  NDIS_SWITCH_NIC_FRIENDLYNAME NicFriendlyName;
  NDIS_SWITCH_PORT_ID          PortId;
  NDIS_SWITCH_NIC_INDEX        NicIndex;
  NDIS_SWITCH_NIC_TYPE         NicType;
  NDIS_SWITCH_NIC_STATE        NicState;
  NDIS_VM_NAME                 VmName;
  NDIS_VM_FRIENDLYNAME         VmFriendlyName;
  GUID                         NetCfgInstanceId;
  ULONG                        MTU;
  USHORT                       NumaNodeId;
  UCHAR                        PermanentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
  UCHAR                        VMMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
  UCHAR                        CurrentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH];
  BOOLEAN                      VFAssigned;
  ULONG64                      NdisReserved[2];
} NDIS_SWITCH_NIC_PARAMETERS, *PNDIS_SWITCH_NIC_PARAMETERS;

成员

Header

NDIS_SWITCH_NIC_PARAMETERS 结构的类型、修订和大小。 此成员的格式设置为 NDIS_OBJECT_HEADER 结构。

标头Type 成员必须设置为 NDIS_OBJECT_TYPE_DEFAULT。 若要指定NDIS_SWITCH_NIC_PARAMETERS结构的版本,必须将 HeaderRevision 成员设置为以下值:

NDIS_SWITCH_NIC_PARAMETERS_REVISION_1

NDIS 6.30 及更高版本的原始版本。

Size 成员设置为 NDIS_SIZEOF_NDIS_SWITCH_NIC_PARAMETERS_REVISION_1

Flags

包含标志的按位 ORULONG 值。 定义了以下标志值。

含义
NDIS_SWITCH_NIC_FLAGS_NIC_INITIALIZING
此标志是在 VM NIC 对象的生存期内首次颁发 OID_SWITCH_NIC_CREATE OID 时设置的。 如果设置了此标志:
  • 如果 Hyper-V 可扩展交换机扩展需要在将 OID 向下传递 OID 之前保留封装空间,可以选择性地降低 MTU 成员在 NDIS_SWITCH_NIC_PARAMETERS 结构中的值。 该扩展将无法为任何其他类型的 NIC 保留封装空间。
  • 扩展不应增加 MTU 值。
仅当 NicType 成员为 NdisSwitchNicTypeSynthetic 时,才会设置此标志。

NicName

一个 NDIS_SWITCH_NIC_NAME 值,该值指定连接到可扩展交换机端口的网络适配器的唯一内部名称。

有关详细信息,请参见“备注”部分。

NicFriendlyName

一个 NDIS_SWITCH_NIC_FRIENDLYNAME 值,该值指定网络适配器的用户友好说明。

PortId

一个NDIS_SWITCH_PORT_ID值,该值包含网络适配器连接到的可扩展交换机端口的唯一标识符。

NicIndex

一个 NDIS_SWITCH_NIC_INDEX 值,该值指定连接到 PortId 成员指定的可扩展交换机端口的网络适配器的索引。

有关NDIS_SWITCH_NIC_INDEX值的详细信息,请参阅 网络适配器索引值

NicType

一个 NDIS_SWITCH_NIC_TYPE 值,该值指定连接到可扩展交换机端口的网络适配器的类型。

NicState

一个NDIS_SWITCH_NIC_STATE值,该值指定网络适配器的当前状态。

VmName

一个 NDIS_VM_NAME 值,该值指定运行公开网络适配器的来宾操作系统所在的 Hyper-V 子分区的唯一内部名称。

Hyper-V 子分区也称为虚拟机 (VM) 。

注意仅当 NicType 成员包含值 NdisSwitchNicSyntheticNicNdisSwitchNicEmulatedNic 时,此成员才有效。
 

VmFriendlyName

NetCfgInstanceId

一个 GUID 值,该值指定基础网络适配器的 NetCfgInstanceId 注册表值。

注意 仅当 NicType 成员设置为 NdisSwitchNicTypeExternalNdisSwitchNicTypeInternal 时,此成员才有效。 NetCfgInstanceId 在虚拟网络适配器初始化后才有效。
 

MTU

一个 ULONG 值,该值指定网络适配器的最大传输单位 (MTU) 大小(以字节为单位)。

注意 此成员的值在 VM NIC 的生存期内可能会更改。 因此,扩展应读取以下 OID 向下传递的 NDIS_SWITCH_NIC_PARAMETERS 结构的此成员:
 

NumaNodeId

一个 USHORT 值,该值指定 CPU 的 NUMA) 节点的首选非统一内存访问 (标识符。 在支持 NUMA 体系结构的计算机上,首选 NUMA 节点是与网络适配器的距离最小的 CPU。

注意 仅当 NicType 成员设置为 NdisSwitchNicTypeSyntheticNdisSwitchNicTypeEmulated 时,此成员才有效。
 

PermanentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH]

一个 UCHAR 数组,指定在网络适配器的主机分区上配置的媒体访问控制 (MAC) 地址。 这可以不同于网络适配器当前使用的 MAC 地址。

VMMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH]

一个 UCHAR 数组,指定在 VM 本身的网络适配器上配置的 MAC 地址。 对于非 VM NIC, 字段都是零。 如果来自 NDIS_SWITCH_PORT_PROPERTY_SECURITY) 的 AllowMacSpoofing (为 TRUE,则此地址也将应用于 CurrentMacAddress。

CurrentMacAddress[NDIS_MAX_PHYS_ADDRESS_LENGTH]

一个 UCHAR 数组,指定网络适配器交换机中当前使用的 MAC 地址。 如果 AllowMacSpoofingAllowTeaming 均为 FALSE,则此值将等于 PermanentMacAddress。 如果 AllowMacSpoofing 为 TRUE,则此值将等于 VMMacAddress。 如果 AllowTeaming 为 TRUE 且在 VM 中发生了组合故障转移, 则 CurrentMacAddress 将等于故障转移到网络适配器的 MAC 地址;如果未发生故障转移,则 CurrentMacAddress 将等于已故障转移到网络适配器的 MAC 地址。

VFAssigned

一个 BOOLEAN 值,如果设置为 TRUE,则指定将网络适配器附加到 PCI Express (PCIe) 虚拟函数 (VF) 。 VF 由支持单根 I/O 虚拟化 (SR-IOV) 接口的基础物理网络适配器公开。

有关详细信息,请参见“备注”部分。

注意仅当 NicType 成员包含值 NdisSwitchNicTypeEmulatedNdisSwitchNicTypeSynthetic 时,VFAssigned 成员才有效。 如果 NicType 成员包含值 NdisSwitchNicTypeExternal 或 NdisSwitchNicTypeInternal,则必须将此成员设置为 FALSE
 

NdisReserved[2]

注解

OID_SWITCH_NIC_ARRAY的 OID 查询请求返回包含零个或多个元素的NDIS_SWITCH_NIC_ARRAY结构。 每个元素的格式设置为 NDIS_SWITCH_NIC_PARAMETERS 结构。

NDIS_SWITCH_NIC_PARAMETERS 结构还用于以下 OID 请求:

注意NDIS_SWITCH_NIC_NAMENDIS_SWITCH_NIC_FRIENDLYNAMENDIS_VM_NAMENDIS_VM_FRIENDLYNAME数据类型由IF_COUNTED_STRING结构定义。 此结构定义的字符串不必以 null 结尾。 但是,字符串的长度必须在此结构的 Length 成员中设置。 如果字符串以 null 结尾,则 Length 成员不得包含终止 null 字符。
 

NicTypeNicName 成员指南

根据值 NicType 成员, NicName 成员的格式如下所示:
  • 如果 NicType 成员设置为 NdisSwitchNicTypeExternal,则 NicName 成员的值是绑定到外部网络适配器的物理网络适配器 (InstanceId) 的唯一实例标识符。 这种类型的网络适配器在 Hyper-V 父分区中运行的管理操作系统中公开。

    外部网络适配器提供与主机上可用的物理网络接口的连接。 可以通过 Hyper-V 父分区和所有子分区访问外部网络适配器。

    注意InstanceId 值由在管理操作系统中运行的即插即用管理器生成。
     
  • 如果 NicType 成员设置为 NdisSwitchNicTypeInternal,则 NicName 成员的值是标识内部网络适配器的设备显示名称。 这种类型的网络适配器在 Hyper-V 父分区的管理操作系统中公开。

    内部网络适配器可由 Hyper-V 父分区和所有子分区访问。 但是,内部网络适配器无法连接到主机上可用的物理网络接口。

    注意 设备显示名称由管理操作系统中运行的 Hyper-V WMI 管理层生成。
     
  • 对于所有其他 NicType 成员值, NicName 成员的值由策略管理接口唯一分配给合成或模拟网络适配器。 这些类型的网络适配器在作为 Hyper-V 子分区运行的来宾操作系统中公开。

VFAssigned 成员指南

PCIe VF 由支持 SR-IOV 接口的基础物理适配器创建和分配。 创建 PCIe VF 后,虚拟化堆栈会将 Hyper-V 子分区附加或 分配给 VF。 在此分区中运行的来宾操作系统公开虚拟机 (VM) 附加或 分配给 基础 SR-IOV 物理适配器的网络适配器。

如果 VFAssigned 成员设置为 TRUE,数据包将直接在基础 SR-IOV 物理网络适配器和虚拟适配器之间路由。 但是,由于数据包传递中不涉及可扩展交换机,因此可扩展交换机端口策略(如访问控制列表 (ACL) )不适用于这些数据包。

扩展可以通过发出 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 状态指示来删除 VF 分配。 此指示会导致数据包通过可扩展的交换机端口传递,而不是直接在 VM 网络适配器和 SR-IOV 物理适配器之间传递。 这样,可扩展交换机端口策略就可以应用于通过可扩展交换机端口接收或发送的数据包。 当扩展发出 NDIS_STATUS_SWITCH_PORT_REMOVE_VF 状态指示时,它会指定虚拟网络适配器连接到哪个可扩展交换机端口。

有关详细信息,请参阅 NDIS_STATUS_SWITCH_PORT_REMOVE_VF

要求

要求
最低受支持的客户端 在 NDIS 6.30 及更高版本中受支持。
标头 ntddndis.h (包括 Ndis.h、Fwpsk.h)

另请参阅

NDIS_OBJECT_HEADER

NDIS_STATUS_SWITCH_PORT_REMOVE_VF

NDIS_SWITCH_NIC_ARRAY

NDIS_SWITCH_NIC_PARAMETERS

NDIS_SWITCH_NIC_STATE

NDIS_SWITCH_NIC_TYPE

OID_SWITCH_NIC_ARRAY

OID_SWITCH_NIC_CONNECT

OID_SWITCH_NIC_CREATE

OID_SWITCH_NIC_DELETE

OID_SWITCH_NIC_DISCONNECT

OID_SWITCH_NIC_SAVE

OID_SWITCH_NIC_SAVE_COMPLETE

OID_SWITCH_NIC_UPDATED