Hyper-V 可扩展交换机还原操作
当 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_SWITCH_NIC_SAVE和OID_SWITCH_NIC_SAVE_COMPLETE 的 OID 请求保存的。
收到 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。
在对运行时数据执行还原操作期间,可扩展交换机的协议边缘发出 OID 请求 ,OID_SWITCH_NIC_RESTORE , OID_SWITCH_NIC_RESTORE_COMPLETE Hyper-V 子分区的网络接口已连接。 如果还原了多个 Hyper-V 子分区,则协议边缘会针对每个网络接口连接发出单独的OID_SWITCH_NIC_RESTORE集和OID_SWITCH_NIC_RESTORE_COMPLETE请求。
注意 可扩展交换机的协议边缘不会为同一 NIC 的运行时数据交错还原操作。 协议边缘仅在上一个还原操作在同一 NIC 上完成之后,才会启动 NIC 的运行时数据还原操作。 但是,当另一个 NIC 正在执行另一个还原操作时,协议边缘可能会启动 NIC 的还原操作。 因此,强烈建议扩展以非交错方式执行还原操作。 例如,扩展不应假定在另一个 NIC 的正在进行的还原操作完成之前,无法在另一个 NIC 上启动新的还原操作。
有关此 OID 请求的详细信息,请参阅 还原 Hyper-V 可扩展交换机Run-Time数据。