OID_SWITCH_NIC_REQUEST
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) |