当 Hyper-V 子分区在停止或实时迁移后重新启动时,将还原分区的运行时状态。 在还原作期间,Hyper-V 可扩展交换机扩展驱动程序可以还原有关可扩展交换机网络适配器(NIC)的运行时数据。
在 Hyper-V 子分区上执行还原操作时,可扩展交换机接口会向可扩展交换机的协议边缘发出请求,以设置 OID_SWITCH_NIC_RESTORE 的 OID。 OID_SWITCH_NIC_RESTORE 请求 NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向 NDIS_SWITCH_NIC_SAVE_STATE 结构的指针。
当它处理此 OID 请求时,扩展将还原网络适配器的运行时数据。 此运行时数据以前是通过 OID 请求 OID_SWITCH_NIC_SAVE 和 OID_SWITCH_NIC_SAVE_COMPLETE 保存的。
当它收到 OID_SWITCH_NIC_RESTORE 请求时,可扩展交换机扩展必须首先确定它是否拥有运行时数据。 驱动程序通过将 NDIS_SWITCH_NIC_SAVE_STATE 结构的 ExtensionId 成员的值与驱动程序用来标识自身的 GUID 值进行比较来执行此作。
如果扩展拥有运行时数据,它将通过以下方式还原此数据:
该扩展将 SaveData 成员中的运行时数据复制到驱动程序分配的存储。
注释 保存运行时数据时,NDIS_SWITCH_NIC_SAVE_STATE 结构的 PortId 成员的值可能与 PortId 值不同。 如果在从一个主机到另一个主机的实时迁移期间保存了运行时数据,则可能会出现这种情况。 但是,在实时迁移期间保留可扩展交换机 NIC 的配置。 这使扩展可以使用新的 PortId 值将运行时数据还原到可扩展交换机 NIC。
该扩展使用 NDIS_STATUS_SUCCESS 完成 OID 设置请求。
如果扩展不拥有运行时数据,则必须调用 NdisFOidRequest。 这会将 OID 方法请求转发到可扩展交换机驱动程序堆栈中的基础扩展。 有关此过程的详细信息,请参阅 NDIS 筛选器驱动程序中的筛选 OID 请求。
OID_SWITCH_NIC_RESTORE_COMPLETE
可扩展交换机接口向可扩展交换机的协议边缘发出信号,以便在扩展交换机 NIC 的运行时数据的还原操作完成时发出此 OID。
此 OID 请求通知扩展模块还原操作已仅针对指定的可扩展交换机 NIC 完成。
有关此 OID 请求的详细信息,请参阅 OID_SWITCH_NIC_RESTORE_COMPLETE。
在运行时数据还原操作期间,可扩展交换机的协议边缘会在 Hyper-V 子分区的网络接口连接后发出 OID_SWITCH_NIC_RESTORE 和 OID_SWITCH_NIC_RESTORE_COMPLETE OID 请求。 如果还原多个 Hyper-V 子分区,协议边缘会为每个网络接口连接分别发出多组 OID_SWITCH_NIC_RESTORE 和 OID_SWITCH_NIC_RESTORE_COMPLETE 请求。
注意 可扩展交换机的协议边缘不会为同一 NIC 的运行时数据交错进行还原操作。 协议边缘将在之前的还原操作在同一 NIC 上完成后,才会启动对该 NIC 的运行时数据还原操作。 但是,协议边缘可能会为一个 NIC 启动还原操作,而另一个 NIC 的还原操作正在进行中。 因此,我们强烈建议扩展程序进行非交错还原操作。 例如,扩展程序不应假设在一个 NIC 上进行的当前还原操作完成之前,新的还原操作无法在另一个 NIC 上启动。
关于此 OID 请求的更多信息,请参阅 恢复 Hyper-V 可扩展交换机 Run-Time 数据。