The VirtualBox Software Development Kit (SDK) contains all the documentation and interface files that are needed to write code that interacts with VirtualBox.
The Oracle VM VirtualBox Main API documentation describes the so-called VirtualBox Main API which comprises all public COM interfaces and components provided by the VirtualBox server and by the Oracle VM VirtualBox client library.
Oracle VM VirtualBox employs a client-server design, meaning that whenever any part of Oracle VM VirtualBox is running -- be it the Qt GUI, the VBoxManage command-line interface or any virtual machine --, a dedicated server process named VBoxSVC runs in the background. This allows multiple processes working with Oracle VM VirtualBox to cooperate without conflicts. These processes communicate to each other using inter-process communication facilities provided by the COM implementation of the host computer.
On Windows platforms, the Oracle VM VirtualBox Main API uses Microsoft COM, a native COM implementation. On all other platforms, Mozilla XPCOM, an open-source COM implementation, is used.
All the parts that a typical Oracle VM VirtualBox user interacts with (the Qt GUI, the VBoxManage command-line interface and the VBoxVRDP server) are technically front-ends to the Main API and only use the interfaces that are documented in this Main API documentation. This ensures that, with any given release version of Oracle VM VirtualBox, all capabilities of the product that could be useful to an external client program are always exposed by way of this API.
The Oracle VM VirtualBox Main API (also called the Oracle VM VirtualBox COM library) contains two public component classes: Oracle VM VirtualBox .Oracle VM VirtualBox and Oracle VM VirtualBox. Session, which implement IVirtualBox and
The VirtualBox.VirtualBox class is a singleton. This means that there can be only one object of this class on the local machine at any given time. This object is a parent of many other objects in the Oracle VM VirtualBox COM library and lives in the VBoxSVC process. In fact, when you create an instance of the VirtualBox.VirtualBox, the COM subsystem checks if the VBoxSVC process is already running, starts it if not, and returns you a reference to the Oracle VM VirtualBox object created in this process. When the last reference to this object is released, the VBoxSVC process ends (with a 5 second delay to protect from too frequent restarts).
The VirtualBox.Session class is a regular component. You can create as many Session objects as you need but all of them will live in a process which issues the object instantiation call. Session objects represent virtual machine sessions which are used to configure virtual machines and control their execution.
What's new in :