我正在尝试通过SDK提供的vboxapi来管理一些虚拟机。到目前为止,我成功启动了虚拟机并将其关闭,但是我无法恢复快照。看起来关机过程会锁定虚拟机直到脚本终止,事实上这就是我遇到的错误:
progress = self.session.console.restoreSnapshot(self.mach.currentSnapshot) File "", line 3, in restoreSnapshot xpcom.Exception:0x80070005(对象未准备好)下面是我按顺序调用的停止虚拟机和恢复快照的具体函数。
def stop(self): if self.mach: # 关闭虚拟机。 progress = self.session.console.powerDown() # 等待任务完成,最长等待时间为60秒。 progress.waitForCompletion(VIRTUALBOX_TIMEOUT) # 检查关闭是否成功。 if progress.resultCode != 0: log("[虚拟机] [关闭] [错误] 无法关闭虚拟机 \"%s\"。" % self.mach.name) return False else: log("[虚拟机] [关闭] 虚拟机 \"%s\" 成功关闭。" % self.mach.name) else: log("[虚拟机] [关闭] [错误] 没有虚拟机句柄。") return False return True def restore_snapshot(self): if self.mach: # 恢复虚拟机快照。 progress = self.session.console.restoreSnapshot(self.mach.currentSnapshot) # 等待任务完成,最长等待时间为60秒。 progress.waitForCompletion(VIRTUALBOX_TIMEOUT) # 检查恢复是否成功。 if progress.resultCode != 0: log("[虚拟机] [恢复快照] [错误] 无法恢复虚拟机 \"%s\" 快照。" % self.mach.name) return False else: log("[虚拟机] [恢复快照] 虚拟机 \"%s\" 成功还原到当前快照。" % self.mach.name) else: log("[虚拟机] [恢复快照] [错误] 没有虚拟机句柄。") return False return True我认为可能是我缺少了某些东西,有什么提示吗? 谢谢, C.