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 结构。

标头的类型成员必须设置为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

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

含义
NDIS_SWITCH_NIC_FLAGS_NIC_INITIALIZING
在 VM NIC 对象的生存期内首次发出 OID_SWITCH_NIC_CREATE OID 时,将设置此标志。 如果设置了此标志:
  • 如果 Hyper-V 可扩展交换机扩展需要在堆栈向下传递 OID 之前保留头空间进行封装,则可以选择减少NDIS_SWITCH_NIC_PARAMETERS结构中的 MTU 成员的值。 该扩展将无法为任何其他类型的 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 节点是与网络适配器距离最小的 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 地址;如果未发生故障转移,则 为 PermanentMacAddress

VFAssigned

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

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

注意仅当 NicType 成员包含 NdisSwitchNicTypeEmulatedNdisSwitchNicTypeSynthetic 的值时,VFAssigned 成员才有效。 如果 NicType 成员包含 NdisSwitchNicTypeExternalNdisSwitchNicTypeInternal 的值,则必须将此成员设置为 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 及更高版本中受支持。
Header 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