[vbox-dev] Problem with restoring a snapshot via API: Console is null

Daniel Dreibrodt DDreibrodt at comprion.com
Wed Jul 2 13:52:05 GMT 2014


Hello,

I’m developing a C# application that controls VMs, starts them, stops them and runs programs in them. It should also reset the VM to a previously saved snapshot.

But I get a NullReferenceException because the Console object of my session is null, although I call LockMachine.

Here is the code with which I try to reset the machine after it has been powered down.

public void Reset(string snapshotName = "BeforeTest")
        {
            Logger.WriteLine("Resetting the VM");

            var writeSession = new SessionClass();

            m_Machine.LockMachine(writeSession, LockType.LockType_Write);

            int waitCycles = 0;
            while (writeSession.State != SessionState.SessionState_Locked & waitCycles < 100)
            {
                Thread.Sleep(10);
                waitCycles++;
            }
            if (writeSession.State != SessionState.SessionState_Locked)
                throw new VirtualMachineException("The VM could not be locked!");

            var console = writeSession.Console;
            if(console == null)
                throw new VirtualMachineException("The Console is null!"); //This is where the problem is found

            var snapshot = m_Machine.FindSnapshot(snapshotName);
            if (snapshot == null)
                throw new VirtualMachineException("Could not find Snapshot \"" + snapshotName + "\"");

            var progress = console.RestoreSnapshot(snapshot);
            progress.WaitForCompletion(30000);

            writeSession.UnlockMachine();
            waitCycles = 0;
            while (writeSession.State != SessionState.SessionState_Unlocked & waitCycles < 100)
            {
                Thread.Sleep(10);
                waitCycles++;
            }

            Logger.WriteLine(" The VM has been reset to the snapshot \"" + snapshotName + "\"");
        }

I’m using VirtualBox 4.3.12 and the COM API. How can I properly restore a snapshot? Why Is the Console null?

Best Regards,
Daniel

[cid:image772942.PNG at 45783a2b.4a82e822]


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.virtualbox.org/pipermail/vbox-dev/attachments/20140702/2b6adc55/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image772942.PNG
Type: image/png
Size: 22112 bytes
Desc: image772942.PNG
URL: <http://www.virtualbox.org/pipermail/vbox-dev/attachments/20140702/2b6adc55/attachment.png>


More information about the vbox-dev mailing list