OID_SWITCH_NIC_CREATE

Hyper-V 可扩展交换机的协议边缘发出对象标识符 (OID) OID_SWITCH_NIC_CREATE的集请求,以通知底层可扩展交换机扩展正在可扩展交换机端口与外部或虚拟网络适配器之间建立新连接。 完全建立连接后,可扩展交换机的协议边缘会发出 OID_SWITCH_NIC_CONNECT的 OID 集请求。

NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向NDIS_SWITCH_NIC_PARAMETERS 结构的指针。

注解

NDIS_SWITCH_NIC_PARAMETERS 结构的 PortId 成员指定要向其发出创建通知的可扩展交换机端口。 可扩展交换机扩展可以通过发出 OID_SWITCH_PORT_ARRAY的 OID 查询请求,获取可扩展交换机上的此端口和其他端口的参数信息。

NDIS_SWITCH_NIC_PARAMETERS 结构的 Index 成员指定要为其发出创建通知的网络适配器的索引。 具有指定 Index 值的网络适配器连接到由 PortId 成员指定的可扩展交换机端口。 有关这些索引值的详细信息,请参阅 网络适配器索引值

当它收到 OID_SWITCH_NIC_CREATE 的 OID 集请求时,扩展必须遵循以下准则:

  • 该扩展不得修改与 OID 请求关联的 NDIS_SWITCH_NIC_PARAMETERS 结构。

  • OID_SWITCH_NIC_CREATE请求仅通知扩展正在启动新的可扩展交换机连接,并且数据包流量可能很快开始通过指定的端口发生。 但是,扩展不能使用该端口,直到可扩展交换机的协议边缘发出 OID_SWITCH_NIC_CONNECT的 OID 集请求。 在发出该 OID 之前,扩展不得执行以下操作:

    • 生成发OID_SWITCH_NIC_CREATE OID 请求的可扩展交换机端口上网络适配器连接的任何数据包流量。

    • OID_SWITCH_NIC_REQUEST 的 OID 请求转发或发起到发出OID_SWITCH_NIC_CREATE OID 请求的基础网络适配器。

    • 从发出 OID_SWITCH_NIC_CREATE OID 请求的基础网络适配器转发或源自NDIS_STATUS_SWITCH_NIC_STATUS的 NDIS 状态指示。

    • 调用 ReferenceSwitchNic 以递增可扩展交换机端口上指定网络适配器连接的可扩展交换机引用计数器。

    注意 扩展可能会截获 OID_SWITCH_NIC_CREATE 和 OID_SWITCH_NIC_CONNECT 的 OID 请求之间的指定端口的发送或接收数据包。 在这种情况下,扩展应转发发送或接收数据包请求,而不是取消它们。

  • 扩展可以通过返回 OID 请求的NDIS_STATUS_DATA_NOT_ACCEPTED来否决创建通知。 例如,如果扩展无法满足指定端口上配置的策略,则扩展应否决创建通知。

    如果扩展返回其他NDIS_STATUS_Xxx 状态代码,则创建通知也会被否决。 但是,返回临时方案的状态代码(如返回NDIS_STATUS_RESOURCES)可能会导致创建通知的重试。

    如果扩展未否决 OID 请求,则应在请求完成时监视状态。 扩展应执行此操作以确定 OID 请求是被可扩展开关控制路径中的基础扩展否决的,还是被可扩展开关接口否决的。

    注意如果 NDIS_SWITCH_NIC_PARAMETERS 结构的 Index 成员将网络适配器索引值指定为零,则扩展只能否决 OID 请求。

  • 如果扩展未否决创建通知,则必须调用 NdisFOidRequest 将此 OID 请求转发到可扩展交换机驱动程序堆栈中的基础扩展。

    注意 扩展应监视此 OID 请求的完成状态。 扩展执行此操作可以检测可扩展交换机驱动程序堆栈中的基础扩展是否否决了创建通知。

  • 如果扩展调用 NdisFOidRequest 转发此 OID 请求,则扩展不会立即接收传入或传出可扩展交换机端口的任何数据包流量。 此外,扩展无法立即为可扩展交换机端口注入发送或接收流量。

  • 扩展只能在可扩展交换机的协议边缘发出 OID_SWITCH_NIC_CONNECT的 OID 集请求后,将数据包流量转发到可扩展交换机端口。

    注意 在某些情况下,在发出 OID_SWITCH_NIC_CONNECT 的 OID 集请求之前,可扩展交换机可能会将数据包流量转发到端口。

  • 可扩展交换机外部网络适配器可以绑定到一个或多个基础物理适配器。 对于绑定到外部网络适配器的每个物理网络适配器,可扩展交换机的协议边缘会发出单独的 OID 集OID_SWITCH_NIC_CREATE请求。 每个 OID 集请求指定不同的网络适配器连接索引值。 有关这些索引值的详细信息,请参阅 网络适配器索引值

    扩展必须维护每个基础物理适配器的连接状态。 有关物理网络适配器可以绑定到外部网络适配器的不同配置的详细信息,请参阅 物理网络适配器配置类型

有关可扩展交换机端口和网络适配器连接状态的详细信息,请参阅 Hyper-V 可扩展交换机端口和网络适配器状态

注意 扩展不得发出自己的OID_SWITCH_NIC_CREATE OID 集请求。

返回状态代码

如果扩展完成 OID_SWITCH_NIC_CREATE 的 OID 集请求,则返回以下状态代码之一。

状态代码 说明

NDIS_STATUS_DATA_NOT_ACCEPTED

扩展已否决创建通知。

NDIS_STATUS_RESOURCES

由于资源不足,扩展否决了创建通知。

NDIS_STATUS_Xxx

扩展出于其他原因否决了创建通知。

注意 如果扩展完成 OID 设置请求,则不得返回NDIS_STATUS_SUCCESS。

如果扩展未完成 OID_SWITCH_NIC_CREATE 的 OID 集请求,则请求由可扩展开关的基础微型端口边缘完成。 基础微型端口边缘为此 OID 设置请求返回以下状态代码:

状态代码 说明

NDIS_STATUS_SUCCESS

OID 请求已成功完成。

要求

版本

在 NDIS 6.30 及更高版本中受支持。

标头

Ntddndis.h (包括 Ndis.h)

另请参阅


NDIS_OID_REQUEST

NDIS_SWITCH_NIC_PARAMETERS

NdisFOidRequest

OID_SWITCH_NIC_CONNECT

OID_SWITCH_PORT_ARRAY

ReferenceSwitchPort