[vbox-dev] VirtualBox C API: Request for simple examples
klaus.espenlaub at oracle.com
Mon May 12 15:46:25 UTC 2014
On 11.05.2014 19:29, Traiano Welcome wrote:
> Hi All
> I'm starting out to use the virtualbox C API, my objective is to carry
> out the following sequence of simple operations to automate the
> deployment of VMs on VirtualBox:
First of all - do you really really have a strict requirement that you
absolutely must use C? The C API needs a lot more effort than using C++,
simply because both COM and XPCOM are geared towards C++. Effectively
it's an attempt at wrapping the C++ functionality behind C compatible
functions, leaving the burden of doing the "object orientation" by hand,
e.g. by always passing the "this" pointer explicitly.
So... if you can, by any means go for C++. Even with our long-standing
todo to make what we internally call "COM/XPCOM glue" externally
available (it isn't today, so it's not possible to easily write one
piece of code which works both with COM and XPCOM, unlike what we do
internally in VirtualBox), C++ is a lot easier to use. Long term (or
short to medium term if someone helps with making the COM/XPCOM glue
part of the SDK) it will be possible to write API clients just how we
write them in the VirtualBox tree - totally identical code on Windows
> 1. Create and Launch a VM
> 2. Create a virtual disk and attach it to the VM
> 3. Detach a virtual disk from the VMr
> 4. Shut the VM down
The usual "why don't you provide code which does my work?" request,
which we don't take too seriously. After all the C API sample is
carefully written to cover the vital areas of a medium scale client,
which needs to do good error checking, event handling and the like. If
you ignore the rather significant effort for handling events (in two
flavors) then the sample is very straightforward: it dumps some
interesting global properties, enumerates all VMs, shows some details
about them, asks which one to start, starts the one the user selected
and then terminates.
I think this qualifies as simple :)
> I'm working through the single example C program supplied with the
> VirtualBox SDK, however, I find it's quite a complex piece of work,
> and I'd appreciate it if there were smaller more digestable examples
> for doing limited sing-purpose operations like those listed above?
There are no smaller examples, and one of the reasons is that the
VirtualBox team does NOT use the C API. It's just one of the language
bindings we offer, without an explicit recommendation.
Either way, what you're asking for isn't truly smaller than the existing
samples, as you can see from my quick code summary of tstCAPIGlue.c above.
> Any pointers to working examples of C code would be much appreciated!
Sorry, nothing like this in the VirtualBox sources. The original reason
for creating the C API was that the libvirt folks are totally allergic
against C++, and what we're recommending as proper C API use is these
days rather different to the "XPCOM only" hack we did 5 years ago and
they keep maintaining the ancient coding style.
> Thanks in advance!
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the vbox-dev