2013-04-08 3 views
1

Попытка следующий код (C#) для создания клонированных VM, но он не:VirtualBox COM API - Ошибка создания клонированных VM

VirtualBox.VirtualBox box = new VirtualBox.VirtualBox(); 

//create a new machine 
IMachine machine = box.CreateMachine(null, "MyClone", null, null, "forceOverwrite=1"); 
box.RegisterMachine(machine); 

//Lock machine for editing 
machine.LockMachine(session, LockType.LockType_Write); 
IMachine machsettings = session.Machine; 

//clone the disk image from an existing vdi (source VDI is not being locked/used) 
IMedium hddorig = box.OpenMedium("c:\\tmp\\VDI\\dsl-4.4.10-x86.vdi", DeviceType.DeviceType_HardDisk, AccessMode.AccessMode_ReadOnly, 0); 
IMedium hddclone = box.CreateHardDisk("VDI", "c:\\tmp\\VDI\\clone.vdi"); 
IProgress hddprogress = hddorig.CloneTo(hddclone, 0, hddorig); 
hddprogress.WaitForCompletion(-1); 

//attach disk image to machine 
machsettings.AddStorageController("IDE", StorageBus.StorageBus_IDE); 
machsettings.AttachDevice("IDE", 0, 0, DeviceType.DeviceType_HardDisk, hddclone); //fails - Storage for the medium 'c:\tmp\VDI\clone.vdi' is not created 

machsettings.SaveSettings(); 

AttachDevice всегда терпит неудачу говоря «для хранения среды не создается». На каком шаге я здесь отсутствую?

Следующий код работает нормально, поэтому похоже, что есть проблема с созданием hddclone. machsettings.AttachDevice («IDE», 0, 0, DeviceType.DeviceType_HardDisk, hddorig); // OK

благодаря Стив

ответ

1

Я обнаружил, что проблема вызвана известная проблема с VirtualBox сохраняя память о старых файлов вокруг.

Обходным путем является обеспечение того, чтобы клонированное vdi всегда давалось уникальное имя, например. добавив временную метку к имени файла.

Смежные вопросы