OID_SWITCH_NIC_REQUEST的对象标识符 (OID) 方法请求用于封装 OID 请求并将其转发到 Hyper-V 可扩展交换机外部网络适配器。 这允许将封装的 OID 请求传递到绑定到外部网络适配器的基础物理网络适配器的驱动程序。
此 OID 请求还用于封装已颁发给连接到可扩展交换机端口的其他网络适配器的 OID 请求。 在这种情况下,封装的 OID 请求通过可扩展的交换机驱动程序堆栈转发,供扩展检查。
NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向 NDIS_SWITCH_NIC_OID_REQUEST 结构的指针。 此结构指定 OID 请求的转发信息。 此结构还包含指向要转发的 OID 请求的原始 NDIS_OID_REQUEST 结构的指针。
言论
当 OID 请求到达 Hyper-V 可扩展交换机接口时,它将封装它们,以便将它们转发到可扩展交换机控制路径。 以下 OID 请求包括:
硬件卸载 OID 请求,包括 Internet 协议安全性(IPsec)、虚拟机队列(VMQ)和单根 I/O 虚拟化(SR-IOV)。 这些 OID 请求由在 Hyper-V 父分区的管理作系统中运行的过度协议或筛选器驱动程序发出。
当这些 OID 请求到达可扩展交换机接口时,可扩展交换机的协议边缘将 OID 请求封装在 NDIS_SWITCH_NIC_OID_REQUEST 结构中。 协议边缘按以下方式设置此结构的成员:
DestinationPortId 和 DestinationNicIndex 成员设置为外部网络适配器的相应值。
如果 OID 请求源自 Hyper-V 子分区,则 SourcePortId 和 SourceNicIndex 成员设置为分区使用的端口和网络适配器的相应值。 否则,SourcePortId 和 SourceNicIndex 成员设置为零。
注意 如果扩展转发或重定向 OID 请求,则扩展必须保留这些成员的值。
OidRequest 成员设置为指向封装 OID 请求的 NDIS_OID_REQUEST 结构的指针。
然后,协议边缘发出OID_SWITCH_NIC_REQUEST请求,将封装的 OID 请求转发到外部网络适配器的可扩展交换机控制路径。
基础转发扩展可以将封装的硬件卸载 OID 请求重定向到绑定到外部网络适配器的物理网络适配器。 例如,如果扩展支持绑定到外部网络适配器的可扩展交换机团队中的物理网络适配器,则可以将OID_SWITCH_NIC_REQUEST请求转发到支持硬件卸载的负载均衡故障转移(LBFO)团队中的物理适配器。 有关此过程的详细信息,请参阅 管理硬件卸载 OID 请求到物理网络适配器。
有关可扩展交换机团队的详细信息,请参阅 类型的物理网络适配器配置。
多播 OID 请求,包括 OID_802_3_ADD_MULTICAST_ADDRESS 和 OID_802_3_DELETE_MULTICAST_ADDRESS。 这些 OID 请求是通过过度协议和筛选驱动程序发出的,这些驱动程序在管理作系统或 Hyper-V 子分区的来宾作系统中运行。
当这些 OID 请求到达可扩展交换机接口时,可扩展交换机的协议边缘将 OID 请求封装在 NDIS_SWITCH_NIC_OID_REQUEST 结构中。 协议边缘还将 SourcePortId 和 SourceNicIndex 成员设置为发起 OID 请求的端口和网络适配器的相应值。 然后,协议边缘发出OID_SWITCH_NIC_REQUEST请求,将封装的 OID 请求转发到可扩展交换机控制路径,以便基础扩展进行检查。
注意 在本例中,协议边缘将 DestinationPortId 和 DestinationNicIndex 成员设置为零。 这指定将封装的 OID 请求传递到控制路径中的扩展。
基础转发扩展可以检查这些封装的 OID 请求,并保留它们指定的多播地址信息。 例如,如果扩展源自转发到可扩展交换机端口的多播数据包,则扩展可能需要此信息。
有关详细信息,请参阅 从 Hyper-V 子分区转发 OID 请求。
转发扩展还可以发出OID_SWITCH_NIC_REQUEST,以便将封装的 OID 请求转发到绑定到外部网络适配器的物理网络适配器。 这样,扩展就可以发起自己的 OID 请求,或将现有 OID 请求重定向到绑定到外部网络适配器的物理网络适配器。 为此,扩展必须执行以下步骤:
扩展调用 ReferenceSwitchNic 来递增目标物理网络适配器索引的引用计数器。 这可以保证可扩展交换机接口在引用计数器为非零时不会删除物理网络适配器连接。
注意 可扩展交换机接口可以在其引用计数器为非零时断开物理网络适配器连接。 有关详细信息,请参阅 Hyper-V 可扩展交换机端口和网络适配器状态。
该扩展通过以下方式初始化 NDIS_SWITCH_NIC_OID_REQUEST 结构来封装 OID 请求:
必须将 DestinationPortId 成员设置为外部网络适配器连接到的可扩展交换机端口的标识符。
DestinationNicIndex 成员必须设置为基础物理网络适配器的非零索引值。
如果扩展是代表 Hyper-V 子分区发起的,则 SourcePortId 和 SourceNicIndex 成员设置为分区使用的端口和网络适配器的相应值。 否则,SourcePortId 和 SourceNicIndex 成员设置为零。
例如,如果扩展管理子分区的硬件卸载资源,则必须设置 SourcePortId,SourceNicIndex 成员来指定封装的硬件卸载 OID 请求所在的分区。
必须将 OidRequest 成员设置为指向已封装 OID 请求的初始化 NDIS_OID_REQUEST 结构的指针。
该扩展调用 NdisFOidRequest 将 OID 请求转发到指定的目标可扩展交换机端口和网络适配器。
当 NDIS 调用 FilterOidRequestComplete 函数时,扩展将调用 DereferenceSwitchNic 以清除目标物理网络适配器索引的引用计数器。
返回状态代码
可扩展交换机的基础微型端口边缘完成OID_SWITCH_NIC_REQUEST的 OID 查询请求,并返回以下状态代码之一。
状态代码 | 描述 |
---|---|
NDIS_STATUS_SUCCESS |
OID 请求已成功完成。 |
NDIS_STATUS_Xxx |
由于其他原因,请求失败。 |
要求
版本 |
NDIS 6.30 及更高版本中受支持。 |
页眉 |
Ntddndis.h (包括 Ndis.h) |