VirtualBox

source: vbox/trunk/src/VBox/Main/idl/VirtualBox.xidl@ 42461

Last change on this file since 42461 was 42461, checked in by vboxsync, 13 years ago

Guest Control 2.0: Update.

  • Property svn:eol-style set to native
File size: 710.4 KB
Line 
1<?xml version="1.0" encoding="utf-8"?>
2
3<!--
4
5 Copyright (C) 2006-2012 Oracle Corporation
6
7 This file is part of VirtualBox Open Source Edition (OSE), as
8 available from http://www.virtualbox.org. This file is free software;
9 you can redistribute it and/or modify it under the terms of the GNU
10 General Public License (GPL) as published by the Free Software
11 Foundation, in version 2 as it comes in the "COPYING" file of the
12 VirtualBox OSE distribution. VirtualBox OSE is distributed in the
13 hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
14-->
15
16<!--
17 This is the master declaration for VirtualBox's Main API,
18 represented by COM/XPCOM and web service interfaces.
19
20 From this document, the build system generates several files
21 via XSLT that are then used during the build process.
22
23 Below is the list of XSL templates that operate on this file and
24 output files they generate. These XSL templates must be updated
25 whenever the schema of this file changes:
26
27 1. src/VBox/Main/idl/midl.xsl =>
28 out/<platform>/bin/sdk/idl/VirtualBox.idl
29 (MS COM interface definition file for Main API)
30
31 2. src/VBox/Main/idl/xpidl.xsl =>
32 out/<platform>/bin/sdk/idl/VirtualBox_XPCOM.idl
33 (XPCOM interface definition file for Main API)
34
35 3. src/VBox/Main/idl/doxygen.xsl =>
36 out/<platform>/obj/src/VBox/Main/VirtualBox.idl
37 (pseudo-IDL for Doxygen to generate the official Main API
38 documentation)
39
40 4. src/VBox/Main/webservice/*.xsl =>
41 a bunch of WSDL and C++ files
42 (VirtualBox web service sources and SOAP mappers;
43 see src/VBox/Main/webservice/Makefile.kmk for details)
44
45 5. src/VBox/Frontends/VirtualBox/include/COMWrappers.xsl =>
46 out/<platform>/obj/src/VBox/Frontends/VirtualBox/VirtualBox/include/COMWrappers.h
47 (smart Qt-based C++ wrapper classes for COM interfaces
48 of the Main API)
49
50 6. src/VBox/Installer/win32/VirtualBox_TypeLib.xsl =>
51 out/<platform>/obj/src/VBox/Installer/win32/VirtualBox_TypeLib.wxi
52 (Main API TypeLib block for the WiX installer)
53
54 7. src/VBox/Runtime/common/err/errmsgvboxcom.xsl =>
55 out/<platform>/obj/Runtime/errmsgvboxcomdata.h
56 (<result> extraction for the %Rhrc format specifier)
57-->
58
59<idl>
60
61<desc>
62 Welcome to the <b>VirtualBox Main API documentation</b>. This documentation
63 describes the so-called <i>VirtualBox Main API</i> which comprises all public
64 COM interfaces and components provided by the VirtualBox server and by the
65 VirtualBox client library.
66
67 VirtualBox employs a client-server design, meaning that whenever any part of
68 VirtualBox is running -- be it the Qt GUI, the VBoxManage command-line
69 interface or any virtual machine --, a dedicated server process named
70 VBoxSVC runs in the background. This allows multiple processes working with
71 VirtualBox to cooperate without conflicts. These processes communicate to each
72 other using inter-process communication facilities provided by the COM
73 implementation of the host computer.
74
75 On Windows platforms, the VirtualBox Main API uses Microsoft COM, a native COM
76 implementation. On all other platforms, Mozilla XPCOM, an open-source COM
77 implementation, is used.
78
79 All the parts that a typical VirtualBox user interacts with (the Qt GUI
80 and the VBoxManage command-line interface) are technically
81 front-ends to the Main API and only use the interfaces that are documented
82 in this Main API documentation. This ensures that, with any given release
83 version of VirtualBox, all capabilities of the product that could be useful
84 to an external client program are always exposed by way of this API.
85
86 The VirtualBox Main API (also called the <i>VirtualBox COM library</i>)
87 contains two public component classes:
88 <tt>%VirtualBox.VirtualBox</tt> and <tt>%VirtualBox.Session</tt>, which
89 implement IVirtualBox and ISession interfaces respectively. These two classes
90 are of supreme importance and will be needed in order for any front-end
91 program to do anything useful. It is recommended to read the documentation of
92 the mentioned interfaces first.
93
94 The <tt>%VirtualBox.VirtualBox</tt> class is a singleton. This means that
95 there can be only one object of this class on the local machine at any given
96 time. This object is a parent of many other objects in the VirtualBox COM
97 library and lives in the VBoxSVC process. In fact, when you create an instance
98 of the <tt>VirtualBox.VirtualBox</tt>, the COM subsystem checks if the VBoxSVC
99 process is already running, starts it if not, and returns you a reference to
100 the <tt>VirtualBox</tt> object created in this process. When the last reference
101 to this object is released, the VBoxSVC process ends (with a 5 second delay to
102 protect from too frequent restarts).
103
104 The <tt>%VirtualBox.Session</tt> class is a regular component. You can create
105 as many <tt>Session</tt> objects as you need but all of them will live in a
106 process which issues the object instantiation call. <tt>Session</tt> objects
107 represent virtual machine sessions which are used to configure virtual
108 machines and control their execution.
109</desc>
110
111<if target="midl">
112 <cpp line="enum {"/>
113 <cpp line=" kTypeLibraryMajorVersion = 1,"/>
114 <cpp line=" kTypeLibraryMinorVersion = 0"/>
115 <cpp line="};"/>
116</if>
117
118<if target="xpidl">
119 <!-- NS_IMPL_THREADSAFE_ISUPPORTSxx_CI macros are placed here, for convenience -->
120 <cpp>
121/* currently, nsISupportsImpl.h lacks the below-like macros */
122
123#define NS_IMPL_THREADSAFE_QUERY_INTERFACE1_CI NS_IMPL_QUERY_INTERFACE1_CI
124#define NS_IMPL_THREADSAFE_QUERY_INTERFACE2_CI NS_IMPL_QUERY_INTERFACE2_CI
125#define NS_IMPL_THREADSAFE_QUERY_INTERFACE3_CI NS_IMPL_QUERY_INTERFACE3_CI
126#define NS_IMPL_THREADSAFE_QUERY_INTERFACE4_CI NS_IMPL_QUERY_INTERFACE4_CI
127
128
129#ifndef NS_IMPL_THREADSAFE_ISUPPORTS1_CI
130# define NS_IMPL_THREADSAFE_ISUPPORTS1_CI(_class, _interface) \
131 NS_IMPL_THREADSAFE_ADDREF(_class) \
132 NS_IMPL_THREADSAFE_RELEASE(_class) \
133 NS_IMPL_THREADSAFE_QUERY_INTERFACE1_CI(_class, _interface) \
134 NS_IMPL_CI_INTERFACE_GETTER1(_class, _interface)
135#endif
136
137#ifndef NS_IMPL_THREADSAFE_ISUPPORTS2_CI
138# define NS_IMPL_THREADSAFE_ISUPPORTS2_CI(_class, _i1, _i2) \
139 NS_IMPL_THREADSAFE_ADDREF(_class) \
140 NS_IMPL_THREADSAFE_RELEASE(_class) \
141 NS_IMPL_THREADSAFE_QUERY_INTERFACE2_CI(_class, _i1, _i2) \
142 NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2)
143#endif
144
145#ifndef NS_IMPL_THREADSAFE_ISUPPORTS3_CI
146# define NS_IMPL_THREADSAFE_ISUPPORTS3_CI(_class, _i1, _i2, _i3) \
147 NS_IMPL_THREADSAFE_ADDREF(_class) \
148 NS_IMPL_THREADSAFE_RELEASE(_class) \
149 NS_IMPL_THREADSAFE_QUERY_INTERFACE3_CI(_class, _i1, _i2, _i3) \
150 NS_IMPL_CI_INTERFACE_GETTER3(_class, _i1, _i2, _i3)
151#endif
152
153#ifndef NS_IMPL_THREADSAFE_ISUPPORTS4_CI
154# define NS_IMPL_THREADSAFE_ISUPPORTS4_CI(_class, _i1, _i2, _i3, _i4) \
155 NS_IMPL_THREADSAFE_ADDREF(_class) \
156 NS_IMPL_THREADSAFE_RELEASE(_class) \
157 NS_IMPL_THREADSAFE_QUERY_INTERFACE4_CI(_class, _i1, _i2, _i3, _i4) \
158 NS_IMPL_CI_INTERFACE_GETTER4(_class, _i1, _i2, _i3, _i4)
159#endif
160
161#ifndef NS_IMPL_QUERY_INTERFACE1_AMBIGUOUS_CI
162# define NS_IMPL_QUERY_INTERFACE1_AMBIGUOUS_CI(_class, _i1, _ic1) \
163 NS_INTERFACE_MAP_BEGIN(_class) \
164 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i1, _ic1) \
165 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _ic1) \
166 NS_IMPL_QUERY_CLASSINFO(_class) \
167 NS_INTERFACE_MAP_END
168#endif
169
170#ifndef NS_IMPL_QUERY_INTERFACE2_AMBIGUOUS_CI
171# define NS_IMPL_QUERY_INTERFACE2_AMBIGUOUS_CI(_class, _i1, _ic1, \
172 _i2, _ic2) \
173 NS_INTERFACE_MAP_BEGIN(_class) \
174 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i1, _ic1) \
175 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i2, _ic2) \
176 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _ic1) \
177 NS_IMPL_QUERY_CLASSINFO(_class) \
178 NS_INTERFACE_MAP_END
179#endif
180
181#ifndef NS_IMPL_QUERY_INTERFACE3_AMBIGUOUS_CI
182# define NS_IMPL_QUERY_INTERFACE3_AMBIGUOUS_CI(_class, _i1, _ic1, \
183 _i2, _ic2, _i3, _ic3) \
184 NS_INTERFACE_MAP_BEGIN(_class) \
185 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i1, _ic1) \
186 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i2, _ic2) \
187 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i3, _ic3) \
188 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _ic1) \
189 NS_IMPL_QUERY_CLASSINFO(_class) \
190 NS_INTERFACE_MAP_END
191#endif
192
193#define NS_IMPL_THREADSAFE_QUERY_INTERFACE1_AMBIGUOUS_CI NS_IMPL_QUERY_INTERFACE1_AMBIGUOUS_CI
194#define NS_IMPL_THREADSAFE_QUERY_INTERFACE2_AMBIGUOUS_CI NS_IMPL_QUERY_INTERFACE2_AMBIGUOUS_CI
195#define NS_IMPL_THREADSAFE_QUERY_INTERFACE3_AMBIGUOUS_CI NS_IMPL_QUERY_INTERFACE3_AMBIGUOUS_CI
196
197#ifndef NS_IMPL_THREADSAFE_ISUPPORTS1_AMBIGUOUS_CI
198# define NS_IMPL_THREADSAFE_ISUPPORTS1_AMBIGUOUS_CI(_class, _i1, _ic1) \
199 NS_IMPL_THREADSAFE_ADDREF(_class) \
200 NS_IMPL_THREADSAFE_RELEASE(_class) \
201 NS_IMPL_THREADSAFE_QUERY_INTERFACE1_AMBIGUOUS_CI(_class, _i1, _ic1) \
202 NS_IMPL_CI_INTERFACE_GETTER1(_class, _i1)
203#endif
204
205#ifndef NS_IMPL_THREADSAFE_ISUPPORTS2_AMBIGUOUS_CI
206# define NS_IMPL_THREADSAFE_ISUPPORTS2_AMBIGUOUS_CI(_class, _i1, _ic1, \
207 _i2, _ic2) \
208 NS_IMPL_THREADSAFE_ADDREF(_class) \
209 NS_IMPL_THREADSAFE_RELEASE(_class) \
210 NS_IMPL_THREADSAFE_QUERY_INTERFACE2_AMBIGUOUS_CI(_class, _i1, _ic1, \
211 _i2, _ic2) \
212 NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2)
213#endif
214
215#ifndef NS_IMPL_THREADSAFE_ISUPPORTS3_AMBIGUOUS_CI
216# define NS_IMPL_THREADSAFE_ISUPPORTS3_AMBIGUOUS_CI(_class, _i1, _ic1, \
217 _i2, _ic2, _i3, _ic3) \
218 NS_IMPL_THREADSAFE_ADDREF(_class) \
219 NS_IMPL_THREADSAFE_RELEASE(_class) \
220 NS_IMPL_THREADSAFE_QUERY_INTERFACE3_AMBIGUOUS_CI(_class, _i1, _ic1, \
221 _i2, _ic2, _i3, _ic3) \
222 NS_IMPL_CI_INTERFACE_GETTER3(_class, _i1, _i2, _i3)
223#endif
224
225 </cpp>
226</if>
227
228<library
229 name="VirtualBox"
230 uuid="46137EEC-703B-4fe5-AFD4-7C9BBBBA0259"
231 version="1.3"
232 desc="VirtualBox Type Library"
233 appUuid="819B4D85-9CEE-493C-B6FC-64FFE759B3C9"
234 supportsErrorInfo="yes"
235>
236
237
238 <!--
239 // COM result codes for VirtualBox
240 /////////////////////////////////////////////////////////////////////////
241 -->
242
243 <descGroup id="VirtualBox_COM_result_codes" title="VirtualBox COM result codes">
244 <desc>
245 This section describes all VirtualBox-specific COM result codes that may
246 be returned by methods of VirtualBox COM interfaces in addition to
247 standard COM result codes.
248
249 Note that along with the result code, every VirtualBox method returns
250 extended error information through the IVirtualBoxErrorInfo interface on
251 failure. This interface is a preferred way to present the error to the end
252 user because it contains a human readable description of the error. Raw
253 result codes, both standard and described in this section, are intended to
254 be used by programs to analyze the reason of a failure and select an
255 appropriate course of action without involving the end user (for example,
256 retry the operation later or make a different call).
257
258 The standard COM result codes that may originate from our methods include:
259
260 <table>
261 <tr><td>E_INVALIDARG</td>
262 <td>
263 Returned when the value of the method's argument is not within the range
264 of valid values. This should not be confused with situations when the
265 value is within the range but simply doesn't suit the current object
266 state and there is a possibility that it will be accepted later (in such
267 cases VirtualBox-specific codes are returned, for example,
268 <link to="VBOX_E_OBJECT_NOT_FOUND"/>).
269 </td>
270 </tr>
271 <tr><td>E_POINTER</td>
272 <td>
273 Returned if a memory pointer for the output argument is invalid (for
274 example, @c null). When pointers representing input arguments (such
275 as strings) are invalid, E_INVALIDARG is returned.
276 </td>
277 </tr>
278 <tr><td>E_ACCESSDENIED</td>
279 <td>
280 Returned when the called object is not ready. Since the lifetime of a
281 public COM object cannot be fully controlled by the implementation,
282 VirtualBox maintains the readiness state for all objects it creates and
283 returns this code in response to any method call on the object that was
284 deactivated by VirtualBox and is not functioning any more.
285 </td>
286 </tr>
287 <tr><td>E_OUTOFMEMORY</td>
288 <td>
289 Returned when a memory allocation operation fails.
290 </td>
291 </tr>
292 </table>
293 </desc>
294 </descGroup>
295
296 <!--
297 Note that src/VBox/Runtime/common/err/errmsgvboxcom.xsl will ignore
298 everything in <result>/<desc> after (and including) the first dot, so express
299 the matter of the error code in the first sentence and keep it short.
300 -->
301
302 <result name="VBOX_E_OBJECT_NOT_FOUND" value="0x80BB0001">
303 <desc>
304 Object corresponding to the supplied arguments does not exist.
305 </desc>
306 </result>
307
308 <result name="VBOX_E_INVALID_VM_STATE" value="0x80BB0002">
309 <desc>
310 Current virtual machine state prevents the operation.
311 </desc>
312 </result>
313
314 <result name="VBOX_E_VM_ERROR" value="0x80BB0003">
315 <desc>
316 Virtual machine error occurred attempting the operation.
317 </desc>
318 </result>
319
320 <result name="VBOX_E_FILE_ERROR" value="0x80BB0004">
321 <desc>
322 File not accessible or erroneous file contents.
323 </desc>
324 </result>
325
326 <result name="VBOX_E_IPRT_ERROR" value="0x80BB0005">
327 <desc>
328 Runtime subsystem error.
329 </desc>
330 </result>
331
332 <result name="VBOX_E_PDM_ERROR" value="0x80BB0006">
333 <desc>
334 Pluggable Device Manager error.
335 </desc>
336 </result>
337
338 <result name="VBOX_E_INVALID_OBJECT_STATE" value="0x80BB0007">
339 <desc>
340 Current object state prohibits operation.
341 </desc>
342 </result>
343
344 <result name="VBOX_E_HOST_ERROR" value="0x80BB0008">
345 <desc>
346 Host operating system related error.
347 </desc>
348 </result>
349
350 <result name="VBOX_E_NOT_SUPPORTED" value="0x80BB0009">
351 <desc>
352 Requested operation is not supported.
353 </desc>
354 </result>
355
356 <result name="VBOX_E_XML_ERROR" value="0x80BB000A">
357 <desc>
358 Invalid XML found.
359 </desc>
360 </result>
361
362 <result name="VBOX_E_INVALID_SESSION_STATE" value="0x80BB000B">
363 <desc>
364 Current session state prohibits operation.
365 </desc>
366 </result>
367
368 <result name="VBOX_E_OBJECT_IN_USE" value="0x80BB000C">
369 <desc>
370 Object being in use prohibits operation.
371 </desc>
372 </result>
373
374 <!--
375 Note that src/VBox/Runtime/common/err/errmsgvboxcom.xsl will ignore
376 everything in <result>/<desc> after (and including) the first dot, so express
377 the matter of the error code in the first sentence and keep it short.
378 -->
379
380 <descGroup/>
381
382 <!--
383 // all common enums
384 /////////////////////////////////////////////////////////////////////////
385 -->
386
387 <enum
388 name="SettingsVersion"
389 uuid="52bd6f5f-1adb-4493-975d-581a9c4b803f"
390 >
391 <desc>
392 Settings version of VirtualBox settings files. This is written to
393 the "version" attribute of the root "VirtualBox" element in the settings
394 file XML and indicates which VirtualBox version wrote the file.
395 </desc>
396
397 <const name="Null" value="0">
398 <desc>Null value, indicates invalid version.</desc>
399 </const>
400 <const name="v1_0" value="1">
401 <desc>Legacy settings version, not currently supported.</desc>
402 </const>
403 <const name="v1_1" value="2">
404 <desc>Legacy settings version, not currently supported.</desc>
405 </const>
406 <const name="v1_2" value="3">
407 <desc>Legacy settings version, not currently supported.</desc>
408 </const>
409 <const name="v1_3pre" value="4">
410 <desc>Legacy settings version, not currently supported.</desc>
411 </const>
412 <const name="v1_3" value="5">
413 <desc>Settings version "1.3", written by VirtualBox 2.0.12.</desc>
414 <!--
415 Machine XML: Capitalization of Uart, Lpt elements and many attributes changed.
416 -->
417 </const>
418 <const name="v1_4" value="6">
419 <desc>Intermediate settings version, understood by VirtualBox 2.1.x.</desc>
420 <!--
421 VirtualBox.xml: big DiskRegistry -> MediaRegistry revamp, various HardDisk types merged
422 (was VirtualDiskImage, VMDKImage, VHDImage, ISCSIHardDisk, CustomHardDisk, DiffHardDisk)
423 -->
424 </const>
425 <const name="v1_5" value="7">
426 <desc>Intermediate settings version, understood by VirtualBox 2.1.x.</desc>
427 <!--
428 2008-09-04: 2.0.0 released
429 2008-11-20: settings version 1.5 introduced
430 2008-12-17: 2.1.0 released
431 Machine changes:
432 guest OS identifiers changed;
433 Machine/Hardware/Display/MonitorCount renamed to monitorCount;
434 Machine/Hardware/Display/Accelerate3D renamed to accelerate3D;
435 Machine/Hardware/CPU/CPUCount/@count changed to CPU/@count
436 -->
437 </const>
438 <const name="v1_6" value="8">
439 <desc>Settings version "1.6", written by VirtualBox 2.1.4 (at least).</desc>
440 <!--
441 2008-12-17: 2.1.0 released
442 2008-12-19: settings version 1.6 introduced (is in 2.1 branch)
443 2009-04-08: 2.2.0 released
444 Machine changes: remove all Machine/Hardware/Network/Adapter/HostInterface[@TAPSetup or @TAPTerminate]/ attributes (done)
445 -->
446 </const>
447 <const name="v1_7" value="9">
448 <desc>Settings version "1.7", written by VirtualBox 2.2.x and 3.0.x.</desc>
449 <!--
450 2008-12-17: 2.1.0 released
451 2009-03-11: settings version 1.7 introduced (is in 2.2 branch)
452 2009-04-08: 2.2.0 released
453 VirtualBox.xml additions: NetserviceRegistry with DHCPServers (done)
454 Machine changes: HardDiskAttachments is now StorageControllers (done)
455 -->
456 </const>
457 <const name="v1_8" value="10">
458 <desc>Intermediate settings version "1.8", understood by VirtualBox 3.1.x.</desc>
459 <!--
460 Machine additions: Display/@accelerate2DVideo (done)
461 -->
462 </const>
463 <const name="v1_9" value="11">
464 <desc>Settings version "1.9", written by VirtualBox 3.1.x.</desc>
465 <!--
466 The big storage controller / DVD / Floppy rework (done)
467 -->
468 </const>
469 <const name="v1_10" value="12">
470 <desc>Settings version "1.10", written by VirtualBox 3.2.x.</desc>
471 <!--
472 Machine changes: RTC localOrUTC (done)
473 CPU hot-plug support
474 -->
475 </const>
476 <const name="v1_11" value="13">
477 <desc>Settings version "1.11", written by VirtualBox 4.0.x.</desc>
478 <!--
479 Machine changes: HD Audio controller, per-machine disk registries,
480 /@format attribute for DVD and floppy images.
481 -->
482 </const>
483 <const name="v1_12" value="14">
484 <desc>Settings version "1.12", written by VirtualBox 4.1.x.</desc>
485 <!--
486 Machine changes: raw PCI device attachment;
487 NetworkAdapter changes: bandwidth group.
488 -->
489 </const>
490 <const name="v1_13" value="15">
491 <desc>Settings version "1.13", written by VirtualBox 4.2.x.</desc>
492 <!--
493 Machine changes: tracing config, groups, autostart;
494 NetworkAdapter changes: unit for bandwidth group limits.
495 -->
496 </const>
497
498 <const name="Future" value="99999">
499 <desc>Settings version greater than "1.13", written by a future VirtualBox version.</desc>
500 </const>
501 </enum>
502
503 <enum
504 name="AccessMode"
505 uuid="1da0007c-ddf7-4be8-bcac-d84a1558785f"
506 >
507 <desc>
508 Access mode for opening files.
509 </desc>
510
511 <const name="ReadOnly" value="1"/>
512 <const name="ReadWrite" value="2"/>
513 </enum>
514
515 <enum
516 name="MachineState"
517 uuid="ec6c6a9e-113d-4ff4-b44f-0b69f21c97fe"
518 >
519 <desc>
520 Virtual machine execution state.
521
522 This enumeration represents possible values of the <link
523 to="IMachine::state"/> attribute.
524
525 Below is the basic virtual machine state diagram. It shows how the state
526 changes during virtual machine execution. The text in square braces shows
527 a method of the IConsole interface that performs the given state
528 transition.
529
530 <pre>
531 +---------[powerDown()] &lt;- Stuck &lt;--[failure]-+
532 V |
533 +-&gt; PoweredOff --+--&gt;[powerUp()]--&gt; Starting --+ | +-----[resume()]-----+
534 | | | | V |
535 | Aborted -----+ +--&gt; Running --[pause()]--&gt; Paused
536 | | ^ | ^ |
537 | Saved -----------[powerUp()]--&gt; Restoring -+ | | | |
538 | ^ | | | |
539 | | +-----------------------------------------+-|-------------------+ +
540 | | | | |
541 | | +-- Saving &lt;--------[takeSnapshot()]&lt;-------+---------------------+
542 | | | |
543 | +-------- Saving &lt;--------[saveState()]&lt;----------+---------------------+
544 | | |
545 +-------------- Stopping -------[powerDown()]&lt;----------+---------------------+
546 </pre>
547
548 Note that states to the right from PoweredOff, Aborted and Saved in the
549 above diagram are called <i>online VM states</i>. These states
550 represent the virtual machine which is being executed in a dedicated
551 process (usually with a GUI window attached to it where you can see the
552 activity of the virtual machine and interact with it). There are two
553 special pseudo-states, FirstOnline and LastOnline, that can be used in
554 relational expressions to detect if the given machine state is online or
555 not:
556
557 <pre>
558 if (machine.GetState() &gt;= MachineState_FirstOnline &amp;&amp;
559 machine.GetState() &lt;= MachineState_LastOnline)
560 {
561 ...the machine is being executed...
562 }
563 </pre>
564
565 When the virtual machine is in one of the online VM states (that is, being
566 executed), only a few machine settings can be modified. Methods working
567 with such settings contain an explicit note about that. An attempt to
568 change any other setting or perform a modifying operation during this time
569 will result in the @c VBOX_E_INVALID_VM_STATE error.
570
571 All online states except Running, Paused and Stuck are transitional: they
572 represent temporary conditions of the virtual machine that will last as
573 long as the operation that initiated such a condition.
574
575 The Stuck state is a special case. It means that execution of the machine
576 has reached the "Guru Meditation" condition. This condition indicates an
577 internal VMM (virtual machine manager) failure which may happen as a
578 result of either an unhandled low-level virtual hardware exception or one
579 of the recompiler exceptions (such as the <i>too-many-traps</i>
580 condition).
581
582 Note also that any online VM state may transit to the Aborted state. This
583 happens if the process that is executing the virtual machine terminates
584 unexpectedly (for example, crashes). Other than that, the Aborted state is
585 equivalent to PoweredOff.
586
587 There are also a few additional state diagrams that do not deal with
588 virtual machine execution and therefore are shown separately. The states
589 shown on these diagrams are called <i>offline VM states</i> (this includes
590 PoweredOff, Aborted and Saved too).
591
592 The first diagram shows what happens when a lengthy setup operation is
593 being executed (such as <link to="IMachine::attachDevice"/>).
594
595 <pre>
596 +----------------------------------(same state as before the call)------+
597 | |
598 +-&gt; PoweredOff --+ |
599 | | |
600 |-&gt; Aborted -----+--&gt;[lengthy VM configuration call] --&gt; SettingUp -----+
601 | |
602 +-&gt; Saved -------+
603 </pre>
604
605 The next two diagrams demonstrate the process of taking a snapshot of a
606 powered off virtual machine, restoring the state to that as of a snapshot
607 or deleting a snapshot, respectively.
608
609 <pre>
610 +----------------------------------(same state as before the call)------+
611 | |
612 +-&gt; PoweredOff --+ |
613 | +--&gt;[takeSnapshot()] -------------------&gt; Saving ------+
614 +-&gt; Aborted -----+
615
616 +-&gt; PoweredOff --+
617 | |
618 | Aborted -----+--&gt;[restoreSnapshot() ]-------&gt; RestoringSnapshot -+
619 | | [deleteSnapshot() ]-------&gt; DeletingSnapshot --+
620 +-&gt; Saved -------+ |
621 | |
622 +---(Saved if restored from an online snapshot, PoweredOff otherwise)---+
623 </pre>
624
625 Note that the Saving state is present in both the offline state group and
626 online state group. Currently, the only way to determine what group is
627 assumed in a particular case is to remember the previous machine state: if
628 it was Running or Paused, then Saving is an online state, otherwise it is
629 an offline state. This inconsistency may be removed in one of the future
630 versions of VirtualBox by adding a new state.
631
632 <note internal="yes">
633 For whoever decides to touch this enum: In order to keep the
634 comparisons involving FirstOnline and LastOnline pseudo-states valid,
635 the numeric values of these states must be correspondingly updated if
636 needed: for any online VM state, the condition
637 <tt>FirstOnline &lt;= state &lt;= LastOnline</tt> must be
638 @c true. The same relates to transient states for which
639 the condition <tt>FirstOnline &lt;= state &lt;= LastOnline</tt> must be
640 @c true.
641 </note>
642 </desc>
643
644 <const name="Null" value="0">
645 <desc>Null value (never used by the API).</desc>
646 </const>
647 <const name="PoweredOff" value="1">
648 <desc>
649 The machine is not running and has no saved execution state; it has
650 either never been started or been shut down successfully.
651 </desc>
652 </const>
653 <const name="Saved" value="2">
654 <desc>
655 The machine is not currently running, but the execution state of the machine
656 has been saved to an external file when it was running, from where
657 it can be resumed.
658 </desc>
659 </const>
660 <const name="Teleported" value="3">
661 <desc>
662 The machine was teleported to a different host (or process) and then
663 powered off. Take care when powering it on again may corrupt resources
664 it shares with the teleportation target (e.g. disk and network).
665 </desc>
666 </const>
667 <const name="Aborted" value="4">
668 <desc>
669 The process running the machine has terminated abnormally. This may
670 indicate a crash of the VM process in host execution context, or
671 the VM process has been terminated externally.
672 </desc>
673 </const>
674 <const name="Running" value="5">
675 <desc>
676 The machine is currently being executed.
677 <note internal="yes">
678 For whoever decides to touch this enum: In order to keep the
679 comparisons in the old source code valid, this state must immediately
680 precede the Paused state.
681 TODO: Lift this spectacularly wonderful restriction.
682 </note>
683 </desc>
684 </const>
685 <const name="Paused" value="6">
686 <desc>
687 Execution of the machine has been paused.
688 <note internal="yes">
689 For whoever decides to touch this enum: In order to keep the
690 comparisons in the old source code valid, this state must immediately
691 follow the Running state.
692 TODO: Lift this spectacularly wonderful restriction.
693 </note>
694 </desc>
695 </const>
696 <const name="Stuck" value="7">
697 <desc>
698 Execution of the machine has reached the "Guru Meditation"
699 condition. This indicates a severe error in the hypervisor itself.
700 <note internal="yes">
701 bird: Why this uncool name? Could we rename it to "GuruMeditation" or
702 "Guru", perhaps? Or are there some other VMM states that are
703 intended to be lumped in here as well?
704 </note>
705 </desc>
706 </const>
707 <const name="Teleporting" value="8">
708 <desc>
709 The machine is about to be teleported to a different host or process.
710 It is possible to pause a machine in this state, but it will go to the
711 @c TeleportingPausedVM state and it will not be
712 possible to resume it again unless the teleportation fails.
713 </desc>
714 </const>
715 <const name="LiveSnapshotting" value="9">
716 <desc>
717 A live snapshot is being taken. The machine is running normally, but
718 some of the runtime configuration options are inaccessible. Also, if
719 paused while in this state it will transition to
720 @c Saving and it will not be resume the
721 execution until the snapshot operation has completed.
722 </desc>
723 </const>
724 <const name="Starting" value="10">
725 <desc>
726 Machine is being started after powering it on from a
727 zero execution state.
728 </desc>
729 </const>
730 <const name="Stopping" value="11">
731 <desc>
732 Machine is being normally stopped powering it off, or after the guest OS
733 has initiated a shutdown sequence.
734 </desc>
735 </const>
736 <const name="Saving" value="12">
737 <desc>
738 Machine is saving its execution state to a file, or an online
739 snapshot of the machine is being taken.
740 </desc>
741 </const>
742 <const name="Restoring" value="13">
743 <desc>
744 Execution state of the machine is being restored from a file
745 after powering it on from the saved execution state.
746 </desc>
747 </const>
748 <const name="TeleportingPausedVM" value="14">
749 <desc>
750 The machine is being teleported to another host or process, but it is
751 not running. This is the paused variant of the
752 @c state.
753 </desc>
754 </const>
755 <const name="TeleportingIn" value="15">
756 <desc>
757 Teleporting the machine state in from another host or process.
758 </desc>
759 </const>
760 <const name="FaultTolerantSyncing" value="16">
761 <desc>
762 The machine is being synced with a fault tolerant VM running elsewhere.
763 </desc>
764 </const>
765 <const name="DeletingSnapshotOnline" value="17">
766 <desc>
767 Like @c DeletingSnapshot, but the merging of media is ongoing in
768 the background while the machine is running.
769 </desc>
770 </const>
771 <const name="DeletingSnapshotPaused" value="18">
772 <desc>
773 Like @c DeletingSnapshotOnline, but the machine was paused when the
774 merging of differencing media was started.
775 </desc>
776 </const>
777 <const name="RestoringSnapshot" value="19">
778 <desc>
779 A machine snapshot is being restored; this typically does not take long.
780 </desc>
781 </const>
782 <const name="DeletingSnapshot" value="20">
783 <desc>
784 A machine snapshot is being deleted; this can take a long time since this
785 may require merging differencing media. This value indicates that the
786 machine is not running while the snapshot is being deleted.
787 </desc>
788 </const>
789 <const name="SettingUp" value="21">
790 <desc>
791 Lengthy setup operation is in progress.
792 </desc>
793 </const>
794
795 <const name="FirstOnline" value="5" wsmap="suppress"> <!-- Running -->
796 <desc>
797 Pseudo-state: first online state (for use in relational expressions).
798 </desc>
799 </const>
800 <const name="LastOnline" value="18" wsmap="suppress"> <!-- DeletingSnapshotPaused -->
801 <desc>
802 Pseudo-state: last online state (for use in relational expressions).
803 </desc>
804 </const>
805
806 <const name="FirstTransient" value="8" wsmap="suppress"> <!-- Teleporting -->
807 <desc>
808 Pseudo-state: first transient state (for use in relational expressions).
809 </desc>
810 </const>
811 <const name="LastTransient" value="21" wsmap="suppress"> <!-- SettingUp -->
812 <desc>
813 Pseudo-state: last transient state (for use in relational expressions).
814 </desc>
815 </const>
816
817 </enum>
818
819 <enum
820 name="SessionState"
821 uuid="cf2700c0-ea4b-47ae-9725-7810114b94d8"
822 >
823 <desc>
824 Session state. This enumeration represents possible values of
825 <link to="IMachine::sessionState"/> and <link to="ISession::state"/>
826 attributes.
827 </desc>
828
829 <const name="Null" value="0">
830 <desc>Null value (never used by the API).</desc>
831 </const>
832 <const name="Unlocked" value="1">
833 <desc>
834 In <link to="IMachine::sessionState"/>, this means that the machine
835 is not locked for any sessions.
836
837 In <link to="ISession::state"/>, this means that no machine is
838 currently locked for this session.
839 </desc>
840 </const>
841 <const name="Locked" value="2">
842 <desc>
843 In <link to="IMachine::sessionState"/>, this means that the machine
844 is currently locked for a session, whose process identifier can
845 then be found in the <link to="IMachine::sessionPid" /> attribute.
846
847 In <link to="ISession::state"/>, this means that a machine is
848 currently locked for this session, and the mutable machine object
849 can be found in the <link to="ISession::machine"/> attribute
850 (see <link to="IMachine::lockMachine" /> for details).
851 </desc>
852 </const>
853 <const name="Spawning" value="3">
854 <desc>
855 A new process is being spawned for the machine as a result of
856 <link to="IMachine::launchVMProcess"/> call. This state also occurs
857 as a short transient state during an <link to="IMachine::lockMachine"/>
858 call.
859 </desc>
860 </const>
861 <const name="Unlocking" value="4">
862 <desc>
863 The session is being unlocked.
864 </desc>
865 </const>
866 </enum>
867
868 <enum
869 name="CPUPropertyType"
870 uuid="24d356a6-2f45-4abd-b977-1cbe9c4701f5"
871 >
872 <desc>
873 Virtual CPU property type. This enumeration represents possible values of the
874 IMachine get- and setCPUProperty methods.
875 </desc>
876 <const name="Null" value="0">
877 <desc>Null value (never used by the API).</desc>
878 </const>
879 <const name="PAE" value="1">
880 <desc>
881 This setting determines whether VirtualBox will expose the Physical Address
882 Extension (PAE) feature of the host CPU to the guest. Note that in case PAE
883 is not available, it will not be reported.
884 </desc>
885 </const>
886 <const name="Synthetic" value="2">
887 <desc>
888 This setting determines whether VirtualBox will expose a synthetic CPU to the guest to allow
889 teleporting between host systems that differ significantly.
890 </desc>
891 </const>
892 </enum>
893
894
895 <enum
896 name="HWVirtExPropertyType"
897 uuid="ce81dfdd-d2b8-4a90-bbea-40ee8b7ffcee"
898 >
899 <desc>
900 Hardware virtualization property type. This enumeration represents possible values
901 for the <link to="IMachine::getHWVirtExProperty"/> and
902 <link to="IMachine::setHWVirtExProperty"/> methods.
903 </desc>
904 <const name="Null" value="0">
905 <desc>Null value (never used by the API).</desc>
906 </const>
907 <const name="Enabled" value="1">
908 <desc>
909 Whether hardware virtualization (VT-x/AMD-V) is enabled at all. If
910 such extensions are not available, they will not be used.
911 </desc>
912 </const>
913 <const name="Exclusive" value="2">
914 <desc>
915 Whether hardware virtualization is used exclusively by VirtualBox. When enabled,
916 VirtualBox assumes it can acquire full and exclusive access to the VT-x or AMD-V
917 feature of the host. To share these with other hypervisors, you must disable this property.
918 </desc>
919 </const>
920 <const name="VPID" value="3">
921 <desc>
922 Whether VT-x VPID is enabled. If this extension is not available, it will not be used.
923 </desc>
924 </const>
925 <const name="NestedPaging" value="4">
926 <desc>
927 Whether Nested Paging is enabled. If this extension is not available, it will not be used.
928 </desc>
929 </const>
930 <const name="LargePages" value="5">
931 <desc>
932 Whether large page allocation is enabled; requires nested paging and a 64 bits host.
933 </desc>
934 </const>
935 <const name="Force" value="6">
936 <desc>
937 Whether the VM should fail to start if hardware virtualization (VT-x/AMD-V) cannot be used. If
938 not set, there will be an automatic fallback to software virtualization.
939 </desc>
940 </const>
941 </enum>
942
943 <enum
944 name="FaultToleranceState"
945 uuid="5124f7ec-6b67-493c-9dee-ee45a44114e1"
946 >
947 <desc>
948 Used with <link to="IMachine::faultToleranceState" />.
949 </desc>
950 <const name="Inactive" value="1">
951 <desc>No fault tolerance enabled.</desc>
952 </const>
953 <const name="Master" value="2">
954 <desc>Fault tolerant master VM.</desc>
955 </const>
956 <const name="Standby" value="3">
957 <desc>Fault tolerant standby VM.</desc>
958 </const>
959 </enum>
960
961 <enum
962 name="LockType"
963 uuid="168a6a8e-12fd-4878-a1f9-38a750a56089"
964 >
965 <desc>
966 Used with <link to="IMachine::lockMachine" />.
967 </desc>
968 <const name="Write" value="2">
969 <desc>Lock the machine for writing.</desc>
970 </const>
971 <const name="Shared" value="1">
972 <desc>Request only a shared read lock for remote-controlling the machine.</desc>
973 </const>
974 <const name="VM" value="3">
975 <desc>Lock the machine for writing, and create objects necessary for
976 running a VM in this process.</desc>
977 </const>
978 </enum>
979
980 <enum
981 name="SessionType"
982 uuid="A13C02CB-0C2C-421E-8317-AC0E8AAA153A"
983 >
984 <desc>
985 Session type. This enumeration represents possible values of the
986 <link to="ISession::type"/> attribute.
987 </desc>
988
989 <const name="Null" value="0">
990 <desc>Null value (never used by the API).</desc>
991 </const>
992 <const name="WriteLock" value="1">
993 <desc>
994 Session has acquired an exclusive write lock on a machine
995 using <link to="IMachine::lockMachine"/>.
996 </desc>
997 </const>
998 <const name="Remote" value="2">
999 <desc>
1000 Session has launched a VM process using
1001 <link to="IMachine::launchVMProcess"/>
1002 </desc>
1003 </const>
1004 <const name="Shared" value="3">
1005 <desc>
1006 Session has obtained a link to another session using
1007 <link to="IMachine::lockMachine"/>
1008 </desc>
1009 </const>
1010 </enum>
1011
1012 <enum
1013 name="DeviceType"
1014 uuid="6d9420f7-0b56-4636-99f9-7346f1b01e57"
1015 >
1016 <desc>
1017 Device type.
1018 </desc>
1019 <const name="Null" value="0">
1020 <desc>
1021 Null value, may also mean "no device" (not allowed for
1022 <link to="IConsole::getDeviceActivity"/>).
1023 </desc>
1024 </const>
1025 <const name="Floppy" value="1">
1026 <desc>Floppy device.</desc>
1027 </const>
1028 <const name="DVD" value="2">
1029 <desc>CD/DVD-ROM device.</desc>
1030 </const>
1031 <const name="HardDisk" value="3">
1032 <desc>Hard disk device.</desc>
1033 </const>
1034 <const name="Network" value="4">
1035 <desc>Network device.</desc>
1036 </const>
1037 <const name="USB" value="5">
1038 <desc>USB device.</desc>
1039 </const>
1040 <const name="SharedFolder" value="6">
1041 <desc>Shared folder device.</desc>
1042 </const>
1043 </enum>
1044
1045 <enum
1046 name="DeviceActivity"
1047 uuid="6FC8AEAA-130A-4eb5-8954-3F921422D707"
1048 >
1049 <desc>
1050 Device activity for <link to="IConsole::getDeviceActivity"/>.
1051 </desc>
1052
1053 <const name="Null" value="0"/>
1054 <const name="Idle" value="1"/>
1055 <const name="Reading" value="2"/>
1056 <const name="Writing" value="3"/>
1057 </enum>
1058
1059 <enum
1060 name="ClipboardMode"
1061 uuid="33364716-4008-4701-8f14-be0fa3d62950"
1062 >
1063 <desc>
1064 Host-Guest clipboard interchange mode.
1065 </desc>
1066
1067 <const name="Disabled" value="0"/>
1068 <const name="HostToGuest" value="1"/>
1069 <const name="GuestToHost" value="2"/>
1070 <const name="Bidirectional" value="3"/>
1071 </enum>
1072
1073 <enum
1074 name="DragAndDropMode"
1075 uuid="b618ea0e-b6fb-4f8d-97f7-5e237e49b547"
1076 >
1077 <desc>
1078 Drag'n'Drop interchange mode.
1079 </desc>
1080
1081 <const name="Disabled" value="0"/>
1082 <const name="HostToGuest" value="1"/>
1083 <const name="GuestToHost" value="2"/>
1084 <const name="Bidirectional" value="3"/>
1085 </enum>
1086
1087 <enum
1088 name="Scope"
1089 uuid="7c91096e-499e-4eca-9f9b-9001438d7855"
1090 >
1091 <desc>
1092 Scope of the operation.
1093
1094 A generic enumeration used in various methods to define the action or
1095 argument scope.
1096 </desc>
1097
1098 <const name="Global" value="0"/>
1099 <const name="Machine" value="1"/>
1100 <const name="Session" value="2"/>
1101 </enum>
1102
1103 <enum
1104 name="BIOSBootMenuMode"
1105 uuid="ae4fb9f7-29d2-45b4-b2c7-d579603135d5"
1106 >
1107 <desc>
1108 BIOS boot menu mode.
1109 </desc>
1110
1111 <const name="Disabled" value="0"/>
1112 <const name="MenuOnly" value="1"/>
1113 <const name="MessageAndMenu" value="2"/>
1114 </enum>
1115
1116 <enum
1117 name="ProcessorFeature"
1118 uuid="64c38e6b-8bcf-45ad-ac03-9b406287c5bf"
1119 >
1120 <desc>
1121 CPU features.
1122 </desc>
1123
1124 <const name="HWVirtEx" value="0"/>
1125 <const name="PAE" value="1"/>
1126 <const name="LongMode" value="2"/>
1127 <const name="NestedPaging" value="3"/>
1128 </enum>
1129
1130 <enum
1131 name="FirmwareType"
1132 uuid="b903f264-c230-483e-ac74-2b37ce60d371"
1133 >
1134 <desc>
1135 Firmware type.
1136 </desc>
1137 <const name="BIOS" value="1">
1138 <desc>BIOS Firmware.</desc>
1139 </const>
1140 <const name="EFI" value="2">
1141 <desc>EFI Firmware, bitness detected basing on OS type.</desc>
1142 </const>
1143 <const name="EFI32" value="3">
1144 <desc>Efi firmware, 32-bit.</desc>
1145 </const>
1146 <const name="EFI64" value="4">
1147 <desc>Efi firmware, 64-bit.</desc>
1148 </const>
1149 <const name="EFIDUAL" value="5">
1150 <desc>Efi firmware, combined 32 and 64-bit.</desc>
1151 </const>
1152 </enum>
1153
1154 <enum
1155 name="PointingHidType"
1156 uuid="0d3c17a2-821a-4b2e-ae41-890c6c60aa97"
1157 >
1158 <desc>
1159 Type of pointing device used in a virtual machine.
1160 </desc>
1161 <const name="None" value="1">
1162 <desc>No mouse.</desc>
1163 </const>
1164 <const name="PS2Mouse" value="2">
1165 <desc>PS/2 auxiliary device, a.k.a. mouse.</desc>
1166 </const>
1167 <const name="USBMouse" value="3">
1168 <desc>USB mouse (relative pointer).</desc>
1169 </const>
1170 <const name="USBTablet" value="4">
1171 <desc>USB tablet (absolute pointer).</desc>
1172 </const>
1173 <const name="ComboMouse" value="5">
1174 <desc>Combined device, working as PS/2 or USB mouse, depending on guest behavior.
1175 Using of such device can have negative performance implications. </desc>
1176 </const>
1177 </enum>
1178
1179 <enum
1180 name="KeyboardHidType"
1181 uuid="5a5b0996-3a3e-44bb-9019-56979812cbcc"
1182 >
1183 <desc>
1184 Type of keyboard device used in a virtual machine.
1185 </desc>
1186 <const name="None" value="1">
1187 <desc>No keyboard.</desc>
1188 </const>
1189 <const name="PS2Keyboard" value="2">
1190 <desc>PS/2 keyboard.</desc>
1191 </const>
1192 <const name="USBKeyboard" value="3">
1193 <desc>USB keyboard.</desc>
1194 </const>
1195 <const name="ComboKeyboard" value="4">
1196 <desc>Combined device, working as PS/2 or USB keyboard, depending on guest behavior.
1197 Using of such device can have negative performance implications. </desc>
1198 </const>
1199 </enum>
1200
1201 <!--
1202 // IVirtualBoxErrorInfo
1203 /////////////////////////////////////////////////////////////////////////
1204 -->
1205
1206 <interface
1207 name="IVirtualBoxErrorInfo" extends="$errorinfo"
1208 uuid="e053d3c0-f493-491b-a735-3a9f0b1feed4"
1209 supportsErrorInfo="no"
1210 wsmap="managed"
1211 >
1212 <desc>
1213 The IVirtualBoxErrorInfo interface represents extended error information.
1214
1215 Extended error information can be set by VirtualBox components after
1216 unsuccessful or partially successful method invocation. This information
1217 can be retrieved by the calling party as an IVirtualBoxErrorInfo object
1218 and then shown to the client in addition to the plain 32-bit result code.
1219
1220 In MS COM, this interface extends the IErrorInfo interface,
1221 in XPCOM, it extends the nsIException interface. In both cases,
1222 it provides a set of common attributes to retrieve error
1223 information.
1224
1225 Sometimes invocation of some component's method may involve methods of
1226 other components that may also fail (independently of this method's
1227 failure), or a series of non-fatal errors may precede a fatal error that
1228 causes method failure. In cases like that, it may be desirable to preserve
1229 information about all errors happened during method invocation and deliver
1230 it to the caller. The <link to="#next"/> attribute is intended
1231 specifically for this purpose and allows to represent a chain of errors
1232 through a single IVirtualBoxErrorInfo object set after method invocation.
1233
1234 <note>errors are stored to a chain in the reverse order, i.e. the
1235 initial error object you query right after method invocation is the last
1236 error set by the callee, the object it points to in the @a next attribute
1237 is the previous error and so on, up to the first error (which is the last
1238 in the chain).</note>
1239 </desc>
1240
1241 <attribute name="resultCode" type="long" readonly="yes">
1242 <desc>
1243 Result code of the error.
1244 Usually, it will be the same as the result code returned
1245 by the method that provided this error information, but not
1246 always. For example, on Win32, CoCreateInstance() will most
1247 likely return E_NOINTERFACE upon unsuccessful component
1248 instantiation attempt, but not the value the component factory
1249 returned. Value is typed 'long', not 'result',
1250 to make interface usable from scripting languages.
1251 <note>
1252 In MS COM, there is no equivalent.
1253 In XPCOM, it is the same as nsIException::result.
1254 </note>
1255 </desc>
1256 </attribute>
1257
1258 <attribute name="interfaceID" type="uuid" mod="string" readonly="yes">
1259 <desc>
1260 UUID of the interface that defined the error.
1261 <note>
1262 In MS COM, it is the same as IErrorInfo::GetGUID, except for the
1263 data type.
1264 In XPCOM, there is no equivalent.
1265 </note>
1266 </desc>
1267 </attribute>
1268
1269 <attribute name="component" type="wstring" readonly="yes">
1270 <desc>
1271 Name of the component that generated the error.
1272 <note>
1273 In MS COM, it is the same as IErrorInfo::GetSource.
1274 In XPCOM, there is no equivalent.
1275 </note>
1276 </desc>
1277 </attribute>
1278
1279 <attribute name="text" type="wstring" readonly="yes">
1280 <desc>
1281 Text description of the error.
1282 <note>
1283 In MS COM, it is the same as IErrorInfo::GetDescription.
1284 In XPCOM, it is the same as nsIException::message.
1285 </note>
1286 </desc>
1287 </attribute>
1288
1289 <attribute name="next" type="IVirtualBoxErrorInfo" readonly="yes">
1290 <desc>
1291 Next error object if there is any, or @c null otherwise.
1292 <note>
1293 In MS COM, there is no equivalent.
1294 In XPCOM, it is the same as nsIException::inner.
1295 </note>
1296 </desc>
1297 </attribute>
1298
1299 </interface>
1300
1301 <!--
1302 // IVirtualBox
1303 /////////////////////////////////////////////////////////////////////////
1304 -->
1305
1306 <interface
1307 name="IDHCPServer" extends="$unknown"
1308 uuid="6cfe387c-74fb-4ca7-bff6-973bec8af7a3"
1309 wsmap="managed"
1310 >
1311 <desc>
1312 The IDHCPServer interface represents the vbox dhcp server configuration.
1313
1314 To enumerate all the dhcp servers on the host, use the
1315 <link to="IVirtualBox::DHCPServers"/> attribute.
1316 </desc>
1317
1318 <attribute name="enabled" type="boolean">
1319 <desc>
1320 specifies if the dhcp server is enabled
1321 </desc>
1322 </attribute>
1323
1324 <attribute name="IPAddress" type="wstring" readonly="yes">
1325 <desc>
1326 specifies server IP
1327 </desc>
1328 </attribute>
1329
1330 <attribute name="networkMask" type="wstring" readonly="yes">
1331 <desc>
1332 specifies server network mask
1333 </desc>
1334 </attribute>
1335
1336 <attribute name="networkName" type="wstring" readonly="yes">
1337 <desc>
1338 specifies internal network name the server is used for
1339 </desc>
1340 </attribute>
1341
1342 <attribute name="lowerIP" type="wstring" readonly="yes">
1343 <desc>
1344 specifies from IP address in server address range
1345 </desc>
1346 </attribute>
1347
1348 <attribute name="upperIP" type="wstring" readonly="yes">
1349 <desc>
1350 specifies to IP address in server address range
1351 </desc>
1352 </attribute>
1353
1354 <method name="setConfiguration">
1355 <desc>
1356 configures the server
1357 <result name="E_INVALIDARG">
1358 invalid configuration supplied
1359 </result>
1360 </desc>
1361 <param name="IPAddress" type="wstring" dir="in">
1362 <desc>
1363 server IP address
1364 </desc>
1365 </param>
1366 <param name="networkMask" type="wstring" dir="in">
1367 <desc>
1368 server network mask
1369 </desc>
1370 </param>
1371 <param name="FromIPAddress" type="wstring" dir="in">
1372 <desc>
1373 server From IP address for address range
1374 </desc>
1375 </param>
1376 <param name="ToIPAddress" type="wstring" dir="in">
1377 <desc>
1378 server To IP address for address range
1379 </desc>
1380 </param>
1381 </method>
1382
1383 <method name="start">
1384 <desc>
1385 Starts DHCP server process.
1386 <result name="E_FAIL">
1387 Failed to start the process.
1388 </result>
1389 </desc>
1390 <param name="networkName" type="wstring" dir="in">
1391 <desc>
1392 Name of internal network DHCP server should attach to.
1393 </desc>
1394 </param>
1395 <param name="trunkName" type="wstring" dir="in">
1396 <desc>
1397 Name of internal network trunk.
1398 </desc>
1399 </param>
1400 <param name="trunkType" type="wstring" dir="in">
1401 <desc>
1402 Type of internal network trunk.
1403 </desc>
1404 </param>
1405 </method>
1406
1407 <method name="stop">
1408 <desc>
1409 Stops DHCP server process.
1410 <result name="E_FAIL">
1411 Failed to stop the process.
1412 </result>
1413 </desc>
1414 </method>
1415 </interface>
1416
1417 <interface
1418 name="IVirtualBox" extends="$unknown"
1419 uuid="53789455-fad2-425a-94c8-eb6dc4ceaa05"
1420 wsmap="managed"
1421 >
1422 <desc>
1423 The IVirtualBox interface represents the main interface exposed by the
1424 product that provides virtual machine management.
1425
1426 An instance of IVirtualBox is required for the product to do anything
1427 useful. Even though the interface does not expose this, internally,
1428 IVirtualBox is implemented as a singleton and actually lives in the
1429 process of the VirtualBox server (VBoxSVC.exe). This makes sure that
1430 IVirtualBox can track the state of all virtual machines on a particular
1431 host, regardless of which frontend started them.
1432
1433 To enumerate all the virtual machines on the host, use the
1434 <link to="IVirtualBox::machines"/> attribute.
1435 </desc>
1436
1437 <attribute name="version" type="wstring" readonly="yes">
1438 <desc>
1439 A string representing the version number of the product. The
1440 format is 3 integer numbers divided by dots (e.g. 1.0.1). The
1441 last number represents the build number and will frequently change.
1442
1443 This may be followed by a _ALPHA[0-9]*, _BETA[0-9]* or _RC[0-9]* tag
1444 in prerelease builds. Non-Oracle builds may (/shall) also have a
1445 publisher tag, at the end. The publisher tag starts with an underscore
1446 just like the prerelease build type tag.
1447 </desc>
1448 </attribute>
1449
1450 <attribute name="revision" type="unsigned long" readonly="yes">
1451 <desc>
1452 The internal build revision number of the product.
1453 </desc>
1454 </attribute>
1455
1456 <attribute name="packageType" type="wstring" readonly="yes">
1457 <desc>
1458 A string representing the package type of this product. The
1459 format is OS_ARCH_DIST where OS is either WINDOWS, LINUX,
1460 SOLARIS, DARWIN. ARCH is either 32BITS or 64BITS. DIST
1461 is either GENERIC, UBUNTU_606, UBUNTU_710, or something like
1462 this.
1463 </desc>
1464 </attribute>
1465
1466 <attribute name="APIVersion" type="wstring" readonly="yes">
1467 <desc>
1468 A string representing the VirtualBox API version number. The format is
1469 2 integer numbers divided by an underscore (e.g. 1_0). After the
1470 first public release of packages with a particular API version the
1471 API will not be changed in an incompatible way. Note that this
1472 guarantee does not apply to development builds, and also there is no
1473 guarantee that this version is identical to the first two integer
1474 numbers of the package version.
1475 </desc>
1476 </attribute>
1477
1478 <attribute name="homeFolder" type="wstring" readonly="yes">
1479 <desc>
1480 Full path to the directory where the global settings file,
1481 <tt>VirtualBox.xml</tt>, is stored.
1482
1483 In this version of VirtualBox, the value of this property is
1484 always <tt>&lt;user_dir&gt;/.VirtualBox</tt> (where
1485 <tt>&lt;user_dir&gt;</tt> is the path to the user directory,
1486 as determined by the host OS), and cannot be changed.
1487
1488 This path is also used as the base to resolve relative paths in
1489 places where relative paths are allowed (unless otherwise
1490 expressly indicated).
1491 </desc>
1492 </attribute>
1493
1494 <attribute name="settingsFilePath" type="wstring" readonly="yes">
1495 <desc>
1496 Full name of the global settings file.
1497 The value of this property corresponds to the value of
1498 <link to="#homeFolder"/> plus <tt>/VirtualBox.xml</tt>.
1499 </desc>
1500 </attribute>
1501
1502 <attribute name="host" type="IHost" readonly="yes">
1503 <desc>Associated host object.</desc>
1504 </attribute>
1505
1506 <attribute name="systemProperties" type="ISystemProperties" readonly="yes">
1507 <desc>Associated system information object.</desc>
1508 </attribute>
1509
1510 <attribute name="machines" type="IMachine" readonly="yes" safearray="yes">
1511 <desc>
1512 Array of machine objects registered within this VirtualBox instance.
1513 </desc>
1514 </attribute>
1515
1516 <attribute name="machineGroups" type="wstring" readonly="yes" safearray="yes">
1517 <desc>
1518 Array of all machine group names which are used by the machines which
1519 are accessible. Each group is only listed once, however they are listed
1520 in no particular order and there is no guarantee that there are no gaps
1521 in the group hierarchy (i.e. <tt>"/"</tt>, <tt>"/group/subgroup"</tt>
1522 is a valid result).
1523 </desc>
1524 </attribute>
1525
1526 <attribute name="hardDisks" type="IMedium" readonly="yes" safearray="yes">
1527 <desc>
1528 Array of medium objects known to this VirtualBox installation.
1529
1530 This array contains only base media. All differencing
1531 media of the given base medium can be enumerated using
1532 <link to="IMedium::children"/>.
1533 </desc>
1534 </attribute>
1535
1536 <attribute name="DVDImages" type="IMedium" readonly="yes" safearray="yes">
1537 <desc>
1538 Array of CD/DVD image objects currently in use by this VirtualBox instance.
1539 </desc>
1540 </attribute>
1541
1542 <attribute name="floppyImages" type="IMedium" readonly="yes" safearray="yes">
1543 <desc>
1544 Array of floppy image objects currently in use by this VirtualBox instance.
1545 </desc>
1546 </attribute>
1547
1548 <attribute name="progressOperations" type="IProgress" readonly="yes" safearray="yes"/>
1549
1550 <attribute name="guestOSTypes" type="IGuestOSType" readonly="yes" safearray="yes"/>
1551
1552 <attribute name="sharedFolders" type="ISharedFolder" readonly="yes" safearray="yes">
1553 <desc>
1554 Collection of global shared folders. Global shared folders are
1555 available to all virtual machines.
1556
1557 New shared folders are added to the collection using
1558 <link to="#createSharedFolder"/>. Existing shared folders can be
1559 removed using <link to="#removeSharedFolder"/>.
1560
1561 <note>
1562 In the current version of the product, global shared folders are not
1563 implemented and therefore this collection is always empty.
1564 </note>
1565 </desc>
1566 </attribute>
1567
1568 <attribute name="performanceCollector" type="IPerformanceCollector" readonly="yes">
1569 <desc>
1570 Associated performance collector object.
1571 </desc>
1572 </attribute>
1573
1574 <attribute name="DHCPServers" type="IDHCPServer" safearray="yes" readonly="yes">
1575 <desc>
1576 DHCP servers.
1577 </desc>
1578 </attribute>
1579
1580 <attribute name="eventSource" type="IEventSource" readonly="yes">
1581 <desc>
1582 Event source for VirtualBox events.
1583 </desc>
1584 </attribute>
1585
1586 <attribute name="extensionPackManager" type="IExtPackManager" readonly="yes">
1587 <desc>
1588 The extension pack manager.
1589 </desc>
1590 </attribute>
1591
1592
1593 <attribute name="internalNetworks" type="wstring" safearray="yes" readonly="yes">
1594 <desc>
1595 Names of all internal networks.
1596 </desc>
1597 </attribute>
1598
1599 <attribute name="genericNetworkDrivers" type="wstring" safearray="yes" readonly="yes">
1600 <desc>
1601 Names of all generic network drivers.
1602 </desc>
1603 </attribute>
1604
1605 <method name="composeMachineFilename">
1606 <desc>
1607 Returns a recommended full path of the settings file name for a new virtual
1608 machine.
1609
1610 This API serves two purposes:
1611
1612 <ul>
1613 <li>It gets called by <link to="#createMachine" /> if @c null or
1614 empty string (which is recommended) is specified for the
1615 @a settingsFile argument there, which means that API should use
1616 a recommended default file name.</li>
1617
1618 <li>It can be called manually by a client software before creating a machine,
1619 e.g. if that client wants to pre-create the machine directory to create
1620 virtual hard disks in that directory together with the new machine
1621 settings file. In that case, the file name should be stripped from the
1622 full settings file path returned by this function to obtain the
1623 machine directory.</li>
1624 </ul>
1625
1626 See <link to="IMachine::name"/> and <link to="#createMachine"/> for more
1627 details about the machine name.
1628
1629 @a groupName defines which additional subdirectory levels should be
1630 included. It must be either a valid group name or @c null or empty
1631 string which designates that the machine will not be related to a
1632 machine group.
1633
1634 If @a baseFolder is a @c null or empty string (which is recommended), the
1635 default machine settings folder
1636 (see <link to="ISystemProperties::defaultMachineFolder" />) will be used as
1637 a base folder for the created machine, resulting in a file name like
1638 "/home/user/VirtualBox VMs/name/name.vbox". Otherwise the given base folder
1639 will be used.
1640
1641 This method does not access the host disks. In particular, it does not check
1642 for whether a machine with this name already exists.
1643 </desc>
1644 <param name="name" type="wstring" dir="in">
1645 <desc>Suggested machine name.</desc>
1646 </param>
1647 <param name="group" type="wstring" dir="in">
1648 <desc>Machine group name for the new machine or machine group. It is
1649 used to determine the right subdirectory.</desc>
1650 </param>
1651 <param name="baseFolder" type="wstring" dir="in">
1652 <desc>Base machine folder (optional).</desc>
1653 </param>
1654 <param name="file" type="wstring" dir="return">
1655 <desc>Fully qualified path where the machine would be created.</desc>
1656 </param>
1657 </method>
1658
1659 <method name="createMachine">
1660 <desc>
1661 Creates a new virtual machine by creating a machine settings file at
1662 the given location.
1663
1664 VirtualBox machine settings files use a custom XML dialect. Starting
1665 with VirtualBox 4.0, a ".vbox" extension is recommended, but not enforced,
1666 and machine files can be created at arbitrary locations.
1667
1668 However, it is recommended that machines are created in the default
1669 machine folder (e.g. "/home/user/VirtualBox VMs/name/name.vbox"; see
1670 <link to="ISystemProperties::defaultMachineFolder" />). If you specify
1671 @c null or empty string (which is recommended) for the @a settingsFile
1672 argument, <link to="#composeMachineFilename" /> is called automatically
1673 to have such a recommended name composed based on the machine name
1674 given in the @a name argument and the primary group.
1675
1676 If the resulting settings file already exists, this method will fail,
1677 unless @a forceOverwrite is set.
1678
1679 The new machine is created unregistered, with the initial configuration
1680 set according to the specified guest OS type. A typical sequence of
1681 actions to create a new virtual machine is as follows:
1682
1683 <ol>
1684 <li>
1685 Call this method to have a new machine created. The returned machine
1686 object will be "mutable" allowing to change any machine property.
1687 </li>
1688
1689 <li>
1690 Configure the machine using the appropriate attributes and methods.
1691 </li>
1692
1693 <li>
1694 Call <link to="IMachine::saveSettings" /> to write the settings
1695 to the machine's XML settings file. The configuration of the newly
1696 created machine will not be saved to disk until this method is
1697 called.
1698 </li>
1699
1700 <li>
1701 Call <link to="#registerMachine" /> to add the machine to the list
1702 of machines known to VirtualBox.
1703 </li>
1704 </ol>
1705
1706 The specified guest OS type identifier must match an ID of one of known
1707 guest OS types listed in the <link to="IVirtualBox::guestOSTypes"/>
1708 array.
1709
1710 Optionally, you may specify an UUID of to assign to the created machine.
1711 However, this is not recommended and you should normally pass an empty
1712 (@c null) UUID to this method so that a new UUID will be automatically
1713 generated for every created machine. You can use UUID
1714 00000000-0000-0000-0000-000000000000 as @c null value.
1715
1716 <note>
1717 There is no way to change the name of the settings file or
1718 subfolder of the created machine directly.
1719 </note>
1720
1721 <result name="VBOX_E_OBJECT_NOT_FOUND">
1722 @a osTypeId is invalid.
1723 </result>
1724 <result name="VBOX_E_FILE_ERROR">
1725 Resulting settings file name is invalid or the settings file already
1726 exists or could not be created due to an I/O error.
1727 </result>
1728 <result name="E_INVALIDARG">
1729 @a name is empty or @c null.
1730 </result>
1731 </desc>
1732
1733 <param name="settingsFile" type="wstring" dir="in">
1734 <desc>Fully qualified path where the settings file should be created,
1735 empty string or @c null for a default folder and file based on the
1736 @a name argument and the primary group.
1737 (see <link to="#composeMachineFilename" />).</desc>
1738 </param>
1739 <param name="name" type="wstring" dir="in">
1740 <desc>Machine name.</desc>
1741 </param>
1742 <param name="groups" type="wstring" safearray="yes" dir="in">
1743 <desc>Array of group names. @c null or an empty array have the same
1744 meaning as an array with just the empty string or <tt>"/"</tt>, i.e.
1745 create a machine without group association.</desc>
1746 </param>
1747 <param name="osTypeId" type="wstring" dir="in">
1748 <desc>Guest OS Type ID.</desc>
1749 </param>
1750 <param name="id" type="uuid" mod="string" dir="in">
1751 <desc>Machine UUID (optional).</desc>
1752 </param>
1753 <param name="forceOverwrite" type="boolean" dir="in">
1754 <desc>If true, an existing machine settings file will be overwritten.</desc>
1755 </param>
1756 <param name="machine" type="IMachine" dir="return">
1757 <desc>Created machine object.</desc>
1758 </param>
1759 </method>
1760
1761 <method name="openMachine">
1762 <desc>
1763 Opens a virtual machine from the existing settings file.
1764 The opened machine remains unregistered until you call
1765 <link to="#registerMachine"/>.
1766
1767 The specified settings file name must be fully qualified.
1768 The file must exist and be a valid machine XML settings file
1769 whose contents will be used to construct the machine object.
1770
1771 <result name="VBOX_E_FILE_ERROR">
1772 Settings file name invalid, not found or sharing violation.
1773 </result>
1774 </desc>
1775 <param name="settingsFile" type="wstring" dir="in">
1776 <desc>
1777 Name of the machine settings file.
1778 </desc>
1779 </param>
1780 <param name="machine" type="IMachine" dir="return">
1781 <desc>Opened machine object.</desc>
1782 </param>
1783 <note>
1784 <link to="IMachine::settingsModified"/> will return
1785 @c false for the created machine, until any of machine settings
1786 are changed.
1787 </note>
1788 </method>
1789
1790 <method name="registerMachine">
1791 <desc>
1792
1793 Registers the machine previously created using
1794 <link to="#createMachine"/> or opened using
1795 <link to="#openMachine"/> within this VirtualBox installation. After
1796 successful method invocation, the
1797 <link to="IMachineRegisteredEvent"/> event is fired.
1798
1799 <note>
1800 This method implicitly calls <link to="IMachine::saveSettings"/>
1801 to save all current machine settings before registering it.
1802 </note>
1803
1804 <result name="VBOX_E_OBJECT_NOT_FOUND">
1805 No matching virtual machine found.
1806 </result>
1807 <result name="VBOX_E_INVALID_OBJECT_STATE">
1808 Virtual machine was not created within this VirtualBox instance.
1809 </result>
1810
1811 </desc>
1812 <param name="machine" type="IMachine" dir="in"/>
1813 </method>
1814
1815 <method name="findMachine">
1816 <desc>
1817 Attempts to find a virtual machine given its name or UUID.
1818
1819 <note>Inaccessible machines cannot be found by name, only by UUID, because their name
1820 cannot safely be determined.</note>
1821
1822 <result name="VBOX_E_OBJECT_NOT_FOUND">
1823 Could not find registered machine matching @a nameOrId.
1824 </result>
1825
1826 </desc>
1827 <param name="nameOrId" type="wstring" dir="in">
1828 <desc>What to search for. This can either be the UUID or the name of a virtual machine.</desc>
1829 </param>
1830 <param name="machine" type="IMachine" dir="return">
1831 <desc>Machine object, if found.</desc>
1832 </param>
1833 </method>
1834
1835 <method name="getMachineStates">
1836 <desc>
1837 Gets the state of several machines in a single operation.
1838 </desc>
1839 <param name="machines" type="IMachine" dir="in" safearray="yes">
1840 <desc>Array with the machine references.</desc>
1841 </param>
1842 <param name="states" type="MachineState" dir="return" safearray="yes">
1843 <desc>Machine states, corresponding to the machines.</desc>
1844 </param>
1845 </method>
1846
1847 <method name="createAppliance">
1848 <desc>
1849 Creates a new appliance object, which represents an appliance in the Open Virtual Machine
1850 Format (OVF). This can then be used to import an OVF appliance into VirtualBox or to export
1851 machines as an OVF appliance; see the documentation for <link to="IAppliance" /> for details.
1852 </desc>
1853 <param name="appliance" type="IAppliance" dir="return">
1854 <desc>New appliance.</desc>
1855 </param>
1856 </method>
1857
1858 <method name="createHardDisk">
1859 <desc>
1860 Creates a new base medium object that will use the given storage
1861 format and location for medium data.
1862
1863 The actual storage unit is not created by this method. In order to
1864 do it, and before you are able to attach the created medium to
1865 virtual machines, you must call one of the following methods to
1866 allocate a format-specific storage unit at the specified location:
1867 <ul>
1868 <li><link to="IMedium::createBaseStorage"/></li>
1869 <li><link to="IMedium::createDiffStorage"/></li>
1870 </ul>
1871
1872 Some medium attributes, such as <link to="IMedium::id"/>, may
1873 remain uninitialized until the medium storage unit is successfully
1874 created by one of the above methods.
1875
1876 After the storage unit is successfully created, it will be
1877 accessible through the <link to="#openMedium"/> method and can
1878 be found in the <link to="#hardDisks"/> array.
1879
1880 The list of all storage formats supported by this VirtualBox
1881 installation can be obtained using
1882 <link to="ISystemProperties::mediumFormats"/>. If the @a format
1883 attribute is empty or @c null then the default storage format
1884 specified by <link to="ISystemProperties::defaultHardDiskFormat"/> will
1885 be used for creating a storage unit of the medium.
1886
1887 Note that the format of the location string is storage format specific.
1888 See <link to="IMedium::location"/> and IMedium for more details.
1889
1890 <result name="VBOX_E_OBJECT_NOT_FOUND">
1891 @a format identifier is invalid. See
1892 <link to="ISystemProperties::mediumFormats"/>.
1893 </result>
1894 <result name="VBOX_E_FILE_ERROR">
1895 @a location is a not valid file name (for file-based formats only).
1896 </result>
1897 </desc>
1898 <param name="format" type="wstring" dir="in">
1899 <desc>
1900 Identifier of the storage format to use for the new medium.
1901 </desc>
1902 </param>
1903 <param name="location" type="wstring" dir="in">
1904 <desc>
1905 Location of the storage unit for the new medium.
1906 </desc>
1907 </param>
1908 <param name="medium" type="IMedium" dir="return">
1909 <desc>Created medium object.</desc>
1910 </param>
1911 </method>
1912
1913 <method name="openMedium">
1914 <desc>
1915 Finds existing media or opens a medium from an existing storage location.
1916
1917 Once a medium has been opened, it can be passed to other VirtualBox
1918 methods, in particular to <link to="IMachine::attachDevice" />.
1919
1920 Depending on the given device type, the file at the storage location
1921 must be in one of the media formats understood by VirtualBox:
1922
1923 <ul>
1924 <li>With a "HardDisk" device type, the file must be a hard disk image
1925 in one of the formats supported by VirtualBox (see
1926 <link to="ISystemProperties::mediumFormats" />).
1927 After this method succeeds, if the medium is a base medium, it
1928 will be added to the <link to="#hardDisks"/> array attribute. </li>
1929 <li>With a "DVD" device type, the file must be an ISO 9960 CD/DVD image.
1930 After this method succeeds, the medium will be added to the
1931 <link to="#DVDImages"/> array attribute.</li>
1932 <li>With a "Floppy" device type, the file must be an RAW floppy image.
1933 After this method succeeds, the medium will be added to the
1934 <link to="#floppyImages"/> array attribute.</li>
1935 </ul>
1936
1937 After having been opened, the medium can be re-found by this method
1938 and can be attached to virtual machines. See <link to="IMedium" /> for
1939 more details.
1940
1941 The UUID of the newly opened medium will either be retrieved from the
1942 storage location, if the format supports it (e.g. for hard disk images),
1943 or a new UUID will be randomly generated (e.g. for ISO and RAW files).
1944 If for some reason you need to change the medium's UUID, use
1945 <link to="IMedium::setIDs" />.
1946
1947 If a differencing hard disk medium is to be opened by this method, the
1948 operation will succeed only if its parent medium and all ancestors,
1949 if any, are already known to this VirtualBox installation (for example,
1950 were opened by this method before).
1951
1952 This method attempts to guess the storage format of the specified medium
1953 by reading medium data at the specified location.
1954
1955 If @a accessMode is ReadWrite (which it should be for hard disks and floppies),
1956 the image is opened for read/write access and must have according permissions,
1957 as VirtualBox may actually write status information into the disk's metadata
1958 sections.
1959
1960 Note that write access is required for all typical hard disk usage in VirtualBox,
1961 since VirtualBox may need to write metadata such as a UUID into the image.
1962 The only exception is opening a source image temporarily for copying and
1963 cloning (see <link to="IMedium::cloneTo" /> when the image will be closed
1964 again soon.
1965
1966 The format of the location string is storage format specific. See
1967 <link to="IMedium::location"/> and IMedium for more details.
1968
1969 <result name="VBOX_E_FILE_ERROR">
1970 Invalid medium storage file location or could not find the medium
1971 at the specified location.
1972 </result>
1973 <result name="VBOX_E_IPRT_ERROR">
1974 Could not get medium storage format.
1975 </result>
1976 <result name="E_INVALIDARG">
1977 Invalid medium storage format.
1978 </result>
1979 <result name="VBOX_E_INVALID_OBJECT_STATE">
1980 Medium has already been added to a media registry.
1981 </result>
1982 </desc>
1983 <param name="location" type="wstring" dir="in">
1984 <desc>
1985 Location of the storage unit that contains medium data in one of
1986 the supported storage formats.
1987 </desc>
1988 </param>
1989 <param name="deviceType" type="DeviceType" dir="in">
1990 <desc>
1991 Must be one of "HardDisk", "DVD" or "Floppy".
1992 </desc>
1993 </param>
1994 <param name="accessMode" type="AccessMode" dir="in">
1995 <desc>Whether to open the image in read/write or read-only mode. For
1996 a "DVD" device type, this is ignored and read-only mode is always assumed.</desc>
1997 </param>
1998 <param name="forceNewUuid" type="boolean" dir="in">
1999 <desc>Allows the caller to request a completely new medium UUID for
2000 the image which is to be opened. Useful if one intends to open an exact
2001 copy of a previously opened image, as this would normally fail due to
2002 the duplicate UUID.</desc>
2003 </param>
2004 <param name="medium" type="IMedium" dir="return">
2005 <desc>Opened medium object.</desc>
2006 </param>
2007 </method>
2008
2009 <method name="getGuestOSType">
2010 <desc>
2011 Returns an object describing the specified guest OS type.
2012
2013 The requested guest OS type is specified using a string which is a
2014 mnemonic identifier of the guest operating system, such as
2015 <tt>"win31"</tt> or <tt>"ubuntu"</tt>. The guest OS type ID of a
2016 particular virtual machine can be read or set using the
2017 <link to="IMachine::OSTypeId"/> attribute.
2018
2019 The <link to="IVirtualBox::guestOSTypes"/> collection contains all
2020 available guest OS type objects. Each object has an
2021 <link to="IGuestOSType::id"/> attribute which contains an identifier of
2022 the guest OS this object describes.
2023
2024 <result name="E_INVALIDARG">
2025 @a id is not a valid Guest OS type.
2026 </result>
2027
2028 </desc>
2029 <param name="id" type="uuid" mod="string" dir="in">
2030 <desc>Guest OS type ID string.</desc>
2031 </param>
2032 <param name="type" type="IGuestOSType" dir="return">
2033 <desc>Guest OS type object.</desc>
2034 </param>
2035 </method>
2036
2037 <method name="createSharedFolder">
2038 <desc>
2039 Creates a new global shared folder by associating the given logical
2040 name with the given host path, adds it to the collection of shared
2041 folders and starts sharing it. Refer to the description of
2042 <link to="ISharedFolder"/> to read more about logical names.
2043 <note>
2044 In the current implementation, this operation is not
2045 implemented.
2046 </note>
2047 </desc>
2048 <param name="name" type="wstring" dir="in">
2049 <desc>Unique logical name of the shared folder.</desc>
2050 </param>
2051 <param name="hostPath" type="wstring" dir="in">
2052 <desc>Full path to the shared folder in the host file system.</desc>
2053 </param>
2054 <param name="writable" type="boolean" dir="in">
2055 <desc>Whether the share is writable or readonly</desc>
2056 </param>
2057 <param name="automount" type="boolean" dir="in">
2058 <desc>Whether the share gets automatically mounted by the guest
2059 or not.</desc>
2060 </param>
2061 </method>
2062
2063 <method name="removeSharedFolder">
2064 <desc>
2065 Removes the global shared folder with the given name previously
2066 created by <link to="#createSharedFolder"/> from the collection of
2067 shared folders and stops sharing it.
2068 <note>
2069 In the current implementation, this operation is not
2070 implemented.
2071 </note>
2072 </desc>
2073 <param name="name" type="wstring" dir="in">
2074 <desc>Logical name of the shared folder to remove.</desc>
2075 </param>
2076 </method>
2077
2078 <method name="getExtraDataKeys">
2079 <desc>
2080 Returns an array representing the global extra data keys which currently
2081 have values defined.
2082 </desc>
2083 <param name="value" type="wstring" dir="return" safearray="yes">
2084 <desc>Array of extra data keys.</desc>
2085 </param>
2086 </method>
2087
2088 <method name="getExtraData">
2089 <desc>
2090 Returns associated global extra data.
2091
2092 If the requested data @a key does not exist, this function will
2093 succeed and return an empty string in the @a value argument.
2094
2095 <result name="VBOX_E_FILE_ERROR">
2096 Settings file not accessible.
2097 </result>
2098 <result name="VBOX_E_XML_ERROR">
2099 Could not parse the settings file.
2100 </result>
2101
2102 </desc>
2103 <param name="key" type="wstring" dir="in">
2104 <desc>Name of the data key to get.</desc>
2105 </param>
2106 <param name="value" type="wstring" dir="return">
2107 <desc>Value of the requested data key.</desc>
2108 </param>
2109 </method>
2110
2111 <method name="setExtraData">
2112 <desc>
2113 Sets associated global extra data.
2114
2115 If you pass @c null or empty string as a key @a value, the given @a key
2116 will be deleted.
2117
2118 <note>
2119 Before performing the actual data change, this method will ask all
2120 registered event listener using the
2121 <link to="IExtraDataCanChangeEvent"/>
2122 notification for a permission. If one of the listeners refuses the
2123 new value, the change will not be performed.
2124 </note>
2125 <note>
2126 On success, the
2127 <link to="IExtraDataChangedEvent"/> notification
2128 is called to inform all registered listeners about a successful data
2129 change.
2130 </note>
2131
2132 <result name="VBOX_E_FILE_ERROR">
2133 Settings file not accessible.
2134 </result>
2135 <result name="VBOX_E_XML_ERROR">
2136 Could not parse the settings file.
2137 </result>
2138 <result name="E_ACCESSDENIED">
2139 Modification request refused.
2140 </result>
2141
2142 </desc>
2143 <param name="key" type="wstring" dir="in">
2144 <desc>Name of the data key to set.</desc>
2145 </param>
2146 <param name="value" type="wstring" dir="in">
2147 <desc>Value to assign to the key.</desc>
2148 </param>
2149 </method>
2150
2151 <method name="setSettingsSecret">
2152 <desc>
2153 Unlocks the secret data by passing the unlock password to the
2154 server. The server will cache the password for that machine.
2155
2156 <result name="VBOX_E_INVALID_VM_STATE">
2157 Virtual machine is not mutable.
2158 </result>
2159
2160 </desc>
2161 <param name="password" type="wstring" dir="in">
2162 <desc>
2163 The cipher key.
2164 </desc>
2165 </param>
2166 </method>
2167
2168 <!--method name="createDHCPServerForInterface">
2169 <desc>
2170 Creates a dhcp server settings to be used for the given interface
2171 <result name="E_INVALIDARG">
2172 Host network interface @a name already exists.
2173 </result>
2174 </desc>
2175 <param name="interface" type="IHostNetworkInterface" dir="in">
2176 <desc>Network Interface</desc>
2177 </param>
2178 <param name="server" type="IDHCPServer" dir="out">
2179 <desc>Dhcp server settings</desc>
2180 </param>
2181 </method-->
2182
2183 <method name="createDHCPServer">
2184 <desc>
2185 Creates a dhcp server settings to be used for the given internal network name
2186 <result name="E_INVALIDARG">
2187 Host network interface @a name already exists.
2188 </result>
2189 </desc>
2190 <param name="name" type="wstring" dir="in">
2191 <desc>server name</desc>
2192 </param>
2193 <param name="server" type="IDHCPServer" dir="return">
2194 <desc>Dhcp server settings</desc>
2195 </param>
2196 </method>
2197
2198 <method name="findDHCPServerByNetworkName">
2199 <desc>
2200 Searches a dhcp server settings to be used for the given internal network name
2201 <result name="E_INVALIDARG">
2202 Host network interface @a name already exists.
2203 </result>
2204
2205 </desc>
2206 <param name="name" type="wstring" dir="in">
2207 <desc>server name</desc>
2208 </param>
2209 <param name="server" type="IDHCPServer" dir="return">
2210 <desc>Dhcp server settings</desc>
2211 </param>
2212 </method>
2213
2214 <!--method name="findDHCPServerForInterface">
2215 <desc>
2216 Searches a dhcp server settings to be used for the given interface
2217 <result name="E_INVALIDARG">
2218 Host network interface @a name already exists.
2219 </result>
2220 </desc>
2221 <param name="interface" type="IHostNetworkInterface" dir="in">
2222 <desc>Network Interface</desc>
2223 </param>
2224 <param name="server" type="IDHCPServer" dir="out">
2225 <desc>Dhcp server settings</desc>
2226 </param>
2227 </method-->
2228
2229 <method name="removeDHCPServer">
2230 <desc>
2231 Removes the dhcp server settings
2232 <result name="E_INVALIDARG">
2233 Host network interface @a name already exists.
2234 </result>
2235 </desc>
2236 <param name="server" type="IDHCPServer" dir="in">
2237 <desc>Dhcp server settings to be removed</desc>
2238 </param>
2239 </method>
2240
2241
2242 <method name="checkFirmwarePresent">
2243 <desc>
2244 Check if this VirtualBox installation has a firmware
2245 of the given type available, either system-wide or per-user.
2246 Optionally, this may return a hint where this firmware can be
2247 downloaded from.
2248 </desc>
2249 <param name="firmwareType" type="FirmwareType" dir="in">
2250 <desc>
2251 Type of firmware to check.
2252 </desc>
2253 </param>
2254 <param name="version" type="wstring" dir="in">
2255 <desc>Expected version number, usually empty string (presently ignored).</desc>
2256 </param>
2257
2258 <param name="url" type="wstring" dir="out">
2259 <desc>
2260 Suggested URL to download this firmware from.
2261 </desc>
2262 </param>
2263
2264 <param name="file" type="wstring" dir="out">
2265 <desc>
2266 Filename of firmware, only valid if result == TRUE.
2267 </desc>
2268 </param>
2269
2270 <param name="result" type="boolean" dir="return">
2271 <desc>If firmware of this type and version is available.</desc>
2272 </param>
2273 </method>
2274
2275 </interface>
2276
2277 <!--
2278 // IVFSExplorer
2279 /////////////////////////////////////////////////////////////////////////
2280 -->
2281
2282 <enum
2283 name="VFSType"
2284 uuid="813999ba-b949-48a8-9230-aadc6285e2f2"
2285 >
2286 <desc>
2287 Virtual file systems supported by VFSExplorer.
2288 </desc>
2289
2290 <const name="File" value="1" />
2291 <const name="Cloud" value="2" />
2292 <const name="S3" value="3" />
2293 <const name="WebDav" value="4" />
2294 </enum>
2295
2296 <enum
2297 name="VFSFileType"
2298 uuid="714333cd-44e2-415f-a245-d378fa9b1242"
2299 >
2300 <desc>
2301 File types known by VFSExplorer.
2302 </desc>
2303
2304 <const name="Unknown" value="1" />
2305 <const name="Fifo" value="2" />
2306 <const name="DevChar" value="3" />
2307 <const name="Directory" value="4" />
2308 <const name="DevBlock" value="5" />
2309 <const name="File" value="6" />
2310 <const name="SymLink" value="7" />
2311 <const name="Socket" value="8" />
2312 <const name="WhiteOut" value="9" />
2313 </enum>
2314
2315 <interface
2316 name="IVFSExplorer" extends="$unknown"
2317 uuid="003d7f92-d38e-487f-b790-8c5e8631cb2f"
2318 wsmap="managed"
2319 >
2320 <desc>
2321 The VFSExplorer interface unifies access to different file system
2322 types. This includes local file systems as well remote file systems like
2323 S3. For a list of supported types see <link to="VFSType" />.
2324 An instance of this is returned by <link to="IAppliance::createVFSExplorer" />.
2325 </desc>
2326
2327 <attribute name="path" type="wstring" readonly="yes">
2328 <desc>Returns the current path in the virtual file system.</desc>
2329 </attribute>
2330
2331 <attribute name="type" type="VFSType" readonly="yes">
2332 <desc>Returns the file system type which is currently in use.</desc>
2333 </attribute>
2334
2335 <method name="update">
2336 <desc>Updates the internal list of files/directories from the
2337 current directory level. Use <link to="#entryList" /> to get the full list
2338 after a call to this method.</desc>
2339
2340 <param name="aProgress" type="IProgress" dir="return">
2341 <desc>Progress object to track the operation completion.</desc>
2342 </param>
2343 </method>
2344
2345 <method name="cd">
2346 <desc>Change the current directory level.</desc>
2347
2348 <param name="aDir" type="wstring" dir="in">
2349 <desc>The name of the directory to go in.</desc>
2350 </param>
2351
2352 <param name="aProgress" type="IProgress" dir="return">
2353 <desc>Progress object to track the operation completion.</desc>
2354 </param>
2355 </method>
2356
2357 <method name="cdUp">
2358 <desc>Go one directory upwards from the current directory level.</desc>
2359
2360 <param name="aProgress" type="IProgress" dir="return">
2361 <desc>Progress object to track the operation completion.</desc>
2362 </param>
2363 </method>
2364
2365 <method name="entryList">
2366 <desc>Returns a list of files/directories after a call to <link
2367 to="#update" />. The user is responsible for keeping this internal
2368 list up do date.</desc>
2369
2370 <param name="aNames" type="wstring" safearray="yes" dir="out">
2371 <desc>The list of names for the entries.</desc>
2372 </param>
2373
2374 <param name="aTypes" type="unsigned long" safearray="yes" dir="out">
2375 <desc>The list of types for the entries.</desc>
2376 </param>
2377
2378 <param name="aSizes" type="unsigned long" safearray="yes" dir="out">
2379 <desc>The list of sizes (in bytes) for the entries.</desc>
2380 </param>
2381
2382 <param name="aModes" type="unsigned long" safearray="yes" dir="out">
2383 <desc>The list of file modes (in octal form) for the entries.</desc>
2384 </param>
2385 </method>
2386
2387 <method name="exists">
2388 <desc>Checks if the given file list exists in the current directory
2389 level.</desc>
2390
2391 <param name="aNames" type="wstring" safearray="yes" dir="in">
2392 <desc>The names to check.</desc>
2393 </param>
2394
2395 <param name="aExists" type="wstring" safearray="yes" dir="return">
2396 <desc>The names which exist.</desc>
2397 </param>
2398 </method>
2399
2400 <method name="remove">
2401 <desc>Deletes the given files in the current directory level.</desc>
2402
2403 <param name="aNames" type="wstring" safearray="yes" dir="in">
2404 <desc>The names to remove.</desc>
2405 </param>
2406
2407 <param name="aProgress" type="IProgress" dir="return">
2408 <desc>Progress object to track the operation completion.</desc>
2409 </param>
2410 </method>
2411
2412 </interface>
2413
2414 <enum
2415 name="ImportOptions" extends="$unknown"
2416 uuid="0a981523-3b20-4004-8ee3-dfd322202ace"
2417 >
2418
2419 <desc>
2420 Import options, used with <link to="IAppliance::importMachines" />.
2421 </desc>
2422
2423 <const name="KeepAllMACs" value="1">
2424 <desc>Don't generate new MAC addresses of the attached network adapters.</desc>
2425 </const>
2426 <const name="KeepNATMACs" value="2">
2427 <desc>Don't generate new MAC addresses of the attached network adapters when they are using NAT.</desc>
2428 </const>
2429
2430 </enum>
2431
2432
2433 <!--
2434 // IAppliance
2435 /////////////////////////////////////////////////////////////////////////
2436 -->
2437
2438 <interface
2439 name="IAppliance" extends="$unknown"
2440 uuid="3059cf9e-25c7-4f0b-9fa5-3c42e441670b"
2441 wsmap="managed"
2442 >
2443 <desc>
2444 Represents a platform-independent appliance in OVF format. An instance of this is returned
2445 by <link to="IVirtualBox::createAppliance" />, which can then be used to import and export
2446 virtual machines within an appliance with VirtualBox.
2447
2448 The OVF standard suggests two different physical file formats:
2449
2450 <ol>
2451 <li>If the appliance is distributed as a set of files, there must be at least one XML descriptor
2452 file that conforms to the OVF standard and carries an <tt>.ovf</tt> file extension. If
2453 this descriptor file references other files such as disk images, as OVF appliances typically
2454 do, those additional files must be in the same directory as the descriptor file.</li>
2455
2456 <li>If the appliance is distributed as a single file, it must be in TAR format and have the
2457 <tt>.ova</tt> file extension. This TAR file must then contain at least the OVF descriptor
2458 files and optionally other files.
2459
2460 At this time, VirtualBox does not not yet support the packed (TAR) variant; support will
2461 be added with a later version.</li>
2462 </ol>
2463
2464 <b>Importing</b> an OVF appliance into VirtualBox as instances of
2465 <link to="IMachine" /> involves the following sequence of API calls:
2466
2467 <ol>
2468 <li>Call <link to="IVirtualBox::createAppliance" />. This will create an empty IAppliance object.
2469 </li>
2470
2471 <li>On the new object, call <link to="#read" /> with the full path of the OVF file you
2472 would like to import. So long as this file is syntactically valid, this will succeed
2473 and fill the appliance object with the parsed data from the OVF file.
2474 </li>
2475
2476 <li>Next, call <link to="#interpret" />, which analyzes the OVF data and sets up the
2477 contents of the IAppliance attributes accordingly. These can be inspected by a
2478 VirtualBox front-end such as the GUI, and the suggestions can be displayed to the
2479 user. In particular, the <link to="#virtualSystemDescriptions" /> array contains
2480 instances of <link to="IVirtualSystemDescription" /> which represent the virtual
2481 systems (machines) in the OVF, which in turn describe the virtual hardware prescribed
2482 by the OVF (network and hardware adapters, virtual disk images, memory size and so on).
2483 The GUI can then give the user the option to confirm and/or change these suggestions.
2484 </li>
2485
2486 <li>If desired, call <link to="IVirtualSystemDescription::setFinalValues" /> for each
2487 virtual system (machine) to override the suggestions made by the <link to="#interpret" /> routine.
2488 </li>
2489
2490 <li>Finally, call <link to="#importMachines" /> to create virtual machines in
2491 VirtualBox as instances of <link to="IMachine" /> that match the information in the
2492 virtual system descriptions. After this call succeeded, the UUIDs of the machines created
2493 can be found in the <link to="#machines" /> array attribute.
2494 </li>
2495 </ol>
2496
2497 <b>Exporting</b> VirtualBox machines into an OVF appliance involves the following steps:
2498
2499 <ol>
2500 <li>As with importing, first call <link to="IVirtualBox::createAppliance" /> to create
2501 an empty IAppliance object.
2502 </li>
2503
2504 <li>For each machine you would like to export, call <link to="IMachine::export" />
2505 with the IAppliance object you just created. Each such call creates one instance of
2506 <link to="IVirtualSystemDescription" /> inside the appliance.
2507 </li>
2508
2509 <li>If desired, call <link to="IVirtualSystemDescription::setFinalValues" /> for each
2510 virtual system (machine) to override the suggestions made by the <link to="IMachine::export"/> routine.
2511 </li>
2512
2513 <li>Finally, call <link to="#write" /> with a path specification to have the OVF
2514 file written.</li>
2515 </ol>
2516
2517 </desc>
2518
2519 <attribute name="path" type="wstring" readonly="yes">
2520 <desc>Path to the main file of the OVF appliance, which is either the <tt>.ovf</tt> or
2521 the <tt>.ova</tt> file passed to <link to="#read" /> (for import) or
2522 <link to="#write" /> (for export).
2523 This attribute is empty until one of these methods has been called.
2524 </desc>
2525 </attribute>
2526
2527 <attribute name="disks" type="wstring" readonly="yes" safearray="yes">
2528 <desc>
2529 Array of virtual disk definitions. One such description exists for each
2530 disk definition in the OVF; each string array item represents one such piece of
2531 disk information, with the information fields separated by tab (\\t) characters.
2532
2533 The caller should be prepared for additional fields being appended to
2534 this string in future versions of VirtualBox and therefore check for
2535 the number of tabs in the strings returned.
2536
2537 In the current version, the following eight fields are returned per string
2538 in the array:
2539
2540 <ol>
2541 <li>Disk ID (unique string identifier given to disk)</li>
2542
2543 <li>Capacity (unsigned integer indicating the maximum capacity of the disk)</li>
2544
2545 <li>Populated size (optional unsigned integer indicating the current size of the
2546 disk; can be approximate; -1 if unspecified)</li>
2547
2548 <li>Format (string identifying the disk format, typically
2549 "http://www.vmware.com/specifications/vmdk.html#sparse")</li>
2550
2551 <li>Reference (where to find the disk image, typically a file name; if empty,
2552 then the disk should be created on import)</li>
2553
2554 <li>Image size (optional unsigned integer indicating the size of the image,
2555 which need not necessarily be the same as the values specified above, since
2556 the image may be compressed or sparse; -1 if not specified)</li>
2557
2558 <li>Chunk size (optional unsigned integer if the image is split into chunks;
2559 presently unsupported and always -1)</li>
2560
2561 <li>Compression (optional string equalling "gzip" if the image is gzip-compressed)</li>
2562 </ol>
2563 </desc>
2564 </attribute>
2565
2566 <attribute name="virtualSystemDescriptions" type="IVirtualSystemDescription" readonly="yes" safearray="yes">
2567 <desc> Array of virtual system descriptions. One such description is created
2568 for each virtual system (machine) found in the OVF.
2569 This array is empty until either <link to="#interpret" /> (for import) or <link to="IMachine::export" />
2570 (for export) has been called.
2571 </desc>
2572 </attribute>
2573
2574 <attribute name="machines" type="wstring" readonly="yes" safearray="yes">
2575 <desc>
2576 Contains the UUIDs of the machines created from the information in this appliances. This is only
2577 relevant for the import case, and will only contain data after a call to <link to="#importMachines" />
2578 succeeded.
2579 </desc>
2580 </attribute>
2581
2582 <method name="read">
2583 <desc>
2584 Reads an OVF file into the appliance object.
2585
2586 This method succeeds if the OVF is syntactically valid and, by itself, without errors. The
2587 mere fact that this method returns successfully does not mean that VirtualBox supports all
2588 features requested by the appliance; this can only be examined after a call to <link to="#interpret" />.
2589 </desc>
2590 <param name="file" type="wstring" dir="in">
2591 <desc>
2592 Name of appliance file to open (either with an <tt>.ovf</tt> or <tt>.ova</tt> extension, depending
2593 on whether the appliance is distributed as a set of files or as a single file, respectively).
2594 </desc>
2595 </param>
2596 <param name="aProgress" type="IProgress" dir="return">
2597 <desc>Progress object to track the operation completion.</desc>
2598 </param>
2599 </method>
2600
2601 <method name="interpret">
2602 <desc>
2603 Interprets the OVF data that was read when the appliance was constructed. After
2604 calling this method, one can inspect the
2605 <link to="#virtualSystemDescriptions" /> array attribute, which will then contain
2606 one <link to="IVirtualSystemDescription" /> for each virtual machine found in
2607 the appliance.
2608
2609 Calling this method is the second step of importing an appliance into VirtualBox;
2610 see <link to="IAppliance" /> for an overview.
2611
2612 After calling this method, one should call <link to="#getWarnings" /> to find out
2613 if problems were encountered during the processing which might later lead to
2614 errors.
2615 </desc>
2616 </method>
2617
2618 <method name="importMachines">
2619 <desc>
2620 Imports the appliance into VirtualBox by creating instances of <link to="IMachine" />
2621 and other interfaces that match the information contained in the appliance as
2622 closely as possible, as represented by the import instructions in the
2623 <link to="#virtualSystemDescriptions" /> array.
2624
2625 Calling this method is the final step of importing an appliance into VirtualBox;
2626 see <link to="IAppliance" /> for an overview.
2627
2628 Since importing the appliance will most probably involve copying and converting
2629 disk images, which can take a long time, this method operates asynchronously and
2630 returns an IProgress object to allow the caller to monitor the progress.
2631
2632 After the import succeeded, the UUIDs of the IMachine instances created can be
2633 retrieved from the <link to="#machines" /> array attribute.
2634 </desc>
2635
2636 <param name="options" type="ImportOptions" dir="in" safearray="yes">
2637 <desc>Options for the importing operation.</desc>
2638 </param>
2639
2640 <param name="aProgress" type="IProgress" dir="return">
2641 <desc>Progress object to track the operation completion.</desc>
2642 </param>
2643 </method>
2644
2645 <method name="createVFSExplorer">
2646 <desc>Returns a <link to="IVFSExplorer" /> object for the given URI.</desc>
2647
2648 <param name="aUri" type="wstring" dir="in">
2649 <desc>The URI describing the file system to use.</desc>
2650 </param>
2651
2652 <param name="aExplorer" type="IVFSExplorer" dir="return">
2653 <desc></desc>
2654 </param>
2655 </method>
2656
2657 <method name="write">
2658 <desc>
2659 Writes the contents of the appliance exports into a new OVF file.
2660
2661 Calling this method is the final step of exporting an appliance from VirtualBox;
2662 see <link to="IAppliance" /> for an overview.
2663
2664 Since exporting the appliance will most probably involve copying and converting
2665 disk images, which can take a long time, this method operates asynchronously and
2666 returns an IProgress object to allow the caller to monitor the progress.
2667 </desc>
2668 <param name="format" type="wstring" dir="in">
2669 <desc>
2670 Output format, as a string. Currently supported formats are "ovf-0.9", "ovf-1.0"
2671 and "ovf-2.0"; future versions of VirtualBox may support additional formats.
2672 </desc>
2673 </param>
2674 <param name="manifest" type="boolean" dir="in">
2675 <desc>
2676 Indicate if the optional manifest file (.mf) should be written. The manifest file
2677 is used for integrity checks prior import.
2678 </desc>
2679 </param>
2680 <param name="path" type="wstring" dir="in">
2681 <desc>
2682 Name of appliance file to open (either with an <tt>.ovf</tt> or <tt>.ova</tt> extension, depending
2683 on whether the appliance is distributed as a set of files or as a single file, respectively).
2684 </desc>
2685 </param>
2686 <param name="progress" type="IProgress" dir="return">
2687 <desc>Progress object to track the operation completion.</desc>
2688 </param>
2689 </method>
2690
2691 <method name="getWarnings">
2692 <desc>Returns textual warnings which occurred during execution of <link to="#interpret" />.</desc>
2693
2694 <param name="aWarnings" type="wstring" dir="return" safearray="yes">
2695 <desc></desc>
2696 </param>
2697 </method>
2698
2699 </interface>
2700
2701 <enum
2702 name="VirtualSystemDescriptionType"
2703 uuid="303c0900-a746-4612-8c67-79003e91f459"
2704 >
2705 <desc>Used with <link to="IVirtualSystemDescription" /> to describe the type of
2706 a configuration value.</desc>
2707
2708 <const name="Ignore" value="1" />
2709 <const name="OS" value="2" />
2710 <const name="Name" value="3" />
2711 <const name="Product" value="4" />
2712 <const name="Vendor" value="5" />
2713 <const name="Version" value="6" />
2714 <const name="ProductUrl" value="7" />
2715 <const name="VendorUrl" value="8" />
2716 <const name="Description" value="9" />
2717 <const name="License" value="10" />
2718 <const name="Miscellaneous" value="11" />
2719 <const name="CPU" value="12" />
2720 <const name="Memory" value="13" />
2721 <const name="HardDiskControllerIDE" value="14" />
2722 <const name="HardDiskControllerSATA" value="15" />
2723 <const name="HardDiskControllerSCSI" value="16" />
2724 <const name="HardDiskControllerSAS" value="17" />
2725 <const name="HardDiskImage" value="18" />
2726 <const name="Floppy" value="19" />
2727 <const name="CDROM" value="20" />
2728 <const name="NetworkAdapter" value="21" />
2729 <const name="USBController" value="22" />
2730 <const name="SoundCard" value="23" />
2731 <const name="SettingsFile" value="24">
2732 <desc>Not used/implemented right now, will be added later in 4.1.x.</desc>
2733 </const>
2734 </enum>
2735
2736 <enum
2737 name="VirtualSystemDescriptionValueType"
2738 uuid="56d9403f-3425-4118-9919-36f2a9b8c77c"
2739 >
2740 <desc>Used with <link to="IVirtualSystemDescription::getValuesByType" /> to describe the value
2741 type to fetch.</desc>
2742
2743 <const name="Reference" value="1" />
2744 <const name="Original" value="2" />
2745 <const name="Auto" value="3" />
2746 <const name="ExtraConfig" value="4" />
2747
2748 </enum>
2749
2750 <interface
2751 name="IVirtualSystemDescription" extends="$unknown"
2752 uuid="d7525e6c-531a-4c51-8e04-41235083a3d8"
2753 wsmap="managed"
2754 >
2755
2756 <desc>Represents one virtual system (machine) in an appliance. This interface is used in
2757 the <link to="IAppliance::virtualSystemDescriptions" /> array. After
2758 <link to="IAppliance::interpret" /> has been called, that array contains information
2759 about how the virtual systems described in the OVF should best be imported into
2760 VirtualBox virtual machines. See <link to="IAppliance" /> for the steps required to
2761 import an OVF into VirtualBox.
2762 </desc>
2763
2764 <attribute name="count" type="unsigned long" readonly="yes">
2765 <desc>Return the number of virtual system description entries.</desc>
2766 </attribute>
2767
2768 <method name="getDescription">
2769 <desc>Returns information about the virtual system as arrays of instruction items. In each array, the
2770 items with the same indices correspond and jointly represent an import instruction for VirtualBox.
2771
2772 The list below identifies the value sets that are possible depending on the
2773 <link to="VirtualSystemDescriptionType" /> enum value in the array item in @a aTypes[]. In each case,
2774 the array item with the same index in @a aOvfValues[] will contain the original value as contained
2775 in the OVF file (just for informational purposes), and the corresponding item in @a aVBoxValues[]
2776 will contain a suggested value to be used for VirtualBox. Depending on the description type,
2777 the @a aExtraConfigValues[] array item may also be used.
2778
2779 <ul>
2780 <li>
2781 "OS": the guest operating system type. There must be exactly one such array item on import. The
2782 corresponding item in @a aVBoxValues[] contains the suggested guest operating system for VirtualBox.
2783 This will be one of the values listed in <link to="IVirtualBox::guestOSTypes" />. The corresponding
2784 item in @a aOvfValues[] will contain a numerical value that described the operating system in the OVF.
2785 </li>
2786 <li>
2787 "Name": the name to give to the new virtual machine. There can be at most one such array item;
2788 if none is present on import, then an automatic name will be created from the operating system
2789 type. The corresponding item im @a aOvfValues[] will contain the suggested virtual machine name
2790 from the OVF file, and @a aVBoxValues[] will contain a suggestion for a unique VirtualBox
2791 <link to="IMachine" /> name that does not exist yet.
2792 </li>
2793 <li>
2794 "Description": an arbitrary description.
2795 </li>
2796 <li>
2797 "License": the EULA section from the OVF, if present. It is the responsibility of the calling
2798 code to display such a license for agreement; the Main API does not enforce any such policy.
2799 </li>
2800 <li>
2801 Miscellaneous: reserved for future use.
2802 </li>
2803 <li>
2804 "CPU": the number of CPUs. There can be at most one such item, which will presently be ignored.
2805 </li>
2806 <li>
2807 "Memory": the amount of guest RAM, in bytes. There can be at most one such array item; if none
2808 is present on import, then VirtualBox will set a meaningful default based on the operating system
2809 type.
2810 </li>
2811 <li>
2812 "HardDiskControllerIDE": an IDE hard disk controller. There can be at most two such items.
2813 An optional value in @a aOvfValues[] and @a aVBoxValues[] can be "PIIX3" or "PIIX4" to specify
2814 the type of IDE controller; this corresponds to the ResourceSubType element which VirtualBox
2815 writes into the OVF.
2816 The matching item in the @a aRefs[] array will contain an integer that items of the "Harddisk"
2817 type can use to specify which hard disk controller a virtual disk should be connected to.
2818 Note that in OVF, an IDE controller has two channels, corresponding to "master" and "slave"
2819 in traditional terminology, whereas the IDE storage controller that VirtualBox supports in
2820 its virtual machines supports four channels (primary master, primary slave, secondary master,
2821 secondary slave) and thus maps to two IDE controllers in the OVF sense.
2822 </li>
2823 <li>
2824 "HardDiskControllerSATA": an SATA hard disk controller. There can be at most one such item. This
2825 has no value in @a aOvfValues[] or @a aVBoxValues[].
2826 The matching item in the @a aRefs[] array will be used as with IDE controllers (see above).
2827 </li>
2828 <li>
2829 "HardDiskControllerSCSI": a SCSI hard disk controller. There can be at most one such item.
2830 The items in @a aOvfValues[] and @a aVBoxValues[] will either be "LsiLogic", "BusLogic" or
2831 "LsiLogicSas". (Note that in OVF, the LsiLogicSas controller is treated as a SCSI controller
2832 whereas VirtualBox considers it a class of storage controllers of its own; see
2833 <link to="StorageControllerType" />).
2834 The matching item in the @a aRefs[] array will be used as with IDE controllers (see above).
2835 </li>
2836 <li>
2837 "HardDiskImage": a virtual hard disk, most probably as a reference to an image file. There can be an
2838 arbitrary number of these items, one for each virtual disk image that accompanies the OVF.
2839
2840 The array item in @a aOvfValues[] will contain the file specification from the OVF file (without
2841 a path since the image file should be in the same location as the OVF file itself), whereas the
2842 item in @a aVBoxValues[] will contain a qualified path specification to where VirtualBox uses the
2843 hard disk image. This means that on import the image will be copied and converted from the
2844 "ovf" location to the "vbox" location; on export, this will be handled the other way round.
2845
2846 The matching item in the @a aExtraConfigValues[] array must contain a string of the following
2847 format: "controller=&lt;index&gt;;channel=&lt;c&gt;"
2848 In this string, &lt;index&gt; must be an integer specifying the hard disk controller to connect
2849 the image to. That number must be the index of an array item with one of the hard disk controller
2850 types (HardDiskControllerSCSI, HardDiskControllerSATA, HardDiskControllerIDE).
2851 In addition, &lt;c&gt; must specify the channel to use on that controller. For IDE controllers,
2852 this can be 0 or 1 for master or slave, respectively. For compatibility with VirtualBox versions
2853 before 3.2, the values 2 and 3 (for secondary master and secondary slave) are also supported, but
2854 no longer exported. For SATA and SCSI controllers, the channel can range from 0-29.
2855 </li>
2856 <li>
2857 "CDROM": a virtual CD-ROM drive. The matching item in @a aExtraConfigValue[] contains the same
2858 attachment information as with "HardDiskImage" items.
2859 </li>
2860 <li>
2861 "CDROM": a virtual floppy drive. The matching item in @a aExtraConfigValue[] contains the same
2862 attachment information as with "HardDiskImage" items.
2863 </li>
2864 <li>
2865 "NetworkAdapter": a network adapter. The array item in @a aVBoxValues[] will specify the hardware
2866 for the network adapter, whereas the array item in @a aExtraConfigValues[] will have a string
2867 of the "type=&lt;X&gt;" format, where &lt;X&gt; must be either "NAT" or "Bridged".
2868 </li>
2869 <li>
2870 "USBController": a USB controller. There can be at most one such item. If and only if such an
2871 item ispresent, USB support will be enabled for the new virtual machine.
2872 </li>
2873 <li>
2874 "SoundCard": a sound card. There can be at most one such item. If and only if such an item is
2875 present, sound support will be enabled for the new virtual machine. Note that the virtual
2876 machine in VirtualBox will always be presented with the standard VirtualBox soundcard, which
2877 may be different from the virtual soundcard expected by the appliance.
2878 </li>
2879 </ul>
2880
2881 </desc>
2882
2883 <param name="aTypes" type="VirtualSystemDescriptionType" dir="out" safearray="yes">
2884 <desc></desc>
2885 </param>
2886
2887 <param name="aRefs" type="wstring" dir="out" safearray="yes">
2888 <desc></desc>
2889 </param>
2890
2891 <param name="aOvfValues" type="wstring" dir="out" safearray="yes">
2892 <desc></desc>
2893 </param>
2894
2895 <param name="aVBoxValues" type="wstring" dir="out" safearray="yes">
2896 <desc></desc>
2897 </param>
2898
2899 <param name="aExtraConfigValues" type="wstring" dir="out" safearray="yes">
2900 <desc></desc>
2901 </param>
2902
2903 </method>
2904
2905 <method name="getDescriptionByType">
2906 <desc>This is the same as <link to="#getDescription" /> except that you can specify which types
2907 should be returned.</desc>
2908
2909 <param name="aType" type="VirtualSystemDescriptionType" dir="in">
2910 <desc></desc>
2911 </param>
2912
2913 <param name="aTypes" type="VirtualSystemDescriptionType" dir="out" safearray="yes">
2914 <desc></desc>
2915 </param>
2916
2917 <param name="aRefs" type="wstring" dir="out" safearray="yes">
2918 <desc></desc>
2919 </param>
2920
2921 <param name="aOvfValues" type="wstring" dir="out" safearray="yes">
2922 <desc></desc>
2923 </param>
2924
2925 <param name="aVBoxValues" type="wstring" dir="out" safearray="yes">
2926 <desc></desc>
2927 </param>
2928
2929 <param name="aExtraConfigValues" type="wstring" dir="out" safearray="yes">
2930 <desc></desc>
2931 </param>
2932
2933 </method>
2934
2935 <method name="getValuesByType">
2936 <desc>This is the same as <link to="#getDescriptionByType" /> except that you can specify which
2937 value types should be returned. See <link to="VirtualSystemDescriptionValueType" /> for possible
2938 values.</desc>
2939
2940 <param name="aType" type="VirtualSystemDescriptionType" dir="in">
2941 <desc></desc>
2942 </param>
2943
2944 <param name="aWhich" type="VirtualSystemDescriptionValueType" dir="in">
2945 <desc></desc>
2946 </param>
2947
2948 <param name="aValues" type="wstring" dir="return" safearray="yes">
2949 <desc></desc>
2950 </param>
2951
2952 </method>
2953
2954 <method name="setFinalValues">
2955 <desc>
2956 This method allows the appliance's user to change the configuration for the virtual
2957 system descriptions. For each array item returned from <link to="#getDescription" />,
2958 you must pass in one boolean value and one configuration value.
2959
2960 Each item in the boolean array determines whether the particular configuration item
2961 should be enabled.
2962 You can only disable items of the types HardDiskControllerIDE, HardDiskControllerSATA,
2963 HardDiskControllerSCSI, HardDiskImage, CDROM, Floppy, NetworkAdapter, USBController
2964 and SoundCard.
2965
2966 For the "vbox" and "extra configuration" values, if you pass in the same arrays
2967 as returned in the aVBoxValues and aExtraConfigValues arrays from <link to="#getDescription"/>,
2968 the configuration remains unchanged. Please see the documentation for <link to="#getDescription"/>
2969 for valid configuration values for the individual array item types. If the
2970 corresponding item in the aEnabled array is @c false, the configuration value is ignored.
2971 </desc>
2972
2973 <param name="aEnabled" type="boolean" dir="in" safearray="yes">
2974 <desc></desc>
2975 </param>
2976
2977 <param name="aVBoxValues" type="wstring" dir="in" safearray="yes">
2978 <desc></desc>
2979 </param>
2980
2981 <param name="aExtraConfigValues" type="wstring" dir="in" safearray="yes">
2982 <desc></desc>
2983 </param>
2984 </method>
2985
2986 <method name="addDescription">
2987 <desc>
2988 This method adds an additional description entry to the stack of already
2989 available descriptions for this virtual system. This is handy for writing
2990 values which aren't directly supported by VirtualBox. One example would
2991 be the License type of <link to="VirtualSystemDescriptionType" />.
2992 </desc>
2993
2994 <param name="aType" type="VirtualSystemDescriptionType" dir="in">
2995 <desc></desc>
2996 </param>
2997
2998 <param name="aVBoxValue" type="wstring" dir="in">
2999 <desc></desc>
3000 </param>
3001
3002 <param name="aExtraConfigValue" type="wstring" dir="in">
3003 <desc></desc>
3004 </param>
3005 </method>
3006 </interface>
3007
3008
3009 <!--
3010 // IMachine
3011 /////////////////////////////////////////////////////////////////////////
3012 -->
3013
3014 <interface
3015 name="IInternalMachineControl" extends="$unknown"
3016 uuid="ec824977-e43f-479c-81c9-ac6cae1423a5"
3017 internal="yes"
3018 wsmap="suppress"
3019 >
3020 <method name="setRemoveSavedStateFile">
3021 <desc>
3022 Updates the flag whether the saved state file is removed on a
3023 machine state change from Saved to PoweredOff.
3024 </desc>
3025 <param name="aRemove" type="boolean" dir="in"/>
3026 </method>
3027
3028 <method name="updateState">
3029 <desc>
3030 Updates the VM state.
3031 <note>
3032 This operation will also update the settings file with the correct
3033 information about the saved state file and delete this file from disk
3034 when appropriate.
3035 </note>
3036 </desc>
3037 <param name="state" type="MachineState" dir="in"/>
3038 </method>
3039
3040 <method name="getIPCId">
3041 <param name="id" type="wstring" dir="return"/>
3042 </method>
3043
3044 <method name="beginPowerUp">
3045 <desc>
3046 Tells VBoxSVC that <link to="IConsole::powerUp"/> is under ways and
3047 gives it the progress object that should be part of any pending
3048 <link to="IMachine::launchVMProcess"/> operations. The progress
3049 object may be called back to reflect an early cancelation, so some care
3050 have to be taken with respect to any cancelation callbacks. The console
3051 object will call <link to="IInternalMachineControl::endPowerUp"/>
3052 to signal the completion of the progress object.
3053 </desc>
3054 <param name="aProgress" type="IProgress" dir="in" />
3055 </method>
3056
3057 <method name="endPowerUp">
3058 <desc>
3059 Tells VBoxSVC that <link to="IConsole::powerUp"/> has completed.
3060 This method may query status information from the progress object it
3061 received in <link to="IInternalMachineControl::beginPowerUp"/> and copy
3062 it over to any in-progress <link to="IMachine::launchVMProcess"/>
3063 call in order to complete that progress object.
3064 </desc>
3065 <param name="result" type="long" dir="in"/>
3066 </method>
3067
3068 <method name="beginPoweringDown">
3069 <desc>
3070 Called by the VM process to inform the server it wants to
3071 stop the VM execution and power down.
3072 </desc>
3073 <param name="progress" type="IProgress" dir="out">
3074 <desc>
3075 Progress object created by VBoxSVC to wait until
3076 the VM is powered down.
3077 </desc>
3078 </param>
3079 </method>
3080
3081 <method name="endPoweringDown">
3082 <desc>
3083 Called by the VM process to inform the server that powering
3084 down previously requested by #beginPoweringDown is either
3085 successfully finished or there was a failure.
3086
3087 <result name="VBOX_E_FILE_ERROR">
3088 Settings file not accessible.
3089 </result>
3090 <result name="VBOX_E_XML_ERROR">
3091 Could not parse the settings file.
3092 </result>
3093
3094 </desc>
3095
3096 <param name="result" type="long" dir="in">
3097 <desc>@c S_OK to indicate success.
3098 </desc>
3099 </param>
3100 <param name="errMsg" type="wstring" dir="in">
3101 <desc>@c human readable error message in case of failure.
3102 </desc>
3103 </param>
3104 </method>
3105
3106 <method name="runUSBDeviceFilters">
3107 <desc>
3108 Asks the server to run USB devices filters of the associated
3109 machine against the given USB device and tell if there is
3110 a match.
3111 <note>
3112 Intended to be used only for remote USB devices. Local
3113 ones don't require to call this method (this is done
3114 implicitly by the Host and USBProxyService).
3115 </note>
3116 </desc>
3117 <param name="device" type="IUSBDevice" dir="in"/>
3118 <param name="matched" type="boolean" dir="out"/>
3119 <param name="maskedInterfaces" type="unsigned long" dir="out"/>
3120 </method>
3121
3122 <method name="captureUSBDevice">
3123 <desc>
3124 Requests a capture of the given host USB device.
3125 When the request is completed, the VM process will
3126 get a <link to="IInternalSessionControl::onUSBDeviceAttach"/>
3127 notification.
3128 </desc>
3129 <param name="id" type="uuid" mod="string" dir="in"/>
3130 </method>
3131
3132 <method name="detachUSBDevice">
3133 <desc>
3134 Notification that a VM is going to detach (@a done = @c false) or has
3135 already detached (@a done = @c true) the given USB device.
3136 When the @a done = @c true request is completed, the VM process will
3137 get a <link to="IInternalSessionControl::onUSBDeviceDetach"/>
3138 notification.
3139 <note>
3140 In the @a done = @c true case, the server must run its own filters
3141 and filters of all VMs but this one on the detached device
3142 as if it were just attached to the host computer.
3143 </note>
3144 </desc>
3145 <param name="id" type="uuid" mod="string" dir="in"/>
3146 <param name="done" type="boolean" dir="in"/>
3147 </method>
3148
3149 <method name="autoCaptureUSBDevices">
3150 <desc>
3151 Requests a capture all matching USB devices attached to the host.
3152 When the request is completed, the VM process will
3153 get a <link to="IInternalSessionControl::onUSBDeviceAttach"/>
3154 notification per every captured device.
3155 </desc>
3156 </method>
3157
3158 <method name="detachAllUSBDevices">
3159 <desc>
3160 Notification that a VM that is being powered down. The done
3161 parameter indicates whether which stage of the power down
3162 we're at. When @a done = @c false the VM is announcing its
3163 intentions, while when @a done = @c true the VM is reporting
3164 what it has done.
3165 <note>
3166 In the @a done = @c true case, the server must run its own filters
3167 and filters of all VMs but this one on all detach devices as
3168 if they were just attached to the host computer.
3169 </note>
3170 </desc>
3171 <param name="done" type="boolean" dir="in"/>
3172 </method>
3173
3174 <method name="onSessionEnd">
3175 <desc>
3176 Triggered by the given session object when the session is about
3177 to close normally.
3178 </desc>
3179 <param name="session" type="ISession" dir="in">
3180 <desc>Session that is being closed</desc>
3181 </param>
3182 <param name="progress" type="IProgress" dir="return">
3183 <desc>
3184 Used to wait until the corresponding machine is actually
3185 dissociated from the given session on the server.
3186 Returned only when this session is a direct one.
3187 </desc>
3188 </param>
3189 </method>
3190
3191 <method name="beginSavingState">
3192 <desc>
3193 Called by the VM process to inform the server it wants to
3194 save the current state and stop the VM execution.
3195 </desc>
3196 <param name="progress" type="IProgress" dir="out">
3197 <desc>
3198 Progress object created by VBoxSVC to wait until
3199 the state is saved.
3200 </desc>
3201 </param>
3202 <param name="stateFilePath" type="wstring" dir="out">
3203 <desc>
3204 File path the VM process must save the execution state to.
3205 </desc>
3206 </param>
3207 </method>
3208
3209 <method name="endSavingState">
3210 <desc>
3211 Called by the VM process to inform the server that saving
3212 the state previously requested by #beginSavingState is either
3213 successfully finished or there was a failure.
3214
3215 <result name="VBOX_E_FILE_ERROR">
3216 Settings file not accessible.
3217 </result>
3218 <result name="VBOX_E_XML_ERROR">
3219 Could not parse the settings file.
3220 </result>
3221
3222 </desc>
3223
3224 <param name="result" type="long" dir="in">
3225 <desc>@c S_OK to indicate success.
3226 </desc>
3227 </param>
3228 <param name="errMsg" type="wstring" dir="in">
3229 <desc>@c human readable error message in case of failure.
3230 </desc>
3231 </param>
3232 </method>
3233
3234 <method name="adoptSavedState">
3235 <desc>
3236 Gets called by <link to="IConsole::adoptSavedState"/>.
3237 <result name="VBOX_E_FILE_ERROR">
3238 Invalid saved state file path.
3239 </result>
3240 </desc>
3241 <param name="savedStateFile" type="wstring" dir="in">
3242 <desc>Path to the saved state file to adopt.</desc>
3243 </param>
3244 </method>
3245
3246 <method name="beginTakingSnapshot">
3247 <desc>
3248 Called from the VM process to request from the server to perform the
3249 server-side actions of creating a snapshot (creating differencing images
3250 and the snapshot object).
3251
3252 <result name="VBOX_E_FILE_ERROR">
3253 Settings file not accessible.
3254 </result>
3255 <result name="VBOX_E_XML_ERROR">
3256 Could not parse the settings file.
3257 </result>
3258 </desc>
3259 <param name="initiator" type="IConsole" dir="in">
3260 <desc>The console object that initiated this call.</desc>
3261 </param>
3262 <param name="name" type="wstring" dir="in">
3263 <desc>Snapshot name.</desc>
3264 </param>
3265 <param name="description" type="wstring" dir="in">
3266 <desc>Snapshot description.</desc>
3267 </param>
3268 <param name="consoleProgress" type="IProgress" dir="in">
3269 <desc>
3270 Progress object created by the VM process tracking the
3271 snapshot's progress. This has the following sub-operations:
3272 <ul>
3273 <li>setting up (weight 1);</li>
3274 <li>one for each medium attachment that needs a differencing image (weight 1 each);</li>
3275 <li>another one to copy the VM state (if offline with saved state, weight is VM memory size in MB);</li>
3276 <li>another one to save the VM state (if online, weight is VM memory size in MB);</li>
3277 <li>finishing up (weight 1)</li>
3278 </ul>
3279 </desc>
3280 </param>
3281 <param name="fTakingSnapshotOnline" type="boolean" dir="in">
3282 <desc>
3283 Whether this is an online snapshot (i.e. the machine is running).
3284 </desc>
3285 </param>
3286 <param name="stateFilePath" type="wstring" dir="out">
3287 <desc>
3288 File path the VM process must save the execution state to.
3289 </desc>
3290 </param>
3291 </method>
3292
3293 <method name="endTakingSnapshot">
3294 <desc>
3295 Called by the VM process to inform the server that the snapshot
3296 previously requested by #beginTakingSnapshot is either
3297 successfully taken or there was a failure.
3298 </desc>
3299
3300 <param name="success" type="boolean" dir="in">
3301 <desc>@c true to indicate success and @c false otherwise</desc>
3302 </param>
3303 </method>
3304
3305 <method name="deleteSnapshot">
3306 <desc>
3307 Gets called by <link to="IConsole::deleteSnapshot"/>,
3308 <link to="IConsole::deleteSnapshotAndAllChildren"/> and
3309 <link to="IConsole::deleteSnapshotRange"/>.
3310 <result name="VBOX_E_INVALID_OBJECT_STATE">
3311 Snapshot has more than one child snapshot. Only possible if the
3312 delete operation does not delete all children or the range does
3313 not meet the linearity condition.
3314 </result>
3315 </desc>
3316 <param name="initiator" type="IConsole" dir="in">
3317 <desc>The console object that initiated this call.</desc>
3318 </param>
3319 <param name="startId" type="uuid" mod="string" dir="in">
3320 <desc>UUID of the first snapshot to delete.</desc>
3321 </param>
3322 <param name="endId" type="uuid" mod="string" dir="in">
3323 <desc>UUID of the last snapshot to delete.</desc>
3324 </param>
3325 <param name="deleteAllChildren" type="boolean" dir="in">
3326 <desc>Whether all children should be deleted.</desc>
3327 </param>
3328 <param name="machineState" type="MachineState" dir="out">
3329 <desc>New machine state after this operation is started.</desc>
3330 </param>
3331 <param name="progress" type="IProgress" dir="return">
3332 <desc>Progress object to track the operation completion.</desc>
3333 </param>
3334 </method>
3335
3336 <method name="finishOnlineMergeMedium">
3337 <desc>
3338 Gets called by <link to="IInternalSessionControl::onlineMergeMedium"/>.
3339 </desc>
3340 <param name="mediumAttachment" type="IMediumAttachment" dir="in">
3341 <desc>The medium attachment which needs to be cleaned up.</desc>
3342 </param>
3343 <param name="source" type="IMedium" dir="in">
3344 <desc>Merge source medium.</desc>
3345 </param>
3346 <param name="target" type="IMedium" dir="in">
3347 <desc>Merge target medium.</desc>
3348 </param>
3349 <param name="mergeForward" type="boolean" dir="in">
3350 <desc>Merge direction.</desc>
3351 </param>
3352 <param name="parentForTarget" type="IMedium" dir="in">
3353 <desc>For forward merges: new parent for target medium.</desc>
3354 </param>
3355 <param name="childrenToReparent" type="IMedium" safearray="yes" dir="in">
3356 <desc>For backward merges: list of media which need their parent UUID
3357 updated.</desc>
3358 </param>
3359 </method>
3360
3361 <method name="restoreSnapshot">
3362 <desc>
3363 Gets called by <link to="IConsole::restoreSnapshot"/>.
3364 </desc>
3365 <param name="initiator" type="IConsole" dir="in">
3366 <desc>The console object that initiated this call.</desc>
3367 </param>
3368 <param name="snapshot" type="ISnapshot" dir="in">
3369 <desc>The snapshot to restore the VM state from.</desc>
3370 </param>
3371 <param name="machineState" type="MachineState" dir="out">
3372 <desc>New machine state after this operation is started.</desc>
3373 </param>
3374 <param name="progress" type="IProgress" dir="return">
3375 <desc>Progress object to track the operation completion.</desc>
3376 </param>
3377 </method>
3378
3379 <method name="pullGuestProperties">
3380 <desc>
3381 Get the list of the guest properties matching a set of patterns along
3382 with their values, time stamps and flags and give responsibility for
3383 managing properties to the console.
3384 </desc>
3385 <param name="name" type="wstring" dir="out" safearray="yes">
3386 <desc>
3387 The names of the properties returned.
3388 </desc>
3389 </param>
3390 <param name="value" type="wstring" dir="out" safearray="yes">
3391 <desc>
3392 The values of the properties returned. The array entries match the
3393 corresponding entries in the @a name array.
3394 </desc>
3395 </param>
3396 <param name="timestamp" type="long long" dir="out" safearray="yes">
3397 <desc>
3398 The time stamps of the properties returned. The array entries match
3399 the corresponding entries in the @a name array.
3400 </desc>
3401 </param>
3402 <param name="flags" type="wstring" dir="out" safearray="yes">
3403 <desc>
3404 The flags of the properties returned. The array entries match the
3405 corresponding entries in the @a name array.
3406 </desc>
3407 </param>
3408 </method>
3409
3410 <method name="pushGuestProperty">
3411 <desc>
3412 Update a single guest property in IMachine.
3413 </desc>
3414 <param name="name" type="wstring" dir="in">
3415 <desc>
3416 The name of the property to be updated.
3417 </desc>
3418 </param>
3419 <param name="value" type="wstring" dir="in">
3420 <desc>
3421 The value of the property.
3422 </desc>
3423 </param>
3424 <param name="timestamp" type="long long" dir="in">
3425 <desc>
3426 The timestamp of the property.
3427 </desc>
3428 </param>
3429 <param name="flags" type="wstring" dir="in">
3430 <desc>
3431 The flags of the property.
3432 </desc>
3433 </param>
3434 </method>
3435
3436 <method name="lockMedia">
3437 <desc>
3438 Locks all media attached to the machine for writing and parents of
3439 attached differencing media (if any) for reading. This operation is
3440 atomic so that if it fails no media is actually locked.
3441
3442 This method is intended to be called when the machine is in Starting or
3443 Restoring state. The locked media will be automatically unlocked when
3444 the machine is powered off or crashed.
3445 </desc>
3446 </method>
3447 <method name="unlockMedia">
3448 <desc>
3449 Unlocks all media previously locked using
3450 <link to="IInternalMachineControl::lockMedia"/>.
3451
3452 This method is intended to be used with teleportation so that it is
3453 possible to teleport between processes on the same machine.
3454 </desc>
3455 </method>
3456
3457 <method name="ejectMedium">
3458 <desc>
3459 Tells VBoxSVC that the guest has ejected the medium associated with
3460 the medium attachment.
3461 </desc>
3462 <param name="attachment" type="IMediumAttachment" dir="in">
3463 <desc>
3464 The medium attachment where the eject happened.
3465 </desc>
3466 </param>
3467 <param name="newAttachment" type="IMediumAttachment" dir="return">
3468 <desc>
3469 A new reference to the medium attachment, as the config change can
3470 result in the creation of a new instance.
3471 </desc>
3472 </param>
3473 </method>
3474
3475 <method name="reportGuestStatistics">
3476 <desc>
3477 Passes collected guest statistics to VBoxSVC.
3478 </desc>
3479 <param name="validStats" type="unsigned long" dir="in">
3480 <desc>
3481 Mask defining which parameters are valid. For example: 0x11 means
3482 that cpuIdle and XXX are valid. Other parameters should be ignored.
3483 </desc>
3484 </param>
3485 <param name="cpuUser" type="unsigned long" dir="in">
3486 <desc>Percentage of processor time spent in user mode as seen by the guest.</desc>
3487 </param>
3488 <param name="cpuKernel" type="unsigned long" dir="in">
3489 <desc>Percentage of processor time spent in kernel mode as seen by the guest.</desc>
3490 </param>
3491 <param name="cpuIdle" type="unsigned long" dir="in">
3492 <desc>Percentage of processor time spent idling as seen by the guest.</desc>
3493 </param>
3494 <param name="memTotal" type="unsigned long" dir="in">
3495 <desc>Total amount of physical guest RAM.</desc>
3496 </param>
3497 <param name="memFree" type="unsigned long" dir="in">
3498 <desc>Free amount of physical guest RAM.</desc>
3499 </param>
3500 <param name="memBalloon" type="unsigned long" dir="in">
3501 <desc>Amount of ballooned physical guest RAM.</desc>
3502 </param>
3503 <param name="memShared" type="unsigned long" dir="in">
3504 <desc>Amount of shared physical guest RAM.</desc>
3505 </param>
3506 <param name="memCache" type="unsigned long" dir="in">
3507 <desc>Total amount of guest (disk) cache memory.</desc>
3508 </param>
3509 <param name="pagedTotal" type="unsigned long" dir="in">
3510 <desc>Total amount of space in the page file.</desc>
3511 </param>
3512 <param name="memAllocTotal" type="unsigned long" dir="in">
3513 <desc>Total amount of memory allocated by the hypervisor.</desc>
3514 </param>
3515 <param name="memFreeTotal" type="unsigned long" dir="in">
3516 <desc>Total amount of free memory available in the hypervisor.</desc>
3517 </param>
3518 <param name="memBalloonTotal" type="unsigned long" dir="in">
3519 <desc>Total amount of memory ballooned by the hypervisor.</desc>
3520 </param>
3521 <param name="memSharedTotal" type="unsigned long" dir="in">
3522 <desc>Total amount of shared memory in the hypervisor.</desc>
3523 </param>
3524 </method>
3525 </interface>
3526
3527 <interface
3528 name="IBIOSSettings" extends="$unknown"
3529 uuid="38b54279-dc35-4f5e-a431-835b867c6b5e"
3530 wsmap="managed"
3531 >
3532 <desc>
3533 The IBIOSSettings interface represents BIOS settings of the virtual
3534 machine. This is used only in the <link to="IMachine::BIOSSettings" /> attribute.
3535 </desc>
3536 <attribute name="logoFadeIn" type="boolean">
3537 <desc>Fade in flag for BIOS logo animation.</desc>
3538 </attribute>
3539
3540 <attribute name="logoFadeOut" type="boolean">
3541 <desc>Fade out flag for BIOS logo animation.</desc>
3542 </attribute>
3543
3544 <attribute name="logoDisplayTime" type="unsigned long">
3545 <desc>BIOS logo display time in milliseconds (0 = default).</desc>
3546 </attribute>
3547
3548 <attribute name="logoImagePath" type="wstring">
3549 <desc>
3550 Local file system path for external BIOS splash image. Empty string
3551 means the default image is shown on boot.
3552 </desc>
3553 </attribute>
3554
3555 <attribute name="bootMenuMode" type="BIOSBootMenuMode">
3556 <desc>Mode of the BIOS boot device menu.</desc>
3557 </attribute>
3558
3559 <attribute name="ACPIEnabled" type="boolean">
3560 <desc>ACPI support flag.</desc>
3561 </attribute>
3562
3563 <attribute name="IOAPICEnabled" type="boolean">
3564 <desc>
3565 IO APIC support flag. If set, VirtualBox will provide an IO APIC
3566 and support IRQs above 15.
3567 </desc>
3568 </attribute>
3569
3570 <attribute name="timeOffset" type="long long">
3571 <desc>
3572 Offset in milliseconds from the host system time. This allows for
3573 guests running with a different system date/time than the host.
3574 It is equivalent to setting the system date/time in the BIOS except
3575 it is not an absolute value but a relative one. Guest Additions
3576 time synchronization honors this offset.
3577 </desc>
3578 </attribute>
3579
3580 <attribute name="PXEDebugEnabled" type="boolean">
3581 <desc>
3582 PXE debug logging flag. If set, VirtualBox will write extensive
3583 PXE trace information to the release log.
3584 </desc>
3585 </attribute>
3586 </interface>
3587
3588 <enum
3589 name="CleanupMode"
3590 uuid="67897c50-7cca-47a9-83f6-ce8fd8eb5441"
3591 >
3592 <desc>Cleanup mode, used with <link to="IMachine::unregister" />.
3593 </desc>
3594 <const name="UnregisterOnly" value="1">
3595 <desc>Unregister only the machine, but neither delete snapshots nor detach media.</desc>
3596 </const>
3597 <const name="DetachAllReturnNone" value="2">
3598 <desc>Delete all snapshots and detach all media but return none; this will keep all media registered.</desc>
3599 </const>
3600 <const name="DetachAllReturnHardDisksOnly" value="3">
3601 <desc>Delete all snapshots, detach all media and return hard disks for closing, but not removable media.</desc>
3602 </const>
3603 <const name="Full" value="4">
3604 <desc>Delete all snapshots, detach all media and return all media for closing.</desc>
3605 </const>
3606 </enum>
3607
3608 <interface
3609 name="IPciAddress" extends="$unknown"
3610 uuid="D88B324F-DB19-4D3B-A1A9-BF5B127199A8"
3611 wsmap="struct"
3612 >
3613
3614 <desc>
3615 Address on the PCI bus.
3616 </desc>
3617
3618 <attribute name="bus" type="short">
3619 <desc>
3620 Bus number.
3621 </desc>
3622 </attribute>
3623
3624 <attribute name="device" type="short">
3625 <desc>
3626 Device number.
3627 </desc>
3628 </attribute>
3629
3630 <attribute name="devFunction" type="short">
3631 <desc>
3632 Device function number.
3633 </desc>
3634 </attribute>
3635
3636 <method name="asLong">
3637 <desc>
3638 Convert PCI address into long.
3639 </desc>
3640 <param name="result" type="long" dir="return" />
3641 </method>
3642
3643 <method name="fromLong">
3644 <desc>
3645 Make PCI address from long.
3646 </desc>
3647 <param name="number" type="long" dir="in" />
3648 </method>
3649 </interface>
3650
3651 <interface
3652 name="IPciDeviceAttachment" extends="$unknown"
3653 uuid="91f33d6f-e621-4f70-a77e-15f0e3c714d5"
3654 wsmap="struct"
3655 >
3656
3657 <desc>
3658 Information about PCI attachments.
3659 </desc>
3660
3661 <attribute name="name" type="wstring" readonly="yes">
3662 <desc>
3663 Device name.
3664 </desc>
3665 </attribute>
3666
3667 <attribute name="isPhysicalDevice" type="boolean" readonly="yes">
3668 <desc>
3669 If this is physical or virtual device.
3670 </desc>
3671 </attribute>
3672
3673 <attribute name="hostAddress" type="long" readonly="yes">
3674 <desc>
3675 Address of device on the host, applicable only to host devices.
3676 </desc>
3677 </attribute>
3678
3679 <attribute name="guestAddress" type="long" readonly="yes">
3680 <desc>
3681 Address of device on the guest.
3682 </desc>
3683 </attribute>
3684
3685 </interface>
3686
3687 <enum
3688 name="CloneMode" extends="$unknown"
3689 uuid="A7A159FE-5096-4B8D-8C3C-D033CB0B35A8"
3690 >
3691
3692 <desc>
3693 Clone mode, used with <link to="IMachine::cloneTo" />.
3694 </desc>
3695
3696 <const name="MachineState" value="1">
3697 <desc>Clone the state of the selected machine.</desc>
3698 </const>
3699 <const name="MachineAndChildStates" value="2">
3700 <desc>Clone the state of the selected machine and its child snapshots if present.</desc>
3701 </const>
3702 <const name="AllStates" value="3">
3703 <desc>Clone all states (including all snapshots) of the machine, regardless of the machine object used.</desc>
3704 </const>
3705
3706 </enum>
3707
3708 <enum
3709 name="CloneOptions" extends="$unknown"
3710 uuid="22243f8e-96ab-497c-8cf0-f40a566c630b"
3711 >
3712
3713 <desc>
3714 Clone options, used with <link to="IMachine::cloneTo" />.
3715 </desc>
3716
3717 <const name="Link" value="1">
3718 <desc>Create a clone VM where all virtual disks are linked to the original VM.</desc>
3719 </const>
3720 <const name="KeepAllMACs" value="2">
3721 <desc>Don't generate new MAC addresses of the attached network adapters.</desc>
3722 </const>
3723 <const name="KeepNATMACs" value="3">
3724 <desc>Don't generate new MAC addresses of the attached network adapters when they are using NAT.</desc>
3725 </const>
3726 <const name="KeepDiskNames" value="4">
3727 <desc>Don't change the disk names.</desc>
3728 </const>
3729
3730 </enum>
3731
3732 <enum
3733 name="AutostopType" extends="$unknown"
3734 uuid="6bb96740-cf34-470d-aab2-2cd48ea2e10e"
3735 >
3736
3737 <desc>
3738 Autostop types, used with <link to="IMachine::autostopType" />.
3739 </desc>
3740
3741 <const name="Disabled" value="1">
3742 <desc>Stopping the VM during system shutdown is disabled.</desc>
3743 </const>
3744 <const name="SaveState" value="2">
3745 <desc>The state of the VM will be saved when the system shuts down.</desc>
3746 </const>
3747 <const name="PowerOff" value="3">
3748 <desc>The VM is powered off when the system shuts down.</desc>
3749 </const>
3750 <const name="AcpiShutdown" value="4">
3751 <desc>An ACPI shutdown event is generated.</desc>
3752 </const>
3753
3754 </enum>
3755
3756
3757 <interface
3758 name="IMachine" extends="$unknown"
3759 uuid="f5b974bd-473b-43b6-b800-1ec40b9a8513"
3760 wsmap="managed"
3761 >
3762 <desc>
3763 The IMachine interface represents a virtual machine, or guest, created
3764 in VirtualBox.
3765
3766 This interface is used in two contexts. First of all, a collection of
3767 objects implementing this interface is stored in the
3768 <link to="IVirtualBox::machines"/> attribute which lists all the virtual
3769 machines that are currently registered with this VirtualBox
3770 installation. Also, once a session has been opened for the given virtual
3771 machine (e.g. the virtual machine is running), the machine object
3772 associated with the open session can be queried from the session object;
3773 see <link to="ISession"/> for details.
3774
3775 The main role of this interface is to expose the settings of the virtual
3776 machine and provide methods to change various aspects of the virtual
3777 machine's configuration. For machine objects stored in the
3778 <link to="IVirtualBox::machines"/> collection, all attributes are
3779 read-only unless explicitly stated otherwise in individual attribute
3780 and method descriptions.
3781
3782 In order to change a machine setting, a session for this machine must be
3783 opened using one of the <link to="IMachine::lockMachine" /> or
3784 <link to="IMachine::launchVMProcess"/> methods. After the
3785 machine has been successfully locked for a session, a mutable machine object
3786 needs to be queried from the session object and then the desired settings
3787 changes can be applied to the returned object using IMachine attributes and
3788 methods. See the <link to="ISession"/> interface description for more
3789 information about sessions.
3790
3791 Note that IMachine does not provide methods to control virtual machine
3792 execution (such as start the machine, or power it down) -- these methods
3793 are grouped in a separate interface called <link to="IConsole" />.
3794
3795 <see><link to="ISession"/>, <link to="IConsole"/></see>
3796 </desc>
3797
3798 <attribute name="parent" type="IVirtualBox" readonly="yes">
3799 <desc>Associated parent object.</desc>
3800 </attribute>
3801
3802 <attribute name="accessible" type="boolean" readonly="yes">
3803 <desc>
3804 Whether this virtual machine is currently accessible or not.
3805
3806 A machine is always deemed accessible unless it is registered <i>and</i>
3807 its settings file cannot be read or parsed (either because the file itself
3808 is unavailable or has invalid XML contents).
3809
3810 Every time this property is read, the accessibility state of
3811 this machine is re-evaluated. If the returned value is @c false,
3812 the <link to="#accessError"/> property may be used to get the
3813 detailed error information describing the reason of
3814 inaccessibility, including XML error messages.
3815
3816 When the machine is inaccessible, only the following properties
3817 can be used on it:
3818 <ul>
3819 <li><link to="#parent"/></li>
3820 <li><link to="#id"/></li>
3821 <li><link to="#settingsFilePath"/></li>
3822 <li><link to="#accessible"/></li>
3823 <li><link to="#accessError"/></li>
3824 </ul>
3825
3826 An attempt to access any other property or method will return
3827 an error.
3828
3829 The only possible action you can perform on an inaccessible
3830 machine is to unregister it using the
3831 <link to="IMachine::unregister"/> call (or, to check
3832 for the accessibility state once more by querying this
3833 property).
3834
3835 <note>
3836 In the current implementation, once this property returns
3837 @c true, the machine will never become inaccessible
3838 later, even if its settings file cannot be successfully
3839 read/written any more (at least, until the VirtualBox
3840 server is restarted). This limitation may be removed in
3841 future releases.
3842 </note>
3843 </desc>
3844 </attribute>
3845
3846 <attribute name="accessError" type="IVirtualBoxErrorInfo" readonly="yes">
3847 <desc>
3848 Error information describing the reason of machine
3849 inaccessibility.
3850
3851 Reading this property is only valid after the last call to
3852 <link to="#accessible"/> returned @c false (i.e. the
3853 machine is currently inaccessible). Otherwise, a @c null
3854 IVirtualBoxErrorInfo object will be returned.
3855 </desc>
3856 </attribute>
3857
3858 <attribute name="name" type="wstring">
3859 <desc>
3860 Name of the virtual machine.
3861
3862 Besides being used for human-readable identification purposes
3863 everywhere in VirtualBox, the virtual machine name is also used
3864 as a name of the machine's settings file and as a name of the
3865 subdirectory this settings file resides in. Thus, every time you
3866 change the value of this property, the settings file will be
3867 renamed once you call <link to="#saveSettings"/> to confirm the
3868 change. The containing subdirectory will be also renamed, but
3869 only if it has exactly the same name as the settings file
3870 itself prior to changing this property (for backward compatibility
3871 with previous API releases). The above implies the following
3872 limitations:
3873 <ul>
3874 <li>The machine name cannot be empty.</li>
3875 <li>The machine name can contain only characters that are valid
3876 file name characters according to the rules of the file
3877 system used to store VirtualBox configuration.</li>
3878 <li>You cannot have two or more machines with the same name
3879 if they use the same subdirectory for storing the machine
3880 settings files.</li>
3881 <li>You cannot change the name of the machine if it is running,
3882 or if any file in the directory containing the settings file
3883 is being used by another running machine or by any other
3884 process in the host operating system at a time when
3885 <link to="#saveSettings"/> is called.
3886 </li>
3887 </ul>
3888 If any of the above limitations are hit, <link to="#saveSettings"/>
3889 will return an appropriate error message explaining the exact
3890 reason and the changes you made to this machine will not be saved.
3891
3892 Starting with VirtualBox 4.0, a ".vbox" extension of the settings
3893 file is recommended, but not enforced. (Previous versions always
3894 used a generic ".xml" extension.)
3895 </desc>
3896 </attribute>
3897
3898 <attribute name="description" type="wstring">
3899 <desc>
3900 Description of the virtual machine.
3901
3902 The description attribute can contain any text and is
3903 typically used to describe the hardware and software
3904 configuration of the virtual machine in detail (i.e. network
3905 settings, versions of the installed software and so on).
3906 </desc>
3907 </attribute>
3908
3909 <attribute name="id" type="uuid" mod="string" readonly="yes">
3910 <desc>UUID of the virtual machine.</desc>
3911 </attribute>
3912
3913 <attribute name="groups" type="wstring" safearray="yes">
3914 <desc>
3915 Array of machine group names of which this machine is a member.
3916 <tt>""</tt> and <tt>"/"</tt> are synonyms for the toplevel group. Each
3917 group is only listed once, however they are listed in no particular
3918 order and there is no guarantee that there are no gaps in the group
3919 hierarchy (i.e. <tt>"/group"</tt>,
3920 <tt>"/group/subgroup/subsubgroup"</tt> is a valid result).
3921 </desc>
3922 </attribute>
3923
3924 <attribute name="OSTypeId" type="wstring">
3925 <desc>
3926 User-defined identifier of the Guest OS type.
3927 You may use <link to="IVirtualBox::getGuestOSType"/> to obtain
3928 an IGuestOSType object representing details about the given
3929 Guest OS type.
3930 <note>
3931 This value may differ from the value returned by
3932 <link to="IGuest::OSTypeId"/> if Guest Additions are
3933 installed to the guest OS.
3934 </note>
3935 </desc>
3936 </attribute>
3937
3938 <attribute name="hardwareVersion" type="wstring">
3939 <desc>Hardware version identifier. Internal use only for now.</desc>
3940 </attribute>
3941
3942 <attribute name="hardwareUUID" type="uuid" mod="string">
3943 <desc>
3944 The UUID presented to the guest via memory tables, hardware and guest
3945 properties. For most VMs this is the same as the @a id, but for VMs
3946 which have been cloned or teleported it may be the same as the source
3947 VM. The latter is because the guest shouldn't notice that it was
3948 cloned or teleported.
3949 </desc>
3950 </attribute>
3951
3952 <attribute name="CPUCount" type="unsigned long">
3953 <desc>Number of virtual CPUs in the VM.</desc>
3954 </attribute>
3955
3956 <attribute name="CPUHotPlugEnabled" type="boolean">
3957 <desc>
3958 This setting determines whether VirtualBox allows CPU
3959 hotplugging for this machine.</desc>
3960 </attribute>
3961
3962 <attribute name="CPUExecutionCap" type="unsigned long">
3963 <desc>
3964 Means to limit the number of CPU cycles a guest can use. The unit
3965 is percentage of host CPU cycles per second. The valid range
3966 is 1 - 100. 100 (the default) implies no limit.
3967 </desc>
3968 </attribute>
3969
3970 <attribute name="memorySize" type="unsigned long">
3971 <desc>System memory size in megabytes.</desc>
3972 </attribute>
3973
3974 <attribute name="memoryBalloonSize" type="unsigned long">
3975 <desc>Memory balloon size in megabytes.</desc>
3976 </attribute>
3977
3978 <attribute name="pageFusionEnabled" type="boolean">
3979 <desc>
3980 This setting determines whether VirtualBox allows page
3981 fusion for this machine (64 bits host only).
3982 </desc>
3983 </attribute>
3984
3985 <attribute name="VRAMSize" type="unsigned long">
3986 <desc>Video memory size in megabytes.</desc>
3987 </attribute>
3988
3989 <attribute name="accelerate3DEnabled" type="boolean" default="false">
3990 <desc>
3991 This setting determines whether VirtualBox allows this machine to make
3992 use of the 3D graphics support available on the host.</desc>
3993 </attribute>
3994
3995 <attribute name="accelerate2DVideoEnabled" type="boolean" default="false">
3996 <desc>
3997 This setting determines whether VirtualBox allows this machine to make
3998 use of the 2D video acceleration support available on the host.</desc>
3999 </attribute>
4000
4001 <attribute name="monitorCount" type="unsigned long">
4002 <desc>
4003 Number of virtual monitors.
4004 <note>
4005 Only effective on Windows XP and later guests with
4006 Guest Additions installed.
4007 </note>
4008 </desc>
4009 </attribute>
4010
4011 <attribute name="BIOSSettings" type="IBIOSSettings" readonly="yes">
4012 <desc>Object containing all BIOS settings.</desc>
4013 </attribute>
4014
4015 <attribute name="firmwareType" type="FirmwareType">
4016 <desc>Type of firmware (such as legacy BIOS or EFI), used for initial
4017 bootstrap in this VM.</desc>
4018 </attribute>
4019
4020 <attribute name="pointingHidType" type="PointingHidType">
4021 <desc>Type of pointing HID (such as mouse or tablet) used in this VM.
4022 The default is typically "PS2Mouse" but can vary depending on the
4023 requirements of the guest operating system.</desc>
4024 </attribute>
4025
4026 <attribute name="keyboardHidType" type="KeyboardHidType">
4027 <desc>Type of keyboard HID used in this VM.
4028 The default is typically "PS2Keyboard" but can vary depending on the
4029 requirements of the guest operating system.</desc>
4030 </attribute>
4031
4032 <attribute name="hpetEnabled" type="boolean">
4033 <desc>This attribute controls if High Precision Event Timer (HPET) is
4034 enabled in this VM. Use this property if you want to provide guests
4035 with additional time source, or if guest requires HPET to function correctly.
4036 Default is false.</desc>
4037 </attribute>
4038
4039 <attribute name="chipsetType" type="ChipsetType">
4040 <desc>Chipset type used in this VM.</desc>
4041 </attribute>
4042
4043 <attribute name="snapshotFolder" type="wstring">
4044 <desc>
4045 Full path to the directory used to store snapshot data
4046 (differencing media and saved state files) of this machine.
4047
4048 The initial value of this property is
4049 <tt>&lt;</tt><link to="#settingsFilePath">
4050 path_to_settings_file</link><tt>&gt;/&lt;</tt>
4051 <link to="#id">machine_uuid</link>
4052 <tt>&gt;</tt>.
4053
4054 Currently, it is an error to try to change this property on
4055 a machine that has snapshots (because this would require to
4056 move possibly large files to a different location).
4057 A separate method will be available for this purpose later.
4058
4059 <note>
4060 Setting this property to @c null or to an empty string will restore
4061 the initial value.
4062 </note>
4063 <note>
4064 When setting this property, the specified path can be
4065 absolute (full path) or relative to the directory where the
4066 <link to="#settingsFilePath">machine settings file</link>
4067 is located. When reading this property, a full path is
4068 always returned.
4069 </note>
4070 <note>
4071 The specified path may not exist, it will be created
4072 when necessary.
4073 </note>
4074 </desc>
4075 </attribute>
4076
4077 <attribute name="VRDEServer" type="IVRDEServer" readonly="yes">
4078 <desc>VirtualBox Remote Desktop Extension (VRDE) server object.</desc>
4079 </attribute>
4080
4081 <attribute name="emulatedUSBWebcameraEnabled" type="boolean" default="false"/>
4082 <attribute name="emulatedUSBCardReaderEnabled" type="boolean" default="false"/>
4083
4084 <attribute name="mediumAttachments" type="IMediumAttachment" readonly="yes" safearray="yes">
4085 <desc>Array of media attached to this machine.</desc>
4086 </attribute>
4087
4088 <attribute name="USBController" type="IUSBController" readonly="yes">
4089 <desc>
4090 Associated USB controller object.
4091
4092 <note>
4093 If USB functionality is not available in the given edition of
4094 VirtualBox, this method will set the result code to @c E_NOTIMPL.
4095 </note>
4096 </desc>
4097 </attribute>
4098
4099 <attribute name="audioAdapter" type="IAudioAdapter" readonly="yes">
4100 <desc>Associated audio adapter, always present.</desc>
4101 </attribute>
4102
4103 <attribute name="storageControllers" type="IStorageController" readonly="yes" safearray="yes">
4104 <desc>Array of storage controllers attached to this machine.</desc>
4105 </attribute>
4106
4107 <attribute name="settingsFilePath" type="wstring" readonly="yes">
4108 <desc>
4109 Full name of the file containing machine settings data.
4110 </desc>
4111 </attribute>
4112
4113 <attribute name="settingsModified" type="boolean" readonly="yes">
4114 <desc>
4115 Whether the settings of this machine have been modified
4116 (but neither yet saved nor discarded).
4117 <note>
4118 Reading this property is only valid on instances returned
4119 by <link to="ISession::machine"/> and on new machines
4120 created by <link to="IVirtualBox::createMachine"/> or opened
4121 by <link to="IVirtualBox::openMachine"/> but not
4122 yet registered, or on unregistered machines after calling
4123 <link to="IMachine::unregister"/>. For all other
4124 cases, the settings can never be modified.
4125 </note>
4126 <note>
4127 For newly created unregistered machines, the value of this
4128 property is always @c true until <link to="#saveSettings"/>
4129 is called (no matter if any machine settings have been
4130 changed after the creation or not). For opened machines
4131 the value is set to @c false (and then follows to normal rules).
4132 </note>
4133 </desc>
4134 </attribute>
4135
4136 <attribute name="sessionState" type="SessionState" readonly="yes">
4137 <desc>Current session state for this machine.</desc>
4138 </attribute>
4139
4140 <attribute name="sessionType" type="wstring" readonly="yes">
4141 <desc>
4142 Type of the session. If <link to="#sessionState"/> is
4143 Spawning or Locked, this attribute contains the
4144 same value as passed to the
4145 <link to="IMachine::launchVMProcess"/> method in the
4146 @a type parameter. If the session was used with
4147 <link to="IMachine::lockMachine" />, or if
4148 <link to="#sessionState"/> is SessionClosed, the value of this
4149 attribute is an empty string.
4150 </desc>
4151 </attribute>
4152
4153 <attribute name="sessionPid" type="unsigned long" readonly="yes">
4154 <desc>
4155 Identifier of the session process. This attribute contains the
4156 platform-dependent identifier of the process whose session was
4157 used with <link to="IMachine::lockMachine" /> call. The returned
4158 value is only valid if <link to="#sessionState"/> is Locked or
4159 Unlocking by the time this property is read.
4160 </desc>
4161 </attribute>
4162
4163 <attribute name="state" type="MachineState" readonly="yes">
4164 <desc>Current execution state of this machine.</desc>
4165 </attribute>
4166
4167 <attribute name="lastStateChange" type="long long" readonly="yes">
4168 <desc>
4169 Time stamp of the last execution state change,
4170 in milliseconds since 1970-01-01 UTC.
4171 </desc>
4172 </attribute>
4173
4174 <attribute name="stateFilePath" type="wstring" readonly="yes">
4175 <desc>
4176 Full path to the file that stores the execution state of
4177 the machine when it is in the <link to="MachineState_Saved"/> state.
4178 <note>
4179 When the machine is not in the Saved state, this attribute is
4180 an empty string.
4181 </note>
4182 </desc>
4183 </attribute>
4184
4185 <attribute name="logFolder" type="wstring" readonly="yes">
4186 <desc>
4187 Full path to the folder that stores a set of rotated log files
4188 recorded during machine execution. The most recent log file is
4189 named <tt>VBox.log</tt>, the previous log file is
4190 named <tt>VBox.log.1</tt> and so on (up to <tt>VBox.log.3</tt>
4191 in the current version).
4192 </desc>
4193 </attribute>
4194
4195 <attribute name="currentSnapshot" type="ISnapshot" readonly="yes">
4196 <desc>
4197 Current snapshot of this machine. This is @c null if the machine
4198 currently has no snapshots. If it is not @c null, then it was
4199 set by one of <link to="IConsole::takeSnapshot" />,
4200 <link to="IConsole::deleteSnapshot" />
4201 or <link to="IConsole::restoreSnapshot" />, depending on which
4202 was called last. See <link to="ISnapshot"/> for details.
4203 </desc>
4204 </attribute>
4205
4206 <attribute name="snapshotCount" type="unsigned long" readonly="yes">
4207 <desc>
4208 Number of snapshots taken on this machine. Zero means the
4209 machine doesn't have any snapshots.
4210 </desc>
4211 </attribute>
4212
4213 <attribute name="currentStateModified" type="boolean" readonly="yes">
4214 <desc>
4215 Returns @c true if the current state of the machine is not
4216 identical to the state stored in the current snapshot.
4217
4218 The current state is identical to the current snapshot only
4219 directly after one of the following calls are made:
4220
4221 <ul>
4222 <li><link to="IConsole::restoreSnapshot"/>
4223 </li>
4224 <li><link to="IConsole::takeSnapshot"/> (issued on a
4225 "powered off" or "saved" machine, for which
4226 <link to="#settingsModified"/> returns @c false)
4227 </li>
4228 </ul>
4229
4230 The current state remains identical until one of the following
4231 happens:
4232 <ul>
4233 <li>settings of the machine are changed</li>
4234 <li>the saved state is deleted</li>
4235 <li>the current snapshot is deleted</li>
4236 <li>an attempt to execute the machine is made</li>
4237 </ul>
4238
4239 <note>
4240 For machines that don't have snapshots, this property is
4241 always @c false.
4242 </note>
4243 </desc>
4244 </attribute>
4245
4246 <attribute name="sharedFolders" type="ISharedFolder" readonly="yes" safearray="yes">
4247 <desc>
4248 Collection of shared folders for this machine (permanent shared
4249 folders). These folders are shared automatically at machine startup
4250 and available only to the guest OS installed within this machine.
4251
4252 New shared folders are added to the collection using
4253 <link to="#createSharedFolder"/>. Existing shared folders can be
4254 removed using <link to="#removeSharedFolder"/>.
4255 </desc>
4256 </attribute>
4257
4258 <attribute name="clipboardMode" type="ClipboardMode">
4259 <desc>
4260 Synchronization mode between the host OS clipboard
4261 and the guest OS clipboard.
4262 </desc>
4263 </attribute>
4264
4265 <attribute name="dragAndDropMode" type="DragAndDropMode">
4266 <desc>
4267 Which mode is allowed for drag'n'drop.
4268 </desc>
4269 </attribute>
4270
4271 <attribute name="guestPropertyNotificationPatterns" type="wstring">
4272 <desc>
4273 A comma-separated list of simple glob patterns. Changes to guest
4274 properties whose name matches one of the patterns will generate an
4275 <link to="IGuestPropertyChangedEvent"/> signal.
4276 </desc>
4277 </attribute>
4278
4279 <attribute name="teleporterEnabled" type="boolean">
4280 <desc>
4281 When set to @a true, the virtual machine becomes a target teleporter
4282 the next time it is powered on. This can only set to @a true when the
4283 VM is in the @a PoweredOff or @a Aborted state.
4284
4285 <!-- This property is automatically set to @a false when the VM is powered
4286 on. (bird: This doesn't work yet ) -->
4287 </desc>
4288 </attribute>
4289
4290 <attribute name="teleporterPort" type="unsigned long">
4291 <desc>
4292 The TCP port the target teleporter will listen for incoming
4293 teleportations on.
4294
4295 0 means the port is automatically selected upon power on. The actual
4296 value can be read from this property while the machine is waiting for
4297 incoming teleportations.
4298 </desc>
4299 </attribute>
4300
4301 <attribute name="teleporterAddress" type="wstring">
4302 <desc>
4303 The address the target teleporter will listen on. If set to an empty
4304 string, it will listen on all addresses.
4305 </desc>
4306 </attribute>
4307
4308 <attribute name="teleporterPassword" type="wstring">
4309 <desc>
4310 The password to check for on the target teleporter. This is just a
4311 very basic measure to prevent simple hacks and operators accidentally
4312 beaming a virtual machine to the wrong place.
4313
4314 Note that you SET a plain text password while reading back a HASHED
4315 password. Setting a hashed password is currently not supported.
4316 </desc>
4317 </attribute>
4318
4319 <attribute name="faultToleranceState" type="FaultToleranceState">
4320 <desc>
4321 Fault tolerance state; disabled, source or target.
4322 This property can be changed at any time. If you change it for a running
4323 VM, then the fault tolerance address and port must be set beforehand.
4324 </desc>
4325 </attribute>
4326
4327 <attribute name="faultTolerancePort" type="unsigned long">
4328 <desc>
4329 The TCP port the fault tolerance source or target will use for
4330 communication.
4331 </desc>
4332 </attribute>
4333
4334 <attribute name="faultToleranceAddress" type="wstring">
4335 <desc>
4336 The address the fault tolerance source or target.
4337 </desc>
4338 </attribute>
4339
4340 <attribute name="faultTolerancePassword" type="wstring">
4341 <desc>
4342 The password to check for on the standby VM. This is just a
4343 very basic measure to prevent simple hacks and operators accidentally
4344 choosing the wrong standby VM.
4345 </desc>
4346 </attribute>
4347
4348 <attribute name="faultToleranceSyncInterval" type="unsigned long">
4349 <desc>
4350 The interval in ms used for syncing the state between source and target.
4351 </desc>
4352 </attribute>
4353
4354 <attribute name="RTCUseUTC" type="boolean">
4355 <desc>
4356 When set to @a true, the RTC device of the virtual machine will run
4357 in UTC time, otherwise in local time. Especially Unix guests prefer
4358 the time in UTC.
4359 </desc>
4360 </attribute>
4361
4362 <attribute name="ioCacheEnabled" type="boolean">
4363 <desc>
4364 When set to @a true, the builtin I/O cache of the virtual machine
4365 will be enabled.
4366 </desc>
4367 </attribute>
4368
4369 <attribute name="ioCacheSize" type="unsigned long">
4370 <desc>
4371 Maximum size of the I/O cache in MB.
4372 </desc>
4373 </attribute>
4374
4375 <attribute name="pciDeviceAssignments" type="IPciDeviceAttachment" readonly="yes" safearray="yes">
4376 <desc>Array of PCI devices assigned to this machine, to get list of all
4377 PCI devices attached to the machine use
4378 <link to="IConsole::attachedPciDevices"/> attribute, as this attribute
4379 is intended to list only devices additional to what described in
4380 virtual hardware config. Usually, this list keeps host's physical
4381 devices assigned to the particular machine.
4382 </desc>
4383 </attribute>
4384
4385 <attribute name="bandwidthControl" type="IBandwidthControl" readonly="yes">
4386 <desc>
4387 Bandwidth control manager.
4388 </desc>
4389 </attribute>
4390
4391 <attribute name="tracingEnabled" type="boolean">
4392 <desc>
4393 Enables the tracing facility in the VMM (including PDM devices +
4394 drivers). The VMM will consume about 0.5MB of more memory when
4395 enabled and there may be some extra overhead from tracepoints that are
4396 always enabled.
4397 </desc>
4398 </attribute>
4399
4400 <attribute name="tracingConfig" type="wstring">
4401 <desc>
4402 Tracepoint configuration to apply at startup when
4403 <link to="IMachine::tracingEnabled" /> is true. The string specifies
4404 a space separated of tracepoint group names to enable. The special
4405 group 'all' enables all tracepoints. Check DBGFR3TracingConfig for
4406 more details on available tracepoint groups and such.
4407
4408 Note that on hosts supporting DTrace (or similar), a lot of the
4409 tracepoints may be implemented exclusivly as DTrace probes. So, the
4410 effect of the same config may differ between Solaris and Windows for
4411 example.
4412 </desc>
4413 </attribute>
4414
4415 <attribute name="allowTracingToAccessVM" type="boolean">
4416 <desc>
4417 Enables tracepoints in PDM devices and drivers to use the VMCPU or VM
4418 structures when firing off trace points. This is especially useful
4419 with DTrace tracepoints, as it allows you to use the VMCPU or VM
4420 pointer to obtain useful information such as guest register state.
4421
4422 This is disabled by default because devices and drivers normally has no
4423 business accessing the VMCPU or VM structures, and are therefore unable
4424 to get any pointers to these.
4425 </desc>
4426 </attribute>
4427
4428 <attribute name="autostartEnabled" type="boolean">
4429 <desc>
4430 Enables autostart of the VM during system boot.
4431 </desc>
4432 </attribute>
4433
4434 <attribute name="autostartDelay" type="unsigned long">
4435 <desc>
4436 Number of seconds to wait until the VM should be started during system boot.
4437 </desc>
4438 </attribute>
4439
4440 <attribute name="autostopType" type="AutostopType">
4441 <desc>
4442 Action type to do when the system is shutting down.
4443 </desc>
4444 </attribute>
4445
4446 <method name="lockMachine">
4447 <desc>
4448 Locks the machine for the given session to enable the caller
4449 to make changes to the machine or start the VM or control
4450 VM execution.
4451
4452 There are two ways to lock a machine for such uses:
4453
4454 <ul>
4455 <li>If you want to make changes to the machine settings,
4456 you must obtain an exclusive write lock on the machine
4457 by setting @a lockType to @c Write.
4458
4459 This will only succeed if no other process has locked
4460 the machine to prevent conflicting changes. Only after
4461 an exclusive write lock has been obtained using this method, one
4462 can change all VM settings or execute the VM in the process
4463 space of the session object. (Note that the latter is only of
4464 interest if you actually want to write a new front-end for
4465 virtual machines; but this API gets called internally by
4466 the existing front-ends such as VBoxHeadless and the VirtualBox
4467 GUI to acquire a write lock on the machine that they are running.)
4468
4469 On success, write-locking the machine for a session creates
4470 a second copy of the IMachine object. It is this second object
4471 upon which changes can be made; in VirtualBox terminology, the
4472 second copy is "mutable". It is only this second, mutable machine
4473 object upon which you can call methods that change the
4474 machine state. After having called this method, you can
4475 obtain this second, mutable machine object using the
4476 <link to="ISession::machine" /> attribute.
4477 </li>
4478 <li>If you only want to check the machine state or control
4479 machine execution without actually changing machine
4480 settings (e.g. to get access to VM statistics or take
4481 a snapshot or save the machine state), then set the
4482 @a lockType argument to @c Shared.
4483
4484 If no other session has obtained a lock, you will obtain an
4485 exclusive write lock as described above. However, if another
4486 session has already obtained such a lock, then a link to that
4487 existing session will be established which allows you
4488 to control that existing session.
4489
4490 To find out which type of lock was obtained, you can
4491 inspect <link to="ISession::type" />, which will have been
4492 set to either @c WriteLock or @c Shared.
4493 </li>
4494 </ul>
4495
4496 In either case, you can get access to the <link to="IConsole" />
4497 object which controls VM execution.
4498
4499 Also in all of the above cases, one must always call
4500 <link to="ISession::unlockMachine" /> to release the lock on the machine, or
4501 the machine's state will eventually be set to "Aborted".
4502
4503 To change settings on a machine, the following sequence is typically
4504 performed:
4505
4506 <ol>
4507 <li>Call this method to obtain an exclusive write lock for the current session.</li>
4508
4509 <li>Obtain a mutable IMachine object from <link to="ISession::machine" />.</li>
4510
4511 <li>Change the settings of the machine by invoking IMachine methods.</li>
4512
4513 <li>Call <link to="IMachine::saveSettings" />.</li>
4514
4515 <li>Release the write lock by calling <link to="ISession::unlockMachine"/>.</li>
4516 </ol>
4517
4518 <result name="E_UNEXPECTED">
4519 Virtual machine not registered.
4520 </result>
4521 <result name="E_ACCESSDENIED">
4522 Process not started by OpenRemoteSession.
4523 </result>
4524 <result name="VBOX_E_INVALID_OBJECT_STATE">
4525 Session already open or being opened.
4526 </result>
4527 <result name="VBOX_E_VM_ERROR">
4528 Failed to assign machine to session.
4529 </result>
4530 </desc>
4531 <param name="session" type="ISession" dir="in">
4532 <desc>
4533 Session object for which the machine will be locked.
4534 </desc>
4535 </param>
4536 <param name="lockType" type="LockType" dir="in">
4537 <desc>
4538 If set to @c Write, then attempt to acquire an exclusive write lock or fail.
4539 If set to @c Shared, then either acquire an exclusive write lock or establish
4540 a link to an existing session.
4541 </desc>
4542 </param>
4543 </method>
4544
4545 <method name="launchVMProcess">
4546 <desc>
4547 Spawns a new process that will execute the virtual machine and obtains a shared
4548 lock on the machine for the calling session.
4549
4550 If launching the VM succeeds, the new VM process will create its own session
4551 and write-lock the machine for it, preventing conflicting changes from other
4552 processes. If the machine is already locked (because it is already running or
4553 because another session has a write lock), launching the VM process will therefore
4554 fail. Reversely, future attempts to obtain a write lock will also fail while the
4555 machine is running.
4556
4557 The caller's session object remains separate from the session opened by the new
4558 VM process. It receives its own <link to="IConsole" /> object which can be used
4559 to control machine execution, but it cannot be used to change all VM settings
4560 which would be available after a <link to="#lockMachine" /> call.
4561
4562 The caller must eventually release the session's shared lock by calling
4563 <link to="ISession::unlockMachine" /> on the local session object once this call
4564 has returned. However, the session's state (see <link to="ISession::state" />)
4565 will not return to "Unlocked" until the remote session has also unlocked
4566 the machine (i.e. the machine has stopped running).
4567
4568 Launching a VM process can take some time (a new VM is started in a new process,
4569 for which memory and other resources need to be set up). Because of this,
4570 an <link to="IProgress" /> object is returned to allow the caller to wait
4571 for this asynchronous operation to be completed. Until then, the caller's
4572 session object remains in the "Unlocked" state, and its <link to="ISession::machine" />
4573 and <link to="ISession::console" /> attributes cannot be accessed.
4574 It is recommended to use <link to="IProgress::waitForCompletion" /> or
4575 similar calls to wait for completion. Completion is signalled when the VM
4576 is powered on. If launching the VM fails, error messages can be queried
4577 via the progress object, if available.
4578
4579 The progress object will have at least 2 sub-operations. The first
4580 operation covers the period up to the new VM process calls powerUp.
4581 The subsequent operations mirror the <link to="IConsole::powerUp"/>
4582 progress object. Because <link to="IConsole::powerUp"/> may require
4583 some extra sub-operations, the <link to="IProgress::operationCount"/>
4584 may change at the completion of operation.
4585
4586 For details on the teleportation progress operation, see
4587 <link to="IConsole::powerUp"/>.
4588
4589 The @a environment argument is a string containing definitions of
4590 environment variables in the following format:
4591 <pre>
4592 NAME[=VALUE]\n
4593 NAME[=VALUE]\n
4594 ...
4595 </pre>
4596 where <tt>\\n</tt> is the new line character. These environment
4597 variables will be appended to the environment of the VirtualBox server
4598 process. If an environment variable exists both in the server process
4599 and in this list, the value from this list takes precedence over the
4600 server's variable. If the value of the environment variable is
4601 omitted, this variable will be removed from the resulting environment.
4602 If the environment string is @c null or empty, the server environment
4603 is inherited by the started process as is.
4604
4605 <result name="E_UNEXPECTED">
4606 Virtual machine not registered.
4607 </result>
4608 <result name="E_INVALIDARG">
4609 Invalid session type @a type.
4610 </result>
4611 <result name="VBOX_E_OBJECT_NOT_FOUND">
4612 No machine matching @a machineId found.
4613 </result>
4614 <result name="VBOX_E_INVALID_OBJECT_STATE">
4615 Session already open or being opened.
4616 </result>
4617 <result name="VBOX_E_IPRT_ERROR">
4618 Launching process for machine failed.
4619 </result>
4620 <result name="VBOX_E_VM_ERROR">
4621 Failed to assign machine to session.
4622 </result>
4623 </desc>
4624 <param name="session" type="ISession" dir="in">
4625 <desc>
4626 Client session object to which the VM process will be connected (this
4627 must be in "Unlocked" state).
4628 </desc>
4629 </param>
4630 <param name="type" type="wstring" dir="in">
4631 <desc>
4632 Front-end to use for the new VM process. The following are currently supported:
4633 <ul>
4634 <li><tt>"gui"</tt>: VirtualBox Qt GUI front-end</li>
4635 <li><tt>"headless"</tt>: VBoxHeadless (VRDE Server) front-end</li>
4636 <li><tt>"sdl"</tt>: VirtualBox SDL front-end</li>
4637 <li><tt>"emergencystop"</tt>: reserved value, used for aborting
4638 the currently running VM or session owner. In this case the
4639 @a session parameter may be @c null (if it is non-null it isn't
4640 used in any way), and the @a progress return value will be always
4641 @c null. The operation completes immediately.</li>
4642 </ul>
4643 </desc>
4644 </param>
4645 <param name="environment" type="wstring" dir="in">
4646 <desc>
4647 Environment to pass to the VM process.
4648 </desc>
4649 </param>
4650 <param name="progress" type="IProgress" dir="return">
4651 <desc>Progress object to track the operation completion.</desc>
4652 </param>
4653 </method>
4654
4655 <method name="setBootOrder">
4656 <desc>
4657 Puts the given device to the specified position in
4658 the boot order.
4659
4660 To indicate that no device is associated with the given position,
4661 <link to="DeviceType_Null"/> should be used.
4662
4663 @todo setHardDiskBootOrder(), setNetworkBootOrder()
4664
4665 <result name="E_INVALIDARG">
4666 Boot @a position out of range.
4667 </result>
4668 <result name="E_NOTIMPL">
4669 Booting from USB @a device currently not supported.
4670 </result>
4671
4672 </desc>
4673 <param name="position" type="unsigned long" dir="in">
4674 <desc>
4675 Position in the boot order (@c 1 to the total number of
4676 devices the machine can boot from, as returned by
4677 <link to="ISystemProperties::maxBootPosition"/>).
4678 </desc>
4679 </param>
4680 <param name="device" type="DeviceType" dir="in">
4681 <desc>
4682 The type of the device used to boot at the given position.
4683 </desc>
4684 </param>
4685 </method>
4686
4687 <method name="getBootOrder" const="yes">
4688 <desc>
4689 Returns the device type that occupies the specified
4690 position in the boot order.
4691
4692 @todo [remove?]
4693 If the machine can have more than one device of the returned type
4694 (such as hard disks), then a separate method should be used to
4695 retrieve the individual device that occupies the given position.
4696
4697 If here are no devices at the given position, then
4698 <link to="DeviceType_Null"/> is returned.
4699
4700 @todo getHardDiskBootOrder(), getNetworkBootOrder()
4701
4702 <result name="E_INVALIDARG">
4703 Boot @a position out of range.
4704 </result>
4705
4706 </desc>
4707 <param name="position" type="unsigned long" dir="in">
4708 <desc>
4709 Position in the boot order (@c 1 to the total number of
4710 devices the machine can boot from, as returned by
4711 <link to="ISystemProperties::maxBootPosition"/>).
4712 </desc>
4713 </param>
4714 <param name="device" type="DeviceType" dir="return">
4715 <desc>
4716 Device at the given position.
4717 </desc>
4718 </param>
4719 </method>
4720
4721 <method name="attachDevice">
4722 <desc>
4723 Attaches a device and optionally mounts a medium to the given storage
4724 controller (<link to="IStorageController" />, identified by @a name),
4725 at the indicated port and device.
4726
4727 This method is intended for managing storage devices in general while a
4728 machine is powered off. It can be used to attach and detach fixed
4729 and removable media. The following kind of media can be attached
4730 to a machine:
4731
4732 <ul>
4733 <li>For fixed and removable media, you can pass in a medium that was
4734 previously opened using <link to="IVirtualBox::openMedium" />.
4735 </li>
4736
4737 <li>Only for storage devices supporting removable media (such as
4738 DVDs and floppies), you can also specify a null pointer to
4739 indicate an empty drive or one of the medium objects listed
4740 in the <link to="IHost::DVDDrives" /> and <link to="IHost::floppyDrives"/>
4741 arrays to indicate a host drive.
4742 For removable devices, you can also use <link to="IMachine::mountMedium"/>
4743 to change the media while the machine is running.
4744 </li>
4745 </ul>
4746
4747 In a VM's default configuration of virtual machines, the secondary
4748 master of the IDE controller is used for a CD/DVD drive.
4749
4750 After calling this returns successfully, a new instance of
4751 <link to="IMediumAttachment"/> will appear in the machine's list of medium
4752 attachments (see <link to="IMachine::mediumAttachments"/>).
4753
4754 See <link to="IMedium"/> and <link to="IMediumAttachment"/> for more
4755 information about attaching media.
4756
4757 The specified device slot must not have a device attached to it,
4758 or this method will fail.
4759
4760 <note>
4761 You cannot attach a device to a newly created machine until
4762 this machine's settings are saved to disk using
4763 <link to="#saveSettings"/>.
4764 </note>
4765 <note>
4766 If the medium is being attached indirectly, a new differencing medium
4767 will implicitly be created for it and attached instead. If the
4768 changes made to the machine settings (including this indirect
4769 attachment) are later cancelled using <link to="#discardSettings"/>,
4770 this implicitly created differencing medium will implicitly
4771 be deleted.
4772 </note>
4773
4774 <result name="E_INVALIDARG">
4775 SATA device, SATA port, IDE port or IDE slot out of range, or
4776 file or UUID not found.
4777 </result>
4778 <result name="VBOX_E_INVALID_OBJECT_STATE">
4779 Machine must be registered before media can be attached.
4780 </result>
4781 <result name="VBOX_E_INVALID_VM_STATE">
4782 Invalid machine state.
4783 </result>
4784 <result name="VBOX_E_OBJECT_IN_USE">
4785 A medium is already attached to this or another virtual machine.
4786 </result>
4787
4788 </desc>
4789 <param name="name" type="wstring" dir="in">
4790 <desc>Name of the storage controller to attach the device to.</desc>
4791 </param>
4792 <param name="controllerPort" type="long" dir="in">
4793 <desc>Port to attach the device to. For an IDE controller, 0 specifies
4794 the primary controller and 1 specifies the secondary controller.
4795 For a SCSI controller, this must range from 0 to 15; for a SATA controller,
4796 from 0 to 29; for an SAS controller, from 0 to 7.</desc>
4797 </param>
4798 <param name="device" type="long" dir="in">
4799 <desc>Device slot in the given port to attach the device to. This is only
4800 relevant for IDE controllers, for which 0 specifies the master device and
4801 1 specifies the slave device. For all other controller types, this must
4802 be 0.</desc>
4803 </param>
4804 <param name="type" type="DeviceType" dir="in">
4805 <desc>Device type of the attached device. For media opened by
4806 <link to="IVirtualBox::openMedium" />, this must match the device type
4807 specified there.</desc>
4808 </param>
4809 <param name="medium" type="IMedium" dir="in">
4810 <desc>Medium to mount or @c null for an empty drive.</desc>
4811 </param>
4812 </method>
4813
4814 <method name="detachDevice">
4815 <desc>
4816 Detaches the device attached to a device slot of the specified bus.
4817
4818 Detaching the device from the virtual machine is deferred. This means
4819 that the medium remains associated with the machine when this method
4820 returns and gets actually de-associated only after a successful
4821 <link to="#saveSettings"/> call. See <link to="IMedium"/>
4822 for more detailed information about attaching media.
4823
4824 <note>
4825 You cannot detach a device from a running machine.
4826 </note>
4827 <note>
4828 Detaching differencing media implicitly created by <link
4829 to="#attachDevice"/> for the indirect attachment using this
4830 method will <b>not</b> implicitly delete them. The
4831 <link to="IMedium::deleteStorage"/> operation should be
4832 explicitly performed by the caller after the medium is successfully
4833 detached and the settings are saved with
4834 <link to="#saveSettings"/>, if it is the desired action.
4835 </note>
4836
4837 <result name="VBOX_E_INVALID_VM_STATE">
4838 Attempt to detach medium from a running virtual machine.
4839 </result>
4840 <result name="VBOX_E_OBJECT_NOT_FOUND">
4841 No medium attached to given slot/bus.
4842 </result>
4843 <result name="VBOX_E_NOT_SUPPORTED">
4844 Medium format does not support storage deletion (only for implicitly
4845 created differencing media, should not happen).
4846 </result>
4847
4848 </desc>
4849 <param name="name" type="wstring" dir="in">
4850 <desc>Name of the storage controller to detach the medium from.</desc>
4851 </param>
4852 <param name="controllerPort" type="long" dir="in">
4853 <desc>Port number to detach the medium from.</desc>
4854 </param>
4855 <param name="device" type="long" dir="in">
4856 <desc>Device slot number to detach the medium from.</desc>
4857 </param>
4858 </method>
4859
4860 <method name="passthroughDevice">
4861 <desc>
4862 Sets the passthrough mode of an existing DVD device. Changing the
4863 setting while the VM is running is forbidden. The setting is only used
4864 if at VM start the device is configured as a host DVD drive, in all
4865 other cases it is ignored. The device must already exist; see
4866 <link to="IMachine::attachDevice"/> for how to attach a new device.
4867
4868 The @a controllerPort and @a device parameters specify the device slot and
4869 have have the same meaning as with <link to="IMachine::attachDevice" />.
4870
4871 <result name="E_INVALIDARG">
4872 SATA device, SATA port, IDE port or IDE slot out of range.
4873 </result>
4874 <result name="VBOX_E_INVALID_OBJECT_STATE">
4875 Attempt to modify an unregistered virtual machine.
4876 </result>
4877 <result name="VBOX_E_INVALID_VM_STATE">
4878 Invalid machine state.
4879 </result>
4880
4881 </desc>
4882 <param name="name" type="wstring" dir="in">
4883 <desc>Name of the storage controller.</desc>
4884 </param>
4885 <param name="controllerPort" type="long" dir="in">
4886 <desc>Storage controller port.</desc>
4887 </param>
4888 <param name="device" type="long" dir="in">
4889 <desc>Device slot in the given port.</desc>
4890 </param>
4891 <param name="passthrough" type="boolean" dir="in">
4892 <desc>New value for the passthrough setting.</desc>
4893 </param>
4894 </method>
4895
4896 <method name="temporaryEjectDevice">
4897 <desc>
4898 Sets the behavior for guest-triggered medium eject. In some situations
4899 it is desirable that such ejects update the VM configuration, and in
4900 others the eject should keep the VM configuration. The device must
4901 already exist; see <link to="IMachine::attachDevice"/> for how to
4902 attach a new device.
4903
4904 The @a controllerPort and @a device parameters specify the device slot and
4905 have have the same meaning as with <link to="IMachine::attachDevice" />.
4906
4907 <result name="E_INVALIDARG">
4908 SATA device, SATA port, IDE port or IDE slot out of range.
4909 </result>
4910 <result name="VBOX_E_INVALID_OBJECT_STATE">
4911 Attempt to modify an unregistered virtual machine.
4912 </result>
4913 <result name="VBOX_E_INVALID_VM_STATE">
4914 Invalid machine state.
4915 </result>
4916
4917 </desc>
4918 <param name="name" type="wstring" dir="in">
4919 <desc>Name of the storage controller.</desc>
4920 </param>
4921 <param name="controllerPort" type="long" dir="in">
4922 <desc>Storage controller port.</desc>
4923 </param>
4924 <param name="device" type="long" dir="in">
4925 <desc>Device slot in the given port.</desc>
4926 </param>
4927 <param name="temporaryEject" type="boolean" dir="in">
4928 <desc>New value for the eject behavior.</desc>
4929 </param>
4930 </method>
4931
4932 <method name="nonRotationalDevice">
4933 <desc>
4934 Sets a flag in the device information which indicates that the medium
4935 is not based on rotational technology, i.e. that the access times are
4936 more or less independent of the position on the medium. This may or may
4937 not be supported by a particular drive, and is silently ignored in the
4938 latter case. At the moment only hard disks (which is a misnomer in this
4939 context) accept this setting. Changing the setting while the VM is
4940 running is forbidden. The device must already exist; see
4941 <link to="IMachine::attachDevice"/> for how to attach a new device.
4942
4943 The @a controllerPort and @a device parameters specify the device slot and
4944 have have the same meaning as with <link to="IMachine::attachDevice" />.
4945
4946 <result name="E_INVALIDARG">
4947 SATA device, SATA port, IDE port or IDE slot out of range.
4948 </result>
4949 <result name="VBOX_E_INVALID_OBJECT_STATE">
4950 Attempt to modify an unregistered virtual machine.
4951 </result>
4952 <result name="VBOX_E_INVALID_VM_STATE">
4953 Invalid machine state.
4954 </result>
4955
4956 </desc>
4957 <param name="name" type="wstring" dir="in">
4958 <desc>Name of the storage controller.</desc>
4959 </param>
4960 <param name="controllerPort" type="long" dir="in">
4961 <desc>Storage controller port.</desc>
4962 </param>
4963 <param name="device" type="long" dir="in">
4964 <desc>Device slot in the given port.</desc>
4965 </param>
4966 <param name="nonRotational" type="boolean" dir="in">
4967 <desc>New value for the non-rotational device flag.</desc>
4968 </param>
4969 </method>
4970
4971 <method name="setAutoDiscardForDevice">
4972 <desc>
4973 Sets a flag in the device information which indicates that the medium
4974 supports discarding unsused blocks (called trimming for SATA or unmap
4975 for SCSI devices) .This may or may not be supported by a particular drive,
4976 and is silently ignored in the latter case. At the moment only hard disks
4977 (which is a misnomer in this context) accept this setting. Changing the
4978 setting while the VM is running is forbidden. The device must already
4979 exist; see <link to="IMachine::attachDevice"/> for how to attach a new
4980 device.
4981
4982 The @a controllerPort and @a device parameters specify the device slot and
4983 have have the same meaning as with <link to="IMachine::attachDevice" />.
4984
4985 <result name="E_INVALIDARG">
4986 SATA device, SATA port, SCSI port out of range.
4987 </result>
4988 <result name="VBOX_E_INVALID_OBJECT_STATE">
4989 Attempt to modify an unregistered virtual machine.
4990 </result>
4991 <result name="VBOX_E_INVALID_VM_STATE">
4992 Invalid machine state.
4993 </result>
4994
4995 </desc>
4996 <param name="name" type="wstring" dir="in">
4997 <desc>Name of the storage controller.</desc>
4998 </param>
4999 <param name="controllerPort" type="long" dir="in">
5000 <desc>Storage controller port.</desc>
5001 </param>
5002 <param name="device" type="long" dir="in">
5003 <desc>Device slot in the given port.</desc>
5004 </param>
5005 <param name="discard" type="boolean" dir="in">
5006 <desc>New value for the discard device flag.</desc>
5007 </param>
5008 </method>
5009
5010 <method name="setBandwidthGroupForDevice">
5011 <desc>
5012 Sets the bandwidth group of an existing storage device.
5013 The device must already exist; see <link to="IMachine::attachDevice"/>
5014 for how to attach a new device.
5015
5016 The @a controllerPort and @a device parameters specify the device slot and
5017 have have the same meaning as with <link to="IMachine::attachDevice" />.
5018
5019 <result name="E_INVALIDARG">
5020 SATA device, SATA port, IDE port or IDE slot out of range.
5021 </result>
5022 <result name="VBOX_E_INVALID_OBJECT_STATE">
5023 Attempt to modify an unregistered virtual machine.
5024 </result>
5025 <result name="VBOX_E_INVALID_VM_STATE">
5026 Invalid machine state.
5027 </result>
5028
5029 </desc>
5030 <param name="name" type="wstring" dir="in">
5031 <desc>Name of the storage controller.</desc>
5032 </param>
5033 <param name="controllerPort" type="long" dir="in">
5034 <desc>Storage controller port.</desc>
5035 </param>
5036 <param name="device" type="long" dir="in">
5037 <desc>Device slot in the given port.</desc>
5038 </param>
5039 <param name="bandwidthGroup" type="IBandwidthGroup" dir="in">
5040 <desc>New value for the bandwidth group or @c null for no group.</desc>
5041 </param>
5042 </method>
5043
5044 <method name="UnmountMedium">
5045 <desc>
5046 Unmounts any currently mounted medium (<link to="IMedium" />,
5047 identified by the given UUID @a id) to the given storage controller
5048 (<link to="IStorageController" />, identified by @a name),
5049 at the indicated port and device. The device must already exist;
5050
5051 This method is intended only for managing removable media, where the
5052 device is fixed but media is changeable at runtime (such as DVDs
5053 and floppies). It cannot be used for fixed media such as hard disks.
5054
5055 The @a controllerPort and @a device parameters specify the device slot
5056 and have have the same meaning as with
5057 <link to="IMachine::attachDevice" />.
5058
5059 The specified device slot must have a medium mounted, which will be
5060 unmounted. If there is no mounted medium it will do nothing.
5061 See <link to="IMedium"/> for more detailed information about
5062 attaching/unmounting media.
5063
5064 <result name="E_INVALIDARG">
5065 SATA device, SATA port, IDE port or IDE slot out of range.
5066 </result>
5067 <result name="VBOX_E_INVALID_OBJECT_STATE">
5068 Attempt to unmount medium that is not removeable - not dvd or floppy.
5069 </result>
5070 <result name="VBOX_E_INVALID_VM_STATE">
5071 Invalid machine state.
5072 </result>
5073 <result name="VBOX_E_OBJECT_IN_USE">
5074 Medium already attached to this or another virtual machine.
5075 </result>
5076 <result name="VBOX_E_OBJECT_NOT_FOUND">
5077 Medium not attached to specified port, device, controller.
5078 </result>
5079
5080 </desc>
5081 <param name="name" type="wstring" dir="in">
5082 <desc>Name of the storage controller to unmount the medium from.</desc>
5083 </param>
5084 <param name="controllerPort" type="long" dir="in">
5085 <desc>Port to unmount the medium from.</desc>
5086 </param>
5087 <param name="device" type="long" dir="in">
5088 <desc>Device slot in the given port to unmount the medium from.</desc>
5089 </param>
5090 <param name="force" type="boolean" dir="in">
5091 <desc>Allows to force unmount of a medium which is locked by
5092 the device slot in the given port medium is attached to.</desc>
5093 </param>
5094 </method>
5095
5096 <method name="mountMedium">
5097 <desc>
5098 Mounts a medium (<link to="IMedium" />, identified
5099 by the given UUID @a id) to the given storage controller
5100 (<link to="IStorageController" />, identified by @a name),
5101 at the indicated port and device. The device must already exist;
5102 see <link to="IMachine::attachDevice"/> for how to attach a new device.
5103
5104 This method is intended only for managing removable media, where the
5105 device is fixed but media is changeable at runtime (such as DVDs
5106 and floppies). It cannot be used for fixed media such as hard disks.
5107
5108 The @a controllerPort and @a device parameters specify the device slot and
5109 have have the same meaning as with <link to="IMachine::attachDevice" />.
5110
5111 The specified device slot can have a medium mounted, which will be
5112 unmounted first. Specifying a zero UUID (or an empty string) for
5113 @a medium does just an unmount.
5114
5115 See <link to="IMedium"/> for more detailed information about
5116 attaching media.
5117
5118 <result name="E_INVALIDARG">
5119 SATA device, SATA port, IDE port or IDE slot out of range.
5120 </result>
5121 <result name="VBOX_E_INVALID_OBJECT_STATE">
5122 Attempt to attach medium to an unregistered virtual machine.
5123 </result>
5124 <result name="VBOX_E_INVALID_VM_STATE">
5125 Invalid machine state.
5126 </result>
5127 <result name="VBOX_E_OBJECT_IN_USE">
5128 Medium already attached to this or another virtual machine.
5129 </result>
5130
5131 </desc>
5132 <param name="name" type="wstring" dir="in">
5133 <desc>Name of the storage controller to attach the medium to.</desc>
5134 </param>
5135 <param name="controllerPort" type="long" dir="in">
5136 <desc>Port to attach the medium to.</desc>
5137 </param>
5138 <param name="device" type="long" dir="in">
5139 <desc>Device slot in the given port to attach the medium to.</desc>
5140 </param>
5141 <param name="medium" type="IMedium" dir="in">
5142 <desc>Medium to mount or @c null for an empty drive.</desc>
5143 </param>
5144 <param name="force" type="boolean" dir="in">
5145 <desc>Allows to force unmount/mount of a medium which is locked by
5146 the device slot in the given port to attach the medium to.</desc>
5147 </param>
5148 </method>
5149
5150 <method name="getMedium" const="yes">
5151 <desc>
5152 Returns the virtual medium attached to a device slot of the specified
5153 bus.
5154
5155 Note that if the medium was indirectly attached by
5156 <link to="#mountMedium"/> to the given device slot then this
5157 method will return not the same object as passed to the
5158 <link to="#mountMedium"/> call. See <link to="IMedium"/> for
5159 more detailed information about mounting a medium.
5160
5161 <result name="VBOX_E_OBJECT_NOT_FOUND">
5162 No medium attached to given slot/bus.
5163 </result>
5164
5165 </desc>
5166 <param name="name" type="wstring" dir="in">
5167 <desc>Name of the storage controller the medium is attached to.</desc>
5168 </param>
5169 <param name="controllerPort" type="long" dir="in">
5170 <desc>Port to query.</desc>
5171 </param>
5172 <param name="device" type="long" dir="in">
5173 <desc>Device slot in the given port to query.</desc>
5174 </param>
5175 <param name="medium" type="IMedium" dir="return">
5176 <desc>Attached medium object.</desc>
5177 </param>
5178 </method>
5179
5180 <method name="getMediumAttachmentsOfController" const="yes">
5181 <desc>
5182 Returns an array of medium attachments which are attached to the
5183 the controller with the given name.
5184
5185 <result name="VBOX_E_OBJECT_NOT_FOUND">
5186 A storage controller with given name doesn't exist.
5187 </result>
5188 </desc>
5189 <param name="name" type="wstring" dir="in"/>
5190 <param name="mediumAttachments" type="IMediumAttachment" safearray="yes" dir="return"/>
5191 </method>
5192
5193 <method name="getMediumAttachment" const="yes">
5194 <desc>
5195 Returns a medium attachment which corresponds to the controller with
5196 the given name, on the given port and device slot.
5197
5198 <result name="VBOX_E_OBJECT_NOT_FOUND">
5199 No attachment exists for the given controller/port/device combination.
5200 </result>
5201 </desc>
5202 <param name="name" type="wstring" dir="in"/>
5203 <param name="controllerPort" type="long" dir="in"/>
5204 <param name="device" type="long" dir="in"/>
5205 <param name="attachment" type="IMediumAttachment" dir="return"/>
5206 </method>
5207
5208 <method name="attachHostPciDevice">
5209 <desc>
5210 Attaches host PCI device with the given (host) PCI address to the
5211 PCI bus of the virtual machine. Please note, that this operation
5212 is two phase, as real attachment will happen when VM will start,
5213 and most information will be delivered as IHostPciDevicePlugEvent
5214 on IVirtualBox event source.
5215
5216 <see><link to="IHostPciDevicePlugEvent"/></see>
5217
5218 <result name="VBOX_E_INVALID_VM_STATE">
5219 Virtual machine state is not stopped (PCI hotplug not yet implemented).
5220 </result>
5221 <result name="VBOX_E_PDM_ERROR">
5222 Virtual machine does not have a PCI controller allowing attachment of physical devices.
5223 </result>
5224 <result name="VBOX_E_NOT_SUPPORTED">
5225 Hardware or host OS doesn't allow PCI device passthrought.
5226 </result>
5227 </desc>
5228 <param name="hostAddress" type="long" dir="in">
5229 <desc>Address of the host PCI device.</desc>
5230 </param>
5231 <param name="desiredGuestAddress" type="long" dir="in">
5232 <desc>Desired position of this device on guest PCI bus.</desc>
5233 </param>
5234 <param name="tryToUnbind" type="boolean" dir="in">
5235 <desc>If VMM shall try to unbind existing drivers from the
5236 device before attaching it to the guest.</desc>
5237 </param>
5238 </method>
5239
5240 <method name="detachHostPciDevice">
5241 <desc>
5242 Detach host PCI device from the virtual machine.
5243 Also HostPciDevicePlugEvent on IVirtualBox event source
5244 will be delivered. As currently we don't support hot device
5245 unplug, IHostPciDevicePlugEvent event is delivered immediately.
5246
5247 <see><link to="IHostPciDevicePlugEvent"/></see>
5248
5249 <result name="VBOX_E_INVALID_VM_STATE">
5250 Virtual machine state is not stopped (PCI hotplug not yet implemented).
5251 </result>
5252 <result name="VBOX_E_OBJECT_NOT_FOUND">
5253 This host device is not attached to this machine.
5254 </result>
5255 <result name="VBOX_E_PDM_ERROR">
5256 Virtual machine does not have a PCI controller allowing attachment of physical devices.
5257 </result>
5258 <result name="VBOX_E_NOT_SUPPORTED">
5259 Hardware or host OS doesn't allow PCI device passthrought.
5260 </result>
5261 </desc>
5262 <param name="hostAddress" type="long" dir="in">
5263 <desc>Address of the host PCI device.</desc>
5264 </param>
5265 </method>
5266
5267 <method name="getNetworkAdapter" const="yes">
5268 <desc>
5269 Returns the network adapter associated with the given slot.
5270 Slots are numbered sequentially, starting with zero. The total
5271 number of adapters per machine is defined by the
5272 <link to="ISystemProperties::getMaxNetworkAdapters"/> property,
5273 so the maximum slot number is one less than that property's value.
5274
5275 <result name="E_INVALIDARG">
5276 Invalid @a slot number.
5277 </result>
5278
5279 </desc>
5280 <param name="slot" type="unsigned long" dir="in"/>
5281 <param name="adapter" type="INetworkAdapter" dir="return"/>
5282 </method>
5283
5284 <method name="addStorageController">
5285 <desc>
5286 Adds a new storage controller (SCSI, SAS or SATA controller) to the
5287 machine and returns it as an instance of
5288 <link to="IStorageController" />.
5289
5290 @a name identifies the controller for subsequent calls such as
5291 <link to="#getStorageControllerByName" />,
5292 <link to="#getStorageControllerByInstance" />,
5293 <link to="#removeStorageController" />,
5294 <link to="#attachDevice" /> or <link to="#mountMedium" />.
5295
5296 After the controller has been added, you can set its exact
5297 type by setting the <link to="IStorageController::controllerType" />.
5298
5299 <result name="VBOX_E_OBJECT_IN_USE">
5300 A storage controller with given name exists already.
5301 </result>
5302 <result name="E_INVALIDARG">
5303 Invalid @a controllerType.
5304 </result>
5305 </desc>
5306 <param name="name" type="wstring" dir="in"/>
5307 <param name="connectionType" type="StorageBus" dir="in"/>
5308 <param name="controller" type="IStorageController" dir="return"/>
5309 </method>
5310
5311 <method name="getStorageControllerByName" const="yes">
5312 <desc>
5313 Returns a storage controller with the given name.
5314
5315 <result name="VBOX_E_OBJECT_NOT_FOUND">
5316 A storage controller with given name doesn't exist.
5317 </result>
5318 </desc>
5319 <param name="name" type="wstring" dir="in"/>
5320 <param name="storageController" type="IStorageController" dir="return"/>
5321 </method>
5322
5323 <method name="getStorageControllerByInstance" const="yes">
5324 <desc>
5325 Returns a storage controller with the given instance number.
5326
5327 <result name="VBOX_E_OBJECT_NOT_FOUND">
5328 A storage controller with given instance number doesn't exist.
5329 </result>
5330 </desc>
5331 <param name="instance" type="unsigned long" dir="in"/>
5332 <param name="storageController" type="IStorageController" dir="return"/>
5333 </method>
5334
5335 <method name="removeStorageController">
5336 <desc>
5337 Removes a storage controller from the machine with all devices attached to it.
5338
5339 <result name="VBOX_E_OBJECT_NOT_FOUND">
5340 A storage controller with given name doesn't exist.
5341 </result>
5342 <result name="VBOX_E_NOT_SUPPORTED">
5343 Medium format does not support storage deletion (only for implicitly
5344 created differencing media, should not happen).
5345 </result>
5346 </desc>
5347 <param name="name" type="wstring" dir="in"/>
5348 </method>
5349
5350 <method name="setStorageControllerBootable">
5351 <desc>
5352 Sets the bootable flag of the storage controller with the given name.
5353
5354 <result name="VBOX_E_OBJECT_NOT_FOUND">
5355 A storage controller with given name doesn't exist.
5356 </result>
5357 <result name="VBOX_E_OBJECT_IN_USE">
5358 Another storage controller is marked as bootable already.
5359 </result>
5360 </desc>
5361 <param name="name" type="wstring" dir="in"/>
5362 <param name="bootable" type="boolean" dir="in"/>
5363 </method>
5364
5365 <method name="getSerialPort" const="yes">
5366 <desc>
5367 Returns the serial port associated with the given slot.
5368 Slots are numbered sequentially, starting with zero. The total
5369 number of serial ports per machine is defined by the
5370 <link to="ISystemProperties::serialPortCount"/> property,
5371 so the maximum slot number is one less than that property's value.
5372
5373 <result name="E_INVALIDARG">
5374 Invalid @a slot number.
5375 </result>
5376
5377 </desc>
5378 <param name="slot" type="unsigned long" dir="in"/>
5379 <param name="port" type="ISerialPort" dir="return"/>
5380 </method>
5381
5382 <method name="getParallelPort" const="yes">
5383 <desc>
5384 Returns the parallel port associated with the given slot.
5385 Slots are numbered sequentially, starting with zero. The total
5386 number of parallel ports per machine is defined by the
5387 <link to="ISystemProperties::parallelPortCount"/> property,
5388 so the maximum slot number is one less than that property's value.
5389
5390 <result name="E_INVALIDARG">
5391 Invalid @a slot number.
5392 </result>
5393
5394 </desc>
5395 <param name="slot" type="unsigned long" dir="in"/>
5396 <param name="port" type="IParallelPort" dir="return"/>
5397 </method>
5398
5399 <method name="getExtraDataKeys">
5400 <desc>
5401 Returns an array representing the machine-specific extra data keys
5402 which currently have values defined.
5403 </desc>
5404 <param name="value" type="wstring" dir="return" safearray="yes">
5405 <desc>Array of extra data keys.</desc>
5406 </param>
5407 </method>
5408
5409 <method name="getExtraData">
5410 <desc>
5411 Returns associated machine-specific extra data.
5412
5413 If the requested data @a key does not exist, this function will
5414 succeed and return an empty string in the @a value argument.
5415
5416 <result name="VBOX_E_FILE_ERROR">
5417 Settings file not accessible.
5418 </result>
5419 <result name="VBOX_E_XML_ERROR">
5420 Could not parse the settings file.
5421 </result>
5422
5423 </desc>
5424 <param name="key" type="wstring" dir="in">
5425 <desc>Name of the data key to get.</desc>
5426 </param>
5427 <param name="value" type="wstring" dir="return">
5428 <desc>Value of the requested data key.</desc>
5429 </param>
5430 </method>
5431
5432 <method name="setExtraData">
5433 <desc>
5434 Sets associated machine-specific extra data.
5435
5436 If you pass @c null or an empty string as a key @a value, the given
5437 @a key will be deleted.
5438
5439 <note>
5440 Before performing the actual data change, this method will ask all
5441 registered listeners using the
5442 <link to="IExtraDataCanChangeEvent"/>
5443 notification for a permission. If one of the listeners refuses the
5444 new value, the change will not be performed.
5445 </note>
5446 <note>
5447 On success, the
5448 <link to="IExtraDataChangedEvent"/> notification
5449 is called to inform all registered listeners about a successful data
5450 change.
5451 </note>
5452 <note>
5453 This method can be called outside the machine session and therefore
5454 it's a caller's responsibility to handle possible race conditions
5455 when several clients change the same key at the same time.
5456 </note>
5457
5458 <result name="VBOX_E_FILE_ERROR">
5459 Settings file not accessible.
5460 </result>
5461 <result name="VBOX_E_XML_ERROR">
5462 Could not parse the settings file.
5463 </result>
5464
5465 </desc>
5466 <param name="key" type="wstring" dir="in">
5467 <desc>Name of the data key to set.</desc>
5468 </param>
5469 <param name="value" type="wstring" dir="in">
5470 <desc>Value to assign to the key.</desc>
5471 </param>
5472 </method>
5473
5474 <method name="getCPUProperty" const="yes">
5475 <desc>
5476 Returns the virtual CPU boolean value of the specified property.
5477
5478 <result name="E_INVALIDARG">
5479 Invalid property.
5480 </result>
5481
5482 </desc>
5483 <param name="property" type="CPUPropertyType" dir="in">
5484 <desc>
5485 Property type to query.
5486 </desc>
5487 </param>
5488 <param name="value" type="boolean" dir="return">
5489 <desc>
5490 Property value.
5491 </desc>
5492 </param>
5493 </method>
5494
5495 <method name="setCPUProperty">
5496 <desc>
5497 Sets the virtual CPU boolean value of the specified property.
5498
5499 <result name="E_INVALIDARG">
5500 Invalid property.
5501 </result>
5502
5503 </desc>
5504 <param name="property" type="CPUPropertyType" dir="in">
5505 <desc>
5506 Property type to query.
5507 </desc>
5508 </param>
5509 <param name="value" type="boolean" dir="in">
5510 <desc>
5511 Property value.
5512 </desc>
5513 </param>
5514 </method>
5515
5516 <method name="getCPUIDLeaf" const="yes">
5517 <desc>
5518 Returns the virtual CPU cpuid information for the specified leaf.
5519
5520 Currently supported index values for cpuid:
5521 Standard CPUID leafs: 0 - 0xA
5522 Extended CPUID leafs: 0x80000000 - 0x8000000A
5523
5524 See the Intel and AMD programmer's manuals for detailed information
5525 about the cpuid instruction and its leafs.
5526 <result name="E_INVALIDARG">
5527 Invalid id.
5528 </result>
5529
5530 </desc>
5531 <param name="id" type="unsigned long" dir="in">
5532 <desc>
5533 CPUID leaf index.
5534 </desc>
5535 </param>
5536 <param name="valEax" type="unsigned long" dir="out">
5537 <desc>
5538 CPUID leaf value for register eax.
5539 </desc>
5540 </param>
5541 <param name="valEbx" type="unsigned long" dir="out">
5542 <desc>
5543 CPUID leaf value for register ebx.
5544 </desc>
5545 </param>
5546 <param name="valEcx" type="unsigned long" dir="out">
5547 <desc>
5548 CPUID leaf value for register ecx.
5549 </desc>
5550 </param>
5551 <param name="valEdx" type="unsigned long" dir="out">
5552 <desc>
5553 CPUID leaf value for register edx.
5554 </desc>
5555 </param>
5556 </method>
5557
5558 <method name="setCPUIDLeaf">
5559 <desc>
5560 Sets the virtual CPU cpuid information for the specified leaf. Note that these values
5561 are not passed unmodified. VirtualBox clears features that it doesn't support.
5562
5563 Currently supported index values for cpuid:
5564 Standard CPUID leafs: 0 - 0xA
5565 Extended CPUID leafs: 0x80000000 - 0x8000000A
5566
5567 See the Intel and AMD programmer's manuals for detailed information
5568 about the cpuid instruction and its leafs.
5569
5570 Do not use this method unless you know exactly what you're doing. Misuse can lead to
5571 random crashes inside VMs.
5572 <result name="E_INVALIDARG">
5573 Invalid id.
5574 </result>
5575
5576 </desc>
5577 <param name="id" type="unsigned long" dir="in">
5578 <desc>
5579 CPUID leaf index.
5580 </desc>
5581 </param>
5582 <param name="valEax" type="unsigned long" dir="in">
5583 <desc>
5584 CPUID leaf value for register eax.
5585 </desc>
5586 </param>
5587 <param name="valEbx" type="unsigned long" dir="in">
5588 <desc>
5589 CPUID leaf value for register ebx.
5590 </desc>
5591 </param>
5592 <param name="valEcx" type="unsigned long" dir="in">
5593 <desc>
5594 CPUID leaf value for register ecx.
5595 </desc>
5596 </param>
5597 <param name="valEdx" type="unsigned long" dir="in">
5598 <desc>
5599 CPUID leaf value for register edx.
5600 </desc>
5601 </param>
5602 </method>
5603
5604 <method name="removeCPUIDLeaf">
5605 <desc>
5606 Removes the virtual CPU cpuid leaf for the specified index
5607
5608 <result name="E_INVALIDARG">
5609 Invalid id.
5610 </result>
5611
5612 </desc>
5613 <param name="id" type="unsigned long" dir="in">
5614 <desc>
5615 CPUID leaf index.
5616 </desc>
5617 </param>
5618 </method>
5619
5620 <method name="removeAllCPUIDLeaves">
5621 <desc>
5622 Removes all the virtual CPU cpuid leaves
5623 </desc>
5624 </method>
5625
5626 <method name="getHWVirtExProperty" const="yes">
5627 <desc>
5628 Returns the value of the specified hardware virtualization boolean property.
5629
5630 <result name="E_INVALIDARG">
5631 Invalid property.
5632 </result>
5633
5634 </desc>
5635 <param name="property" type="HWVirtExPropertyType" dir="in">
5636 <desc>
5637 Property type to query.
5638 </desc>
5639 </param>
5640 <param name="value" type="boolean" dir="return">
5641 <desc>
5642 Property value.
5643 </desc>
5644 </param>
5645 </method>
5646
5647 <method name="setHWVirtExProperty">
5648 <desc>
5649 Sets a new value for the specified hardware virtualization boolean property.
5650
5651 <result name="E_INVALIDARG">
5652 Invalid property.
5653 </result>
5654
5655 </desc>
5656 <param name="property" type="HWVirtExPropertyType" dir="in">
5657 <desc>
5658 Property type to set.
5659 </desc>
5660 </param>
5661 <param name="value" type="boolean" dir="in">
5662 <desc>
5663 New property value.
5664 </desc>
5665 </param>
5666 </method>
5667
5668 <method name="saveSettings">
5669 <desc>
5670 Saves any changes to machine settings made since the session
5671 has been opened or a new machine has been created, or since the
5672 last call to <link to="#saveSettings"/> or <link to="#discardSettings"/>.
5673 For registered machines, new settings become visible to all
5674 other VirtualBox clients after successful invocation of this
5675 method.
5676 <note>
5677 The method sends <link to="IMachineDataChangedEvent"/>
5678 notification event after the configuration has been successfully
5679 saved (only for registered machines).
5680 </note>
5681 <note>
5682 Calling this method is only valid on instances returned
5683 by <link to="ISession::machine"/> and on new machines
5684 created by <link to="IVirtualBox::createMachine"/> but not
5685 yet registered, or on unregistered machines after calling
5686 <link to="IMachine::unregister"/>.
5687 </note>
5688
5689 <result name="VBOX_E_FILE_ERROR">
5690 Settings file not accessible.
5691 </result>
5692 <result name="VBOX_E_XML_ERROR">
5693 Could not parse the settings file.
5694 </result>
5695 <result name="E_ACCESSDENIED">
5696 Modification request refused.
5697 </result>
5698
5699 </desc>
5700 </method>
5701
5702 <method name="discardSettings">
5703 <desc>
5704 Discards any changes to the machine settings made since the session
5705 has been opened or since the last call to <link to="#saveSettings"/>
5706 or <link to="#discardSettings"/>.
5707 <note>
5708 Calling this method is only valid on instances returned
5709 by <link to="ISession::machine"/> and on new machines
5710 created by <link to="IVirtualBox::createMachine"/> or
5711 opened by <link to="IVirtualBox::openMachine"/> but not
5712 yet registered, or on unregistered machines after calling
5713 <link to="IMachine::unregister"/>.
5714 </note>
5715
5716 <result name="VBOX_E_INVALID_VM_STATE">
5717 Virtual machine is not mutable.
5718 </result>
5719
5720 </desc>
5721 </method>
5722
5723 <method name="unregister">
5724 <desc>
5725 Unregisters a machine previously registered with
5726 <link to="IVirtualBox::registerMachine"/> and optionally do additional
5727 cleanup before the machine is unregistered.
5728
5729 This method does not delete any files. It only changes the machine configuration and
5730 the list of registered machines in the VirtualBox object. To delete the files which
5731 belonged to the machine, including the XML file of the machine itself, call
5732 <link to="#delete"/>, optionally with the array of IMedium objects which was returned
5733 from this method.
5734
5735 How thoroughly this method cleans up the machine configuration before unregistering
5736 the machine depends on the @a cleanupMode argument.
5737
5738 <ul>
5739 <li>With "UnregisterOnly", the machine will only be unregistered, but no additional
5740 cleanup will be performed. The call will fail if the machine is in "Saved" state
5741 or has any snapshots or any media attached (see <link to="IMediumAttachment" />).
5742 It is the responsibility of the caller to delete all such configuration in this mode.
5743 In this mode, the API behaves like the former @c IVirtualBox::unregisterMachine() API
5744 which it replaces.</li>
5745 <li>With "DetachAllReturnNone", the call will succeed even if the machine is in "Saved"
5746 state or if it has snapshots or media attached. All media attached to the current machine
5747 state or in snapshots will be detached. No medium objects will be returned;
5748 all of the machine's media will remain open.</li>
5749 <li>With "DetachAllReturnHardDisksOnly", the call will behave like with "DetachAllReturnNone",
5750 except that all the hard disk medium objects which were detached from the machine will
5751 be returned as an array. This allows for quickly passing them to the <link to="#delete" />
5752 API for closing and deletion.</li>
5753 <li>With "Full", the call will behave like with "DetachAllReturnHardDisksOnly", except
5754 that all media will be returned in the array, including removable media like DVDs and
5755 floppies. This might be useful if the user wants to inspect in detail which media were
5756 attached to the machine. Be careful when passing the media array to <link to="#delete" />
5757 in that case because users will typically want to preserve ISO and RAW image files.</li>
5758 </ul>
5759
5760 A typical implementation will use "DetachAllReturnHardDisksOnly" and then pass the
5761 resulting IMedium array to <link to="#delete"/>. This way, the machine is completely
5762 deleted with all its saved states and hard disk images, but images for removable
5763 drives (such as ISO and RAW files) will remain on disk.
5764
5765 This API does not verify whether the media files returned in the array are still
5766 attached to other machines (i.e. shared between several machines). If such a shared
5767 image is passed to <link to="#delete" /> however, closing the image will fail there
5768 and the image will be silently skipped.
5769
5770 This API may, however, move media from this machine's media registry to other media
5771 registries (see <link to="IMedium" /> for details on media registries). For machines
5772 created with VirtualBox 4.0 or later, if media from this machine's media registry
5773 are also attached to another machine (shared attachments), each such medium will be
5774 moved to another machine's registry. This is because without this machine's media
5775 registry, the other machine cannot find its media any more and would become inaccessible.
5776
5777 This API implicitly calls <link to="#saveSettings"/> to save all current machine settings
5778 before unregistering it. It may also silently call <link to="#saveSettings"/> on other machines
5779 if media are moved to other machines' media registries.
5780
5781 After successful method invocation, the <link to="IMachineRegisteredEvent"/> event
5782 is fired.
5783
5784 The call will fail if the machine is currently locked (see <link to="ISession" />).
5785
5786 <note>
5787 If the given machine is inaccessible (see <link to="#accessible"/>), it
5788 will be unregistered and fully uninitialized right afterwards. As a result,
5789 the returned machine object will be unusable and an attempt to call
5790 <b>any</b> method will return the "Object not ready" error.
5791 </note>
5792
5793 <result name="VBOX_E_INVALID_OBJECT_STATE">
5794 Machine is currently locked for a session.
5795 </result>
5796 </desc>
5797
5798 <param name="cleanupMode" type="CleanupMode" dir="in">
5799 <desc>How to clean up after the machine has been unregistered.</desc>
5800 </param>
5801 <param name="aMedia" type="IMedium" safearray="yes" dir="return">
5802 <desc>List of media detached from the machine, depending on the @a cleanupMode parameter.</desc>
5803 </param>
5804 </method>
5805
5806 <method name="delete">
5807 <desc>
5808 Deletes the files associated with this machine from disk. If medium objects are passed
5809 in with the @a aMedia argument, they are closed and, if closing was successful, their
5810 storage files are deleted as well. For convenience, this array of media files can be
5811 the same as the one returned from a previous <link to="#unregister" /> call.
5812
5813 This method must only be called on machines which are either write-locked (i.e. on instances
5814 returned by <link to="ISession::machine"/>) or on unregistered machines (i.e. not yet
5815 registered machines created by <link to="IVirtualBox::createMachine"/> or opened by
5816 <link to="IVirtualBox::openMachine"/>, or after having called <link to="#unregister"/>).
5817
5818 The following files will be deleted by this method:
5819 <ul>
5820 <li>If <link to="#unregister" /> had been previously called with a @a cleanupMode
5821 argument other than "UnregisterOnly", this will delete all saved state files that
5822 the machine had in use; possibly one if the machine was in "Saved" state and one
5823 for each online snapshot that the machine had.</li>
5824 <li>On each medium object passed in the @a aMedia array, this will call
5825 <link to="IMedium::close" />. If that succeeds, this will attempt to delete the
5826 medium's storage on disk. Since the <link to="IMedium::close"/> call will fail if the medium is still
5827 in use, e.g. because it is still attached to a second machine; in that case the
5828 storage will not be deleted.</li>
5829 <li>Finally, the machine's own XML file will be deleted.</li>
5830 </ul>
5831
5832 Since deleting large disk image files can be a time-consuming I/O operation, this
5833 method operates asynchronously and returns an IProgress object to allow the caller
5834 to monitor the progress. There will be one sub-operation for each file that is
5835 being deleted (saved state or medium storage file).
5836
5837 <note>
5838 <link to="#settingsModified"/> will return @c true after this
5839 method successfully returns.
5840 </note>
5841
5842 <result name="VBOX_E_INVALID_VM_STATE">
5843 Machine is registered but not write-locked.
5844 </result>
5845 <result name="VBOX_E_IPRT_ERROR">
5846 Could not delete the settings file.
5847 </result>
5848 </desc>
5849 <param name="aMedia" type="IMedium" safearray="yes" dir="in">
5850 <desc>List of media to be closed and whose storage files will be deleted.</desc>
5851 </param>
5852 <param name="aProgress" type="IProgress" dir="return">
5853 <desc>Progress object to track the operation completion.</desc>
5854 </param>
5855 </method>
5856
5857 <method name="export">
5858 <desc>Exports the machine to an OVF appliance. See <link to="IAppliance" /> for the
5859 steps required to export VirtualBox machines to OVF.
5860 </desc>
5861
5862 <param name="aAppliance" type="IAppliance" dir="in">
5863 <desc>Appliance to export this machine to.</desc>
5864 </param>
5865 <param name="location" type="wstring" dir="in">
5866 <desc>The target location.</desc>
5867 </param>
5868 <param name="aDescription" type="IVirtualSystemDescription" dir="return">
5869 <desc>VirtualSystemDescription object which is created for this machine.</desc>
5870 </param>
5871 </method >
5872
5873 <method name="findSnapshot">
5874 <desc>
5875 Returns a snapshot of this machine with the given name or UUID.
5876
5877 Returns a snapshot of this machine with the given UUID.
5878 A @c null argument can be used to obtain the first snapshot
5879 taken on this machine. To traverse the whole tree of snapshots
5880 starting from the root, inspect the root snapshot's
5881 <link to="ISnapshot::children" /> attribute and recurse over those children.
5882
5883 <result name="VBOX_E_OBJECT_NOT_FOUND">
5884 Virtual machine has no snapshots or snapshot not found.
5885 </result>
5886
5887 </desc>
5888 <param name="nameOrId" type="wstring" dir="in">
5889 <desc>What to search for. Name or UUID of the snapshot to find</desc>
5890 </param>
5891 <param name="snapshot" type="ISnapshot" dir="return">
5892 <desc>Snapshot object with the given name.</desc>
5893 </param>
5894 </method>
5895
5896 <method name="createSharedFolder">
5897 <desc>
5898 Creates a new permanent shared folder by associating the given logical
5899 name with the given host path, adds it to the collection of shared
5900 folders and starts sharing it. Refer to the description of
5901 <link to="ISharedFolder"/> to read more about logical names.
5902
5903 <result name="VBOX_E_OBJECT_IN_USE">
5904 Shared folder already exists.
5905 </result>
5906 <result name="VBOX_E_FILE_ERROR">
5907 Shared folder @a hostPath not accessible.
5908 </result>
5909
5910 </desc>
5911 <param name="name" type="wstring" dir="in">
5912 <desc>Unique logical name of the shared folder.</desc>
5913 </param>
5914 <param name="hostPath" type="wstring" dir="in">
5915 <desc>Full path to the shared folder in the host file system.</desc>
5916 </param>
5917 <param name="writable" type="boolean" dir="in">
5918 <desc>Whether the share is writable or readonly.</desc>
5919 </param>
5920 <param name="automount" type="boolean" dir="in">
5921 <desc>Whether the share gets automatically mounted by the guest
5922 or not.</desc>
5923 </param>
5924 </method>
5925
5926 <method name="removeSharedFolder">
5927 <desc>
5928 Removes the permanent shared folder with the given name previously
5929 created by <link to="#createSharedFolder"/> from the collection of
5930 shared folders and stops sharing it.
5931
5932 <result name="VBOX_E_INVALID_VM_STATE">
5933 Virtual machine is not mutable.
5934 </result>
5935 <result name="VBOX_E_OBJECT_NOT_FOUND">
5936 Shared folder @a name does not exist.
5937 </result>
5938
5939 </desc>
5940 <param name="name" type="wstring" dir="in">
5941 <desc>Logical name of the shared folder to remove.</desc>
5942 </param>
5943 </method>
5944
5945 <method name="canShowConsoleWindow">
5946 <desc>
5947 Returns @c true if the VM console process can activate the
5948 console window and bring it to foreground on the desktop of
5949 the host PC.
5950 <note>
5951 This method will fail if a session for this machine is not
5952 currently open.
5953 </note>
5954
5955 <result name="VBOX_E_INVALID_VM_STATE">
5956 Machine session is not open.
5957 </result>
5958
5959 </desc>
5960 <param name="canShow" type="boolean" dir="return">
5961 <desc>
5962 @c true if the console window can be shown and @c false otherwise.
5963 </desc>
5964 </param>
5965 </method>
5966
5967 <method name="showConsoleWindow">
5968 <desc>
5969 Activates the console window and brings it to foreground on
5970 the desktop of the host PC. Many modern window managers on
5971 many platforms implement some sort of focus stealing
5972 prevention logic, so that it may be impossible to activate
5973 a window without the help of the currently active
5974 application. In this case, this method will return a non-zero
5975 identifier that represents the top-level window of the VM
5976 console process. The caller, if it represents a currently
5977 active process, is responsible to use this identifier (in a
5978 platform-dependent manner) to perform actual window
5979 activation.
5980 <note>
5981 This method will fail if a session for this machine is not
5982 currently open.
5983 </note>
5984
5985 <result name="VBOX_E_INVALID_VM_STATE">
5986 Machine session is not open.
5987 </result>
5988
5989 </desc>
5990 <param name="winId" type="long long" dir="return">
5991 <desc>
5992 Platform-dependent identifier of the top-level VM console
5993 window, or zero if this method has performed all actions
5994 necessary to implement the <i>show window</i> semantics for
5995 the given platform and/or VirtualBox front-end.
5996 </desc>
5997 </param>
5998 </method>
5999
6000 <method name="getGuestProperty" const="yes">
6001 <desc>
6002 Reads an entry from the machine's guest property store.
6003
6004 <result name="VBOX_E_INVALID_VM_STATE">
6005 Machine session is not open.
6006 </result>
6007
6008 </desc>
6009 <param name="name" type="wstring" dir="in">
6010 <desc>
6011 The name of the property to read.
6012 </desc>
6013 </param>
6014 <param name="value" type="wstring" dir="out">
6015 <desc>
6016 The value of the property. If the property does not exist then this
6017 will be empty.
6018 </desc>
6019 </param>
6020 <param name="timestamp" type="long long" dir="out">
6021 <desc>
6022 The time at which the property was last modified, as seen by the
6023 server process.
6024 </desc>
6025 </param>
6026 <param name="flags" type="wstring" dir="out">
6027 <desc>
6028 Additional property parameters, passed as a comma-separated list of
6029 "name=value" type entries.
6030 </desc>
6031 </param>
6032 </method>
6033
6034 <method name="getGuestPropertyValue" const="yes">
6035 <desc>
6036 Reads a value from the machine's guest property store.
6037
6038 <result name="VBOX_E_INVALID_VM_STATE">
6039 Machine session is not open.
6040 </result>
6041
6042 </desc>
6043 <param name="property" type="wstring" dir="in">
6044 <desc>
6045 The name of the property to read.
6046 </desc>
6047 </param>
6048 <param name="value" type="wstring" dir="return">
6049 <desc>
6050 The value of the property. If the property does not exist then this
6051 will be empty.
6052 </desc>
6053 </param>
6054 </method>
6055
6056 <method name="getGuestPropertyTimestamp" const="yes">
6057 <desc>
6058 Reads a property timestamp from the machine's guest property store.
6059
6060 <result name="VBOX_E_INVALID_VM_STATE">
6061 Machine session is not open.
6062 </result>
6063
6064 </desc>
6065 <param name="property" type="wstring" dir="in">
6066 <desc>
6067 The name of the property to read.
6068 </desc>
6069 </param>
6070 <param name="value" type="long long" dir="return">
6071 <desc>
6072 The timestamp. If the property does not exist then this will be
6073 empty.
6074 </desc>
6075 </param>
6076 </method>
6077
6078 <method name="setGuestProperty">
6079 <desc>
6080 Sets, changes or deletes an entry in the machine's guest property
6081 store.
6082
6083 <result name="E_ACCESSDENIED">
6084 Property cannot be changed.
6085 </result>
6086 <result name="E_INVALIDARG">
6087 Invalid @a flags.
6088 </result>
6089 <result name="VBOX_E_INVALID_VM_STATE">
6090 Virtual machine is not mutable or session not open.
6091 </result>
6092 <result name="VBOX_E_INVALID_OBJECT_STATE">
6093 Cannot set transient property when machine not running.
6094 </result>
6095
6096 </desc>
6097 <param name="property" type="wstring" dir="in">
6098 <desc>
6099 The name of the property to set, change or delete.
6100 </desc>
6101 </param>
6102 <param name="value" type="wstring" dir="in">
6103 <desc>
6104 The new value of the property to set, change or delete. If the
6105 property does not yet exist and value is non-empty, it will be
6106 created. If the value is @c null or empty, the property will be
6107 deleted if it exists.
6108 </desc>
6109 </param>
6110 <param name="flags" type="wstring" dir="in">
6111 <desc>
6112 Additional property parameters, passed as a comma-separated list of
6113 "name=value" type entries.
6114 </desc>
6115 </param>
6116 </method>
6117
6118 <method name="setGuestPropertyValue">
6119 <desc>
6120 Sets, changes or deletes a value in the machine's guest property
6121 store. The flags field will be left unchanged or created empty for a
6122 new property.
6123
6124 <result name="E_ACCESSDENIED">
6125 Property cannot be changed.
6126 </result>
6127 <result name="VBOX_E_INVALID_VM_STATE">
6128 Virtual machine is not mutable or session not open.
6129 </result>
6130 <result name="VBOX_E_INVALID_OBJECT_STATE">
6131 Cannot set transient property when machine not running.
6132 </result>
6133 </desc>
6134
6135 <param name="property" type="wstring" dir="in">
6136 <desc>
6137 The name of the property to set, change or delete.
6138 </desc>
6139 </param>
6140 <param name="value" type="wstring" dir="in">
6141 <desc>
6142 The new value of the property to set, change or delete. If the
6143 property does not yet exist and value is non-empty, it will be
6144 created. If the value is @c null or empty, the property will be
6145 deleted if it exists.
6146 </desc>
6147 </param>
6148 </method>
6149
6150 <method name="deleteGuestProperty" const="yes">
6151 <desc>
6152 Deletes an entry from the machine's guest property store.
6153
6154 <result name="VBOX_E_INVALID_VM_STATE">
6155 Machine session is not open.
6156 </result>
6157
6158 </desc>
6159 <param name="name" type="wstring" dir="in">
6160 <desc>
6161 The name of the property to delete.
6162 </desc>
6163 </param>
6164 </method>
6165
6166 <method name="enumerateGuestProperties" const="yes">
6167 <desc>
6168 Return a list of the guest properties matching a set of patterns along
6169 with their values, time stamps and flags.
6170 </desc>
6171 <param name="patterns" type="wstring" dir="in">
6172 <desc>
6173 The patterns to match the properties against, separated by '|'
6174 characters. If this is empty or @c null, all properties will match.
6175 </desc>
6176 </param>
6177 <param name="name" type="wstring" dir="out" safearray="yes">
6178 <desc>
6179 The names of the properties returned.
6180 </desc>
6181 </param>
6182 <param name="value" type="wstring" dir="out" safearray="yes">
6183 <desc>
6184 The values of the properties returned. The array entries match the
6185 corresponding entries in the @a name array.
6186 </desc>
6187 </param>
6188 <param name="timestamp" type="long long" dir="out" safearray="yes">
6189 <desc>
6190 The time stamps of the properties returned. The array entries match
6191 the corresponding entries in the @a name array.
6192 </desc>
6193 </param>
6194 <param name="flags" type="wstring" dir="out" safearray="yes">
6195 <desc>
6196 The flags of the properties returned. The array entries match the
6197 corresponding entries in the @a name array.
6198 </desc>
6199 </param>
6200 </method>
6201
6202 <method name="querySavedGuestScreenInfo" const="yes">
6203 <desc>
6204 Returns the guest dimensions from the saved state.
6205 </desc>
6206 <param name="screenId" type="unsigned long" dir="in">
6207 <desc>
6208 Saved guest screen to query info from.
6209 </desc>
6210 </param>
6211 <param name="originX" type="unsigned long" dir="out">
6212 <desc>
6213 The X position of the guest monitor top left corner.
6214 </desc>
6215 </param>
6216 <param name="originY" type="unsigned long" dir="out">
6217 <desc>
6218 The Y position of the guest monitor top left corner.
6219 </desc>
6220 </param>
6221 <param name="width" type="unsigned long" dir="out">
6222 <desc>
6223 Guest width at the time of the saved state was taken.
6224 </desc>
6225 </param>
6226 <param name="height" type="unsigned long" dir="out">
6227 <desc>
6228 Guest height at the time of the saved state was taken.
6229 </desc>
6230 </param>
6231 <param name="enabled" type="boolean" dir="out">
6232 <desc>
6233 Whether the monitor is enabled in the guest.
6234 </desc>
6235 </param>
6236 </method>
6237
6238 <method name="querySavedThumbnailSize">
6239 <desc>
6240 Returns size in bytes and dimensions in pixels of a saved thumbnail bitmap from saved state.
6241 </desc>
6242 <param name="screenId" type="unsigned long" dir="in">
6243 <desc>
6244 Saved guest screen to query info from.
6245 </desc>
6246 </param>
6247 <param name="size" type="unsigned long" dir="out">
6248 <desc>
6249 Size of buffer required to store the bitmap.
6250 </desc>
6251 </param>
6252 <param name="width" type="unsigned long" dir="out">
6253 <desc>
6254 Bitmap width.
6255 </desc>
6256 </param>
6257 <param name="height" type="unsigned long" dir="out">
6258 <desc>
6259 Bitmap height.
6260 </desc>
6261 </param>
6262 </method>
6263
6264 <method name="readSavedThumbnailToArray">
6265 <desc>
6266 Thumbnail is retrieved to an array of bytes in uncompressed 32-bit BGRA or RGBA format.
6267 </desc>
6268 <param name="screenId" type="unsigned long" dir="in">
6269 <desc>
6270 Saved guest screen to read from.
6271 </desc>
6272 </param>
6273 <param name="BGR" type="boolean" dir="in">
6274 <desc>
6275 How to order bytes in the pixel. A pixel consists of 4 bytes. If this parameter is true, then
6276 bytes order is: B, G, R, 0xFF. If this parameter is false, then bytes order is: R, G, B, 0xFF.
6277 </desc>
6278 </param>
6279 <param name="width" type="unsigned long" dir="out">
6280 <desc>
6281 Bitmap width.
6282 </desc>
6283 </param>
6284 <param name="height" type="unsigned long" dir="out">
6285 <desc>
6286 Bitmap height.
6287 </desc>
6288 </param>
6289 <param name="data" type="octet" safearray="yes" dir="return">
6290 <desc>
6291 Array with resulting bitmap data.
6292 </desc>
6293 </param>
6294 </method>
6295
6296 <method name="readSavedThumbnailPNGToArray">
6297 <desc>
6298 Thumbnail in PNG format is retrieved to an array of bytes.
6299 </desc>
6300 <param name="screenId" type="unsigned long" dir="in">
6301 <desc>
6302 Saved guest screen to read from.
6303 </desc>
6304 </param>
6305 <param name="width" type="unsigned long" dir="out">
6306 <desc>
6307 Image width.
6308 </desc>
6309 </param>
6310 <param name="height" type="unsigned long" dir="out">
6311 <desc>
6312 Image height.
6313 </desc>
6314 </param>
6315 <param name="data" type="octet" dir="return" safearray="yes">
6316 <desc>
6317 Array with resulting PNG data.
6318 </desc>
6319 </param>
6320 </method>
6321
6322 <method name="querySavedScreenshotPNGSize">
6323 <desc>
6324 Returns size in bytes and dimensions of a saved PNG image of screenshot from saved state.
6325 </desc>
6326 <param name="screenId" type="unsigned long" dir="in">
6327 <desc>
6328 Saved guest screen to query info from.
6329 </desc>
6330 </param>
6331 <param name="size" type="unsigned long" dir="out">
6332 <desc>
6333 Size of buffer required to store the PNG binary data.
6334 </desc>
6335 </param>
6336 <param name="width" type="unsigned long" dir="out">
6337 <desc>
6338 Image width.
6339 </desc>
6340 </param>
6341 <param name="height" type="unsigned long" dir="out">
6342 <desc>
6343 Image height.
6344 </desc>
6345 </param>
6346 </method>
6347
6348 <method name="readSavedScreenshotPNGToArray">
6349 <desc>
6350 Screenshot in PNG format is retrieved to an array of bytes.
6351 </desc>
6352 <param name="screenId" type="unsigned long" dir="in">
6353 <desc>
6354 Saved guest screen to read from.
6355 </desc>
6356 </param>
6357 <param name="width" type="unsigned long" dir="out">
6358 <desc>
6359 Image width.
6360 </desc>
6361 </param>
6362 <param name="height" type="unsigned long" dir="out">
6363 <desc>
6364 Image height.
6365 </desc>
6366 </param>
6367 <param name="data" type="octet" dir="return" safearray="yes">
6368 <desc>
6369 Array with resulting PNG data.
6370 </desc>
6371 </param>
6372 </method>
6373
6374 <method name="hotPlugCPU">
6375 <desc>
6376 Plugs a CPU into the machine.
6377 </desc>
6378 <param name="cpu" type="unsigned long" dir="in">
6379 <desc>
6380 The CPU id to insert.
6381 </desc>
6382 </param>
6383 </method>
6384
6385 <method name="hotUnplugCPU">
6386 <desc>
6387 Removes a CPU from the machine.
6388 </desc>
6389 <param name="cpu" type="unsigned long" dir="in">
6390 <desc>
6391 The CPU id to remove.
6392 </desc>
6393 </param>
6394 </method>
6395
6396 <method name="getCPUStatus">
6397 <desc>
6398 Returns the current status of the given CPU.
6399 </desc>
6400 <param name="cpu" type="unsigned long" dir="in">
6401 <desc>
6402 The CPU id to check for.
6403 </desc>
6404 </param>
6405 <param name="attached" type="boolean" dir="return">
6406 <desc>
6407 Status of the CPU.
6408 </desc>
6409 </param>
6410 </method>
6411
6412 <method name="queryLogFilename">
6413 <desc>
6414 Queries for the VM log file name of an given index. Returns an empty
6415 string if a log file with that index doesn't exists.
6416 </desc>
6417 <param name="idx" type="unsigned long" dir="in">
6418 <desc>
6419 Which log file name to query. 0=current log file.
6420 </desc>
6421 </param>
6422 <param name="filename" type="wstring" dir="return">
6423 <desc>
6424 On return the full path to the log file or an empty string on error.
6425 </desc>
6426 </param>
6427 </method>
6428
6429 <method name="readLog">
6430 <desc>
6431 Reads the VM log file. The chunk size is limited, so even if you
6432 ask for a big piece there might be less data returned.
6433 </desc>
6434 <param name="idx" type="unsigned long" dir="in">
6435 <desc>
6436 Which log file to read. 0=current log file.
6437 </desc>
6438 </param>
6439 <param name="offset" type="long long" dir="in">
6440 <desc>
6441 Offset in the log file.
6442 </desc>
6443 </param>
6444 <param name="size" type="long long" dir="in">
6445 <desc>
6446 Chunk size to read in the log file.
6447 </desc>
6448 </param>
6449 <param name="data" type="octet" dir="return" safearray="yes">
6450 <desc>
6451 Data read from the log file. A data size of 0 means end of file
6452 if the requested chunk size was not 0. This is the unprocessed
6453 file data, i.e. the line ending style depends on the platform of
6454 the system the server is running on.
6455 </desc>
6456 </param>
6457 </method>
6458
6459 <method name="cloneTo">
6460 <desc>
6461 Creates a clone of this machine, either as a full clone (which means
6462 creating independent copies of the hard disk media, save states and so
6463 on), or as a linked clone (which uses its own differencing media,
6464 sharing the parent media with the source machine).
6465
6466 The target machine object must have been created previously with <link
6467 to="IVirtualBox::createMachine"/>, and all the settings will be
6468 transferred except the VM name and the hardware UUID. You can set the
6469 VM name and the new hardware UUID when creating the target machine. The
6470 network MAC addresses are newly created for all newtwork adapters. You
6471 can change that behaviour with the options parameter. The operation is
6472 performed asynchronously, so the machine object will be not be usable
6473 until the @a progress object signals completion.
6474
6475 <result name="E_INVALIDARG">
6476 @a target is @c null.
6477 </result>
6478 </desc>
6479
6480 <param name="target" type="IMachine" dir="in">
6481 <desc>Target machine object.</desc>
6482 </param>
6483 <param name="mode" type="CloneMode" dir="in">
6484 <desc>Which states should be cloned.</desc>
6485 </param>
6486 <param name="options" type="CloneOptions" dir="in" safearray="yes">
6487 <desc>Options for the cloning operation.</desc>
6488 </param>
6489 <param name="progress" type="IProgress" dir="return">
6490 <desc>Progress object to track the operation completion.</desc>
6491 </param>
6492 </method>
6493
6494 </interface>
6495
6496 <!--
6497 // IConsole
6498 /////////////////////////////////////////////////////////////////////////
6499 -->
6500
6501 <interface
6502 name="IVRDEServerInfo" extends="$unknown"
6503 uuid="714434a1-58c3-4aab-9049-7652c5df113b"
6504 wsmap="struct"
6505 >
6506 <desc>
6507 Contains information about the remote desktop (VRDE) server capabilities and status.
6508 This is used in the <link to="IConsole::VRDEServerInfo" /> attribute.
6509 </desc>
6510
6511 <attribute name="active" type="boolean" readonly="yes">
6512 <desc>
6513 Whether the remote desktop connection is active.
6514 </desc>
6515 </attribute>
6516
6517 <attribute name="port" type="long" readonly="yes">
6518 <desc>
6519 VRDE server port number. If this property is equal to <tt>0</tt>, then
6520 the VRDE server failed to start, usually because there are no free IP
6521 ports to bind to. If this property is equal to <tt>-1</tt>, then the VRDE
6522 server has not yet been started.
6523 </desc>
6524 </attribute>
6525
6526 <attribute name="numberOfClients" type="unsigned long" readonly="yes">
6527 <desc>
6528 How many times a client connected.
6529 </desc>
6530 </attribute>
6531
6532 <attribute name="beginTime" type="long long" readonly="yes">
6533 <desc>
6534 When the last connection was established, in milliseconds since 1970-01-01 UTC.
6535 </desc>
6536 </attribute>
6537
6538 <attribute name="endTime" type="long long" readonly="yes">
6539 <desc>
6540 When the last connection was terminated or the current time, if
6541 connection is still active, in milliseconds since 1970-01-01 UTC.
6542 </desc>
6543 </attribute>
6544
6545 <attribute name="bytesSent" type="long long" readonly="yes">
6546 <desc>
6547 How many bytes were sent in last or current, if still active, connection.
6548 </desc>
6549 </attribute>
6550
6551 <attribute name="bytesSentTotal" type="long long" readonly="yes">
6552 <desc>
6553 How many bytes were sent in all connections.
6554 </desc>
6555 </attribute>
6556
6557 <attribute name="bytesReceived" type="long long" readonly="yes">
6558 <desc>
6559 How many bytes were received in last or current, if still active, connection.
6560 </desc>
6561 </attribute>
6562
6563 <attribute name="bytesReceivedTotal" type="long long" readonly="yes">
6564 <desc>
6565 How many bytes were received in all connections.
6566 </desc>
6567 </attribute>
6568
6569 <attribute name="user" type="wstring" readonly="yes">
6570 <desc>
6571 Login user name supplied by the client.
6572 </desc>
6573 </attribute>
6574
6575 <attribute name="domain" type="wstring" readonly="yes">
6576 <desc>
6577 Login domain name supplied by the client.
6578 </desc>
6579 </attribute>
6580
6581 <attribute name="clientName" type="wstring" readonly="yes">
6582 <desc>
6583 The client name supplied by the client.
6584 </desc>
6585 </attribute>
6586
6587 <attribute name="clientIP" type="wstring" readonly="yes">
6588 <desc>
6589 The IP address of the client.
6590 </desc>
6591 </attribute>
6592
6593 <attribute name="clientVersion" type="unsigned long" readonly="yes">
6594 <desc>
6595 The client software version number.
6596 </desc>
6597 </attribute>
6598
6599 <attribute name="encryptionStyle" type="unsigned long" readonly="yes">
6600 <desc>
6601 Public key exchange method used when connection was established.
6602 Values: 0 - RDP4 public key exchange scheme.
6603 1 - X509 certificates were sent to client.
6604 </desc>
6605 </attribute>
6606
6607 </interface>
6608
6609 <interface
6610 name="IConsole" extends="$unknown"
6611 uuid="1968b7d3-e3bf-4ceb-99e0-cb7c913317bb"
6612 wsmap="managed"
6613 >
6614 <desc>
6615 The IConsole interface represents an interface to control virtual
6616 machine execution.
6617
6618 A console object gets created when a machine has been locked for a
6619 particular session (client process) using <link to="IMachine::lockMachine" />
6620 or <link to="IMachine::launchVMProcess"/>. The console object can
6621 then be found in the session's <link to="ISession::console" /> attribute.
6622
6623 Methods of the IConsole interface allow the caller to query the current
6624 virtual machine execution state, pause the machine or power it down, save
6625 the machine state or take a snapshot, attach and detach removable media
6626 and so on.
6627
6628 <see><link to="ISession"/></see>
6629 </desc>
6630
6631 <attribute name="machine" type="IMachine" readonly="yes">
6632 <desc>
6633 Machine object for this console session.
6634 <note>
6635 This is a convenience property, it has the same value as
6636 <link to="ISession::machine"/> of the corresponding session
6637 object.
6638 </note>
6639 </desc>
6640 </attribute>
6641
6642 <attribute name="state" type="MachineState" readonly="yes">
6643 <desc>
6644 Current execution state of the machine.
6645 <note>
6646 This property always returns the same value as the corresponding
6647 property of the IMachine object for this console session.
6648 For the process that owns (executes) the VM, this is the
6649 preferable way of querying the VM state, because no IPC
6650 calls are made.
6651 </note>
6652 </desc>
6653 </attribute>
6654
6655 <attribute name="guest" type="IGuest" readonly="yes">
6656 <desc>Guest object.</desc>
6657 </attribute>
6658
6659 <attribute name="keyboard" type="IKeyboard" readonly="yes">
6660 <desc>
6661 Virtual keyboard object.
6662 <note>
6663 If the machine is not running, any attempt to use
6664 the returned object will result in an error.
6665 </note>
6666 </desc>
6667 </attribute>
6668
6669 <attribute name="mouse" type="IMouse" readonly="yes">
6670 <desc>
6671 Virtual mouse object.
6672 <note>
6673 If the machine is not running, any attempt to use
6674 the returned object will result in an error.
6675 </note>
6676 </desc>
6677 </attribute>
6678
6679 <attribute name="display" type="IDisplay" readonly="yes">
6680 <desc>Virtual display object.
6681 <note>
6682 If the machine is not running, any attempt to use
6683 the returned object will result in an error.
6684 </note>
6685 </desc>
6686 </attribute>
6687
6688 <attribute name="debugger" type="IMachineDebugger" readonly="yes">
6689 <desc>Debugging interface.</desc>
6690 </attribute>
6691
6692 <attribute name="USBDevices" type="IUSBDevice" readonly="yes" safearray="yes">
6693 <desc>
6694 Collection of USB devices currently attached to the virtual
6695 USB controller.
6696 <note>
6697 The collection is empty if the machine is not running.
6698 </note>
6699 </desc>
6700 </attribute>
6701
6702 <attribute name="remoteUSBDevices" type="IHostUSBDevice" readonly="yes" safearray="yes">
6703 <desc>
6704 List of USB devices currently attached to the remote VRDE client.
6705 Once a new device is physically attached to the remote host computer,
6706 it appears in this list and remains there until detached.
6707 </desc>
6708 </attribute>
6709
6710 <attribute name="sharedFolders" type="ISharedFolder" readonly="yes" safearray="yes">
6711 <desc>
6712 Collection of shared folders for the current session. These folders
6713 are called transient shared folders because they are available to the
6714 guest OS running inside the associated virtual machine only for the
6715 duration of the session (as opposed to
6716 <link to="IMachine::sharedFolders"/> which represent permanent shared
6717 folders). When the session is closed (e.g. the machine is powered down),
6718 these folders are automatically discarded.
6719
6720 New shared folders are added to the collection using
6721 <link to="#createSharedFolder"/>. Existing shared folders can be
6722 removed using <link to="#removeSharedFolder"/>.
6723 </desc>
6724 </attribute>
6725
6726 <attribute name="VRDEServerInfo" type="IVRDEServerInfo" readonly="yes">
6727 <desc>
6728 Interface that provides information on Remote Desktop Extension (VRDE) connection.
6729 </desc>
6730 </attribute>
6731
6732 <attribute name="eventSource" type="IEventSource" readonly="yes">
6733 <desc>
6734 Event source for console events.
6735 </desc>
6736 </attribute>
6737
6738 <attribute name="attachedPciDevices" type="IPciDeviceAttachment" readonly="yes" safearray="yes">
6739 <desc>Array of PCI devices attached to this machine.</desc>
6740 </attribute>
6741
6742 <attribute name="useHostClipboard" type="boolean">
6743 <desc>
6744 Whether the guest clipboard should be connected to the host one or
6745 whether it should only be allowed access to the VRDE clipboard. This
6746 setting may not affect existing guest clipboard connections which
6747 are already connected to the host clipboard.
6748 </desc>
6749 </attribute>
6750
6751 <method name="powerUp">
6752 <desc>
6753 Starts the virtual machine execution using the current machine
6754 state (that is, its current execution state, current settings and
6755 current storage devices).
6756
6757 <note>
6758 This method is only useful for front-ends that want to actually
6759 execute virtual machines in their own process (like the VirtualBox
6760 or VBoxSDL front-ends). Unless you are intending to write such a
6761 front-end, do not call this method. If you simply want to
6762 start virtual machine execution using one of the existing front-ends
6763 (for example the VirtualBox GUI or headless server), use
6764 <link to="IMachine::launchVMProcess"/> instead; these
6765 front-ends will power up the machine automatically for you.
6766 </note>
6767
6768 If the machine is powered off or aborted, the execution will
6769 start from the beginning (as if the real hardware were just
6770 powered on).
6771
6772 If the machine is in the <link to="MachineState_Saved"/> state,
6773 it will continue its execution the point where the state has
6774 been saved.
6775
6776 If the machine <link to="IMachine::teleporterEnabled"/> property is
6777 enabled on the machine being powered up, the machine will wait for an
6778 incoming teleportation in the <link to="MachineState_TeleportingIn"/>
6779 state. The returned progress object will have at least three
6780 operations where the last three are defined as: (1) powering up and
6781 starting TCP server, (2) waiting for incoming teleportations, and
6782 (3) perform teleportation. These operations will be reflected as the
6783 last three operations of the progress objected returned by
6784 <link to="IMachine::launchVMProcess"/> as well.
6785
6786 <see><link to="#saveState"/></see>
6787
6788 <result name="VBOX_E_INVALID_VM_STATE">
6789 Virtual machine already running.
6790 </result>
6791 <result name="VBOX_E_HOST_ERROR">
6792 Host interface does not exist or name not set.
6793 </result>
6794 <result name="VBOX_E_FILE_ERROR">
6795 Invalid saved state file.
6796 </result>
6797 </desc>
6798 <param name="progress" type="IProgress" dir="return">
6799 <desc>Progress object to track the operation completion.</desc>
6800 </param>
6801 </method>
6802
6803 <method name="powerUpPaused">
6804 <desc>
6805 Identical to powerUp except that the VM will enter the
6806 <link to="MachineState_Paused"/> state, instead of
6807 <link to="MachineState_Running"/>.
6808
6809 <see><link to="#powerUp"/></see>
6810 <result name="VBOX_E_INVALID_VM_STATE">
6811 Virtual machine already running.
6812 </result>
6813 <result name="VBOX_E_HOST_ERROR">
6814 Host interface does not exist or name not set.
6815 </result>
6816 <result name="VBOX_E_FILE_ERROR">
6817 Invalid saved state file.
6818 </result>
6819 </desc>
6820 <param name="progress" type="IProgress" dir="return">
6821 <desc>Progress object to track the operation completion.</desc>
6822 </param>
6823 </method>
6824
6825 <method name="powerDown">
6826 <desc>
6827 Initiates the power down procedure to stop the virtual machine
6828 execution.
6829
6830 The completion of the power down procedure is tracked using the returned
6831 IProgress object. After the operation is complete, the machine will go
6832 to the PoweredOff state.
6833 <result name="VBOX_E_INVALID_VM_STATE">
6834 Virtual machine must be Running, Paused or Stuck to be powered down.
6835 </result>
6836 </desc>
6837 <param name="progress" type="IProgress" dir="return">
6838 <desc>Progress object to track the operation completion.</desc>
6839 </param>
6840 </method>
6841
6842 <method name="reset">
6843 <desc>Resets the virtual machine.
6844 <result name="VBOX_E_INVALID_VM_STATE">
6845 Virtual machine not in Running state.
6846 </result>
6847 <result name="VBOX_E_VM_ERROR">
6848 Virtual machine error in reset operation.
6849 </result>
6850 </desc>
6851 </method>
6852
6853 <method name="pause">
6854 <desc>Pauses the virtual machine execution.
6855 <result name="VBOX_E_INVALID_VM_STATE">
6856 Virtual machine not in Running state.
6857 </result>
6858 <result name="VBOX_E_VM_ERROR">
6859 Virtual machine error in suspend operation.
6860 </result>
6861 </desc>
6862 </method>
6863
6864 <method name="resume">
6865 <desc>Resumes the virtual machine execution.
6866 <result name="VBOX_E_INVALID_VM_STATE">
6867 Virtual machine not in Paused state.
6868 </result>
6869 <result name="VBOX_E_VM_ERROR">
6870 Virtual machine error in resume operation.
6871 </result>
6872 </desc>
6873 </method>
6874
6875 <method name="powerButton">
6876 <desc>Sends the ACPI power button event to the guest.
6877 <result name="VBOX_E_INVALID_VM_STATE">
6878 Virtual machine not in Running state.
6879 </result>
6880 <result name="VBOX_E_PDM_ERROR">
6881 Controlled power off failed.
6882 </result>
6883 </desc>
6884 </method>
6885
6886 <method name="sleepButton">
6887 <desc>Sends the ACPI sleep button event to the guest.
6888 <result name="VBOX_E_INVALID_VM_STATE">
6889 Virtual machine not in Running state.
6890 </result>
6891 <result name="VBOX_E_PDM_ERROR">
6892 Sending sleep button event failed.
6893 </result>
6894 </desc>
6895 </method>
6896
6897 <method name="getPowerButtonHandled">
6898 <desc>Checks if the last power button event was handled by guest.
6899 <result name="VBOX_E_PDM_ERROR">
6900 Checking if the event was handled by the guest OS failed.
6901 </result>
6902 </desc>
6903 <param name="handled" type="boolean" dir="return"/>
6904 </method>
6905
6906 <method name="getGuestEnteredACPIMode">
6907 <desc>Checks if the guest entered the ACPI mode G0 (working) or
6908 G1 (sleeping). If this method returns @c false, the guest will
6909 most likely not respond to external ACPI events.
6910 <result name="VBOX_E_INVALID_VM_STATE">
6911 Virtual machine not in Running state.
6912 </result>
6913 </desc>
6914 <param name="entered" type="boolean" dir="return"/>
6915 </method>
6916
6917 <method name="saveState">
6918 <desc>
6919 Saves the current execution state of a running virtual machine
6920 and stops its execution.
6921
6922 After this operation completes, the machine will go to the
6923 Saved state. Next time it is powered up, this state will
6924 be restored and the machine will continue its execution from
6925 the place where it was saved.
6926
6927 This operation differs from taking a snapshot to the effect
6928 that it doesn't create new differencing media. Also, once
6929 the machine is powered up from the state saved using this method,
6930 the saved state is deleted, so it will be impossible to return
6931 to this state later.
6932
6933 <note>
6934 On success, this method implicitly calls
6935 <link to="IMachine::saveSettings"/> to save all current machine
6936 settings (including runtime changes to the DVD medium, etc.).
6937 Together with the impossibility to change any VM settings when it is
6938 in the Saved state, this guarantees adequate hardware
6939 configuration of the machine when it is restored from the saved
6940 state file.
6941 </note>
6942
6943 <note>
6944 The machine must be in the Running or Paused state, otherwise
6945 the operation will fail.
6946 </note>
6947 <result name="VBOX_E_INVALID_VM_STATE">
6948 Virtual machine state neither Running nor Paused.
6949 </result>
6950 <result name="VBOX_E_FILE_ERROR">
6951 Failed to create directory for saved state file.
6952 </result>
6953
6954 <see><link to="#takeSnapshot"/></see>
6955 </desc>
6956 <param name="progress" type="IProgress" dir="return">
6957 <desc>Progress object to track the operation completion.</desc>
6958 </param>
6959 </method>
6960
6961 <method name="adoptSavedState">
6962 <desc>
6963 Associates the given saved state file to the virtual machine.
6964
6965 On success, the machine will go to the Saved state. Next time it is
6966 powered up, it will be restored from the adopted saved state and
6967 continue execution from the place where the saved state file was
6968 created.
6969
6970 The specified saved state file path may be absolute or relative to the
6971 folder the VM normally saves the state to (usually,
6972 <link to="IMachine::snapshotFolder"/>).
6973
6974 <note>
6975 It's a caller's responsibility to make sure the given saved state
6976 file is compatible with the settings of this virtual machine that
6977 represent its virtual hardware (memory size, storage disk configuration
6978 etc.). If there is a mismatch, the behavior of the virtual machine
6979 is undefined.
6980 </note>
6981 <result name="VBOX_E_INVALID_VM_STATE">
6982 Virtual machine state neither PoweredOff nor Aborted.
6983 </result>
6984 </desc>
6985 <param name="savedStateFile" type="wstring" dir="in">
6986 <desc>Path to the saved state file to adopt.</desc>
6987 </param>
6988 </method>
6989
6990 <method name="discardSavedState">
6991 <desc>
6992 Forcibly resets the machine to "Powered Off" state if it is
6993 currently in the "Saved" state (previously created by <link to="#saveState"/>).
6994 Next time the machine is powered up, a clean boot will occur.
6995 <note>
6996 This operation is equivalent to resetting or powering off
6997 the machine without doing a proper shutdown of the guest
6998 operating system; as with resetting a running phyiscal
6999 computer, it can can lead to data loss.
7000 </note>
7001 If @a fRemoveFile is @c true, the file in the machine directory
7002 into which the machine state was saved is also deleted. If
7003 this is @c false, then the state can be recovered and later
7004 re-inserted into a machine using <link to="#adoptSavedState" />.
7005 The location of the file can be found in the
7006 <link to="IMachine::stateFilePath" /> attribute.
7007 <result name="VBOX_E_INVALID_VM_STATE">
7008 Virtual machine not in state Saved.
7009 </result>
7010 </desc>
7011 <param name="fRemoveFile" type="boolean" dir="in" >
7012 <desc>Whether to also remove the saved state file.</desc>
7013 </param>
7014 </method>
7015
7016 <method name="getDeviceActivity">
7017 <desc>
7018 Gets the current activity type of a given device or device group.
7019 <result name="E_INVALIDARG">
7020 Invalid device type.
7021 </result>
7022 </desc>
7023 <param name="type" type="DeviceType" dir="in"/>
7024 <param name="activity" type="DeviceActivity" dir="return"/>
7025 </method>
7026
7027 <method name="attachUSBDevice">
7028 <desc>
7029 Attaches a host USB device with the given UUID to the
7030 USB controller of the virtual machine.
7031
7032 The device needs to be in one of the following states:
7033 <link to="USBDeviceState_Busy"/>,
7034 <link to="USBDeviceState_Available"/> or
7035 <link to="USBDeviceState_Held"/>,
7036 otherwise an error is immediately returned.
7037
7038 When the device state is
7039 <link to="USBDeviceState_Busy">Busy</link>, an error may also
7040 be returned if the host computer refuses to release it for some reason.
7041
7042 <see><link to="IUSBController::deviceFilters"/>,
7043 <link to="USBDeviceState"/></see>
7044 <result name="VBOX_E_INVALID_VM_STATE">
7045 Virtual machine state neither Running nor Paused.
7046 </result>
7047 <result name="VBOX_E_PDM_ERROR">
7048 Virtual machine does not have a USB controller.
7049 </result>
7050 </desc>
7051 <param name="id" type="uuid" mod="string" dir="in">
7052 <desc>UUID of the host USB device to attach.</desc>
7053 </param>
7054 </method>
7055
7056 <method name="detachUSBDevice">
7057 <desc>
7058 Detaches an USB device with the given UUID from the USB controller
7059 of the virtual machine.
7060
7061 After this method succeeds, the VirtualBox server re-initiates
7062 all USB filters as if the device were just physically attached
7063 to the host, but filters of this machine are ignored to avoid
7064 a possible automatic re-attachment.
7065
7066 <see><link to="IUSBController::deviceFilters"/>,
7067 <link to="USBDeviceState"/></see>
7068
7069 <result name="VBOX_E_PDM_ERROR">
7070 Virtual machine does not have a USB controller.
7071 </result>
7072 <result name="E_INVALIDARG">
7073 USB device not attached to this virtual machine.
7074 </result>
7075 </desc>
7076 <param name="id" type="uuid" mod="string" dir="in">
7077 <desc>UUID of the USB device to detach.</desc>
7078 </param>
7079 <param name="device" type="IUSBDevice" dir="return">
7080 <desc>Detached USB device.</desc>
7081 </param>
7082 </method>
7083
7084 <method name="findUSBDeviceByAddress">
7085 <desc>
7086 Searches for a USB device with the given host address.
7087
7088 <result name="VBOX_E_OBJECT_NOT_FOUND">
7089 Given @c name does not correspond to any USB device.
7090 </result>
7091
7092 <see><link to="IUSBDevice::address"/></see>
7093 </desc>
7094 <param name="name" type="wstring" dir="in">
7095 <desc>
7096 Address of the USB device (as assigned by the host) to
7097 search for.
7098 </desc>
7099 </param>
7100 <param name="device" type="IUSBDevice" dir="return">
7101 <desc>Found USB device object.</desc>
7102 </param>
7103 </method>
7104
7105 <method name="findUSBDeviceById">
7106 <desc>
7107 Searches for a USB device with the given UUID.
7108
7109 <result name="VBOX_E_OBJECT_NOT_FOUND">
7110 Given @c id does not correspond to any USB device.
7111 </result>
7112
7113 <see><link to="IUSBDevice::id"/></see>
7114 </desc>
7115 <param name="id" type="uuid" mod="string" dir="in">
7116 <desc>UUID of the USB device to search for.</desc>
7117 </param>
7118 <param name="device" type="IUSBDevice" dir="return">
7119 <desc>Found USB device object.</desc>
7120 </param>
7121 </method>
7122
7123 <method name="createSharedFolder">
7124 <desc>
7125 Creates a transient new shared folder by associating the given logical
7126 name with the given host path, adds it to the collection of shared
7127 folders and starts sharing it. Refer to the description of
7128 <link to="ISharedFolder"/> to read more about logical names.
7129
7130 <result name="VBOX_E_INVALID_VM_STATE">
7131 Virtual machine in Saved state or currently changing state.
7132 </result>
7133 <result name="VBOX_E_FILE_ERROR">
7134 Shared folder already exists or not accessible.
7135 </result>
7136 </desc>
7137 <param name="name" type="wstring" dir="in">
7138 <desc>Unique logical name of the shared folder.</desc>
7139 </param>
7140 <param name="hostPath" type="wstring" dir="in">
7141 <desc>Full path to the shared folder in the host file system.</desc>
7142 </param>
7143 <param name="writable" type="boolean" dir="in">
7144 <desc>Whether the share is writable or readonly</desc>
7145 </param>
7146 <param name="automount" type="boolean" dir="in">
7147 <desc>Whether the share gets automatically mounted by the guest
7148 or not.</desc>
7149 </param>
7150 </method>
7151
7152 <method name="removeSharedFolder">
7153 <desc>
7154 Removes a transient shared folder with the given name previously
7155 created by <link to="#createSharedFolder"/> from the collection of
7156 shared folders and stops sharing it.
7157 <result name="VBOX_E_INVALID_VM_STATE">
7158 Virtual machine in Saved state or currently changing state.
7159 </result>
7160 <result name="VBOX_E_FILE_ERROR">
7161 Shared folder does not exists.
7162 </result>
7163 </desc>
7164 <param name="name" type="wstring" dir="in">
7165 <desc>Logical name of the shared folder to remove.</desc>
7166 </param>
7167 </method>
7168
7169 <method name="takeSnapshot">
7170 <desc>
7171 Saves the current execution state
7172 and all settings of the machine and creates differencing images
7173 for all normal (non-independent) media.
7174 See <link to="ISnapshot" /> for an introduction to snapshots.
7175
7176 This method can be called for a PoweredOff, Saved (see
7177 <link to="#saveState"/>), Running or
7178 Paused virtual machine. When the machine is PoweredOff, an
7179 offline snapshot is created. When the machine is Running a live
7180 snapshot is created, and an online snapshot is created when Paused.
7181
7182 The taken snapshot is always based on the
7183 <link to="IMachine::currentSnapshot">current snapshot</link>
7184 of the associated virtual machine and becomes a new current snapshot.
7185
7186 <note>
7187 This method implicitly calls <link to="IMachine::saveSettings"/> to
7188 save all current machine settings before taking an offline snapshot.
7189 </note>
7190
7191 <result name="VBOX_E_INVALID_VM_STATE">
7192 Virtual machine currently changing state.
7193 </result>
7194 </desc>
7195 <param name="name" type="wstring" dir="in">
7196 <desc>Short name for the snapshot.</desc>
7197 </param>
7198 <param name="description" type="wstring" dir="in">
7199 <desc>Optional description of the snapshot.</desc>
7200 </param>
7201 <param name="progress" type="IProgress" dir="return">
7202 <desc>Progress object to track the operation completion.</desc>
7203 </param>
7204 </method>
7205
7206 <method name="deleteSnapshot">
7207 <desc>
7208 Starts deleting the specified snapshot asynchronously.
7209 See <link to="ISnapshot" /> for an introduction to snapshots.
7210
7211 The execution state and settings of the associated machine stored in
7212 the snapshot will be deleted. The contents of all differencing media of
7213 this snapshot will be merged with the contents of their dependent child
7214 media to keep the medium chain valid (in other words, all changes
7215 represented by media being deleted will be propagated to their child
7216 medium). After that, this snapshot's differencing medium will be
7217 deleted. The parent of this snapshot will become a new parent for all
7218 its child snapshots.
7219
7220 If the deleted snapshot is the current one, its parent snapshot will
7221 become a new current snapshot. The current machine state is not directly
7222 affected in this case, except that currently attached differencing
7223 media based on media of the deleted snapshot will be also merged as
7224 described above.
7225
7226 If the deleted snapshot is the first or current snapshot, then the
7227 respective IMachine attributes will be adjusted. Deleting the current
7228 snapshot will also implicitly call <link to="IMachine::saveSettings"/>
7229 to make all current machine settings permanent.
7230
7231 Deleting a snapshot has the following preconditions:
7232
7233 <ul>
7234 <li>Child media of all normal media of the deleted snapshot
7235 must be accessible (see <link to="IMedium::state"/>) for this
7236 operation to succeed. If only one running VM refers to all images
7237 which participates in merging the operation can be performed while
7238 the VM is running. Otherwise all virtual machines whose media are
7239 directly or indirectly based on the media of deleted snapshot must
7240 be powered off. In any case, online snapshot deleting usually is
7241 slower than the same operation without any running VM.</li>
7242
7243 <li>You cannot delete the snapshot if a medium attached to it has
7244 more than one child medium (differencing images) because otherwise
7245 merging would be impossible. This might be the case if there is
7246 more than one child snapshot or differencing images were created
7247 for other reason (e.g. implicitly because of multiple machine
7248 attachments).</li>
7249 </ul>
7250
7251 The virtual machine's <link to="IMachine::state">state</link> is
7252 changed to "DeletingSnapshot", "DeletingSnapshotOnline" or
7253 "DeletingSnapshotPaused" while this operation is in progress.
7254
7255 <note>
7256 Merging medium contents can be very time and disk space
7257 consuming, if these media are big in size and have many
7258 children. However, if the snapshot being deleted is the last
7259 (head) snapshot on the branch, the operation will be rather
7260 quick.
7261 </note>
7262 <result name="VBOX_E_INVALID_VM_STATE">
7263 The running virtual machine prevents deleting this snapshot. This
7264 happens only in very specific situations, usually snapshots can be
7265 deleted without trouble while a VM is running. The error message
7266 text explains the reason for the failure.
7267 </result>
7268 </desc>
7269 <param name="id" type="uuid" mod="string" dir="in">
7270 <desc>UUID of the snapshot to delete.</desc>
7271 </param>
7272 <param name="progress" type="IProgress" dir="return">
7273 <desc>Progress object to track the operation completion.</desc>
7274 </param>
7275 </method>
7276
7277 <method name="deleteSnapshotAndAllChildren">
7278 <desc>
7279 Starts deleting the specified snapshot and all its children
7280 asynchronously. See <link to="ISnapshot" /> for an introduction to
7281 snapshots. The conditions and many details are the same as with
7282 <link to="#deleteSnapshot"/>.
7283
7284 This operation is very fast if the snapshot subtree does not include
7285 the current state. It is still significantly faster than deleting the
7286 snapshots one by one if the current state is in the subtree and there
7287 are more than one snapshots from current state to the snapshot which
7288 marks the subtree, since it eliminates the incremental image merging.
7289
7290 <note>This API method is right now not implemented!</note>
7291
7292 <result name="VBOX_E_INVALID_VM_STATE">
7293 The running virtual machine prevents deleting this snapshot. This
7294 happens only in very specific situations, usually snapshots can be
7295 deleted without trouble while a VM is running. The error message
7296 text explains the reason for the failure.
7297 </result>
7298 <result name="E_NOTIMPL">
7299 The method is not implemented yet.
7300 </result>
7301 </desc>
7302 <param name="id" type="uuid" mod="string" dir="in">
7303 <desc>UUID of the snapshot to delete, including all its children.</desc>
7304 </param>
7305 <param name="progress" type="IProgress" dir="return">
7306 <desc>Progress object to track the operation completion.</desc>
7307 </param>
7308 </method>
7309
7310 <method name="deleteSnapshotRange">
7311 <desc>
7312 Starts deleting the specified snapshot range. This is limited to
7313 linear snapshot lists, which means there may not be any other child
7314 snapshots other than the direct sequence between the start and end
7315 snapshot. If the start and end snapshot point to the same snapshot this
7316 method is completely equivalent to <link to="#deleteSnapshot"/>. See
7317 <link to="ISnapshot" /> for an introduction to snapshots. The
7318 conditions and many details are the same as with
7319 <link to="#deleteSnapshot"/>.
7320
7321 This operation is generally faster than deleting snapshots one by one
7322 and often also needs less extra disk space before freeing up disk space
7323 by deleting the removed disk images corresponding to the snapshot.
7324
7325 <note>This API method is right now not implemented!</note>
7326
7327 <result name="VBOX_E_INVALID_VM_STATE">
7328 The running virtual machine prevents deleting this snapshot. This
7329 happens only in very specific situations, usually snapshots can be
7330 deleted without trouble while a VM is running. The error message
7331 text explains the reason for the failure.
7332 </result>
7333 <result name="E_NOTIMPL">
7334 The method is not implemented yet.
7335 </result>
7336 </desc>
7337 <param name="startId" type="uuid" mod="string" dir="in">
7338 <desc>UUID of the first snapshot to delete.</desc>
7339 </param>
7340 <param name="endId" type="uuid" mod="string" dir="in">
7341 <desc>UUID of the last snapshot to delete.</desc>
7342 </param>
7343 <param name="progress" type="IProgress" dir="return">
7344 <desc>Progress object to track the operation completion.</desc>
7345 </param>
7346 </method>
7347
7348 <method name="restoreSnapshot">
7349 <desc>
7350 Starts resetting the machine's current state to the state contained
7351 in the given snapshot, asynchronously. All current settings of the
7352 machine will be reset and changes stored in differencing media
7353 will be lost.
7354 See <link to="ISnapshot" /> for an introduction to snapshots.
7355
7356 After this operation is successfully completed, new empty differencing
7357 media are created for all normal media of the machine.
7358
7359 If the given snapshot is an online snapshot, the machine will go to
7360 the <link to="MachineState_Saved"> saved state</link>, so that the
7361 next time it is powered on, the execution state will be restored
7362 from the state of the snapshot.
7363
7364 <note>
7365 The machine must not be running, otherwise the operation will fail.
7366 </note>
7367
7368 <note>
7369 If the machine state is <link to="MachineState_Saved">Saved</link>
7370 prior to this operation, the saved state file will be implicitly
7371 deleted (as if <link to="IConsole::discardSavedState"/> were
7372 called).
7373 </note>
7374
7375 <result name="VBOX_E_INVALID_VM_STATE">
7376 Virtual machine is running.
7377 </result>
7378 </desc>
7379 <param name="snapshot" type="ISnapshot" dir="in">
7380 <desc>The snapshot to restore the VM state from.</desc>
7381 </param>
7382 <param name="progress" type="IProgress" dir="return">
7383 <desc>Progress object to track the operation completion.</desc>
7384 </param>
7385 </method>
7386
7387 <method name="teleport">
7388 <desc>
7389 Teleport the VM to a different host machine or process.
7390
7391 TODO explain the details.
7392
7393 <result name="VBOX_E_INVALID_VM_STATE">
7394 Virtual machine not running or paused.
7395 </result>
7396 </desc>
7397 <param name="hostname" type="wstring" dir="in">
7398 <desc>The name or IP of the host to teleport to.</desc>
7399 </param>
7400 <param name="tcpport" type="unsigned long" dir="in">
7401 <desc>The TCP port to connect to (1..65535).</desc>
7402 </param>
7403 <param name="password" type="wstring" dir="in">
7404 <desc>The password.</desc>
7405 </param>
7406 <param name="maxDowntime" type="unsigned long" dir="in">
7407 <desc>
7408 The maximum allowed downtime given as milliseconds. 0 is not a valid
7409 value. Recommended value: 250 ms.
7410
7411 The higher the value is, the greater the chance for a successful
7412 teleportation. A small value may easily result in the teleportation
7413 process taking hours and eventually fail.
7414
7415 <note>
7416 The current implementation treats this a guideline, not as an
7417 absolute rule.
7418 </note>
7419 </desc>
7420 </param>
7421 <param name="progress" type="IProgress" dir="return">
7422 <desc>Progress object to track the operation completion.</desc>
7423 </param>
7424 </method>
7425
7426 </interface>
7427
7428 <!--
7429 // IHost
7430 /////////////////////////////////////////////////////////////////////////
7431 -->
7432
7433 <enum
7434 name="HostNetworkInterfaceMediumType"
7435 uuid="1aa54aaf-2497-45a2-bfb1-8eb225e93d5b"
7436 >
7437 <desc>
7438 Type of encapsulation. Ethernet encapsulation includes both wired and
7439 wireless Ethernet connections.
7440 <see><link to="IHostNetworkInterface"/></see>
7441 </desc>
7442
7443 <const name="Unknown" value="0">
7444 <desc>
7445 The type of interface cannot be determined.
7446 </desc>
7447 </const>
7448 <const name="Ethernet" value="1">
7449 <desc>
7450 Ethernet frame encapsulation.
7451 </desc>
7452 </const>
7453 <const name="PPP" value="2">
7454 <desc>
7455 Point-to-point protocol encapsulation.
7456 </desc>
7457 </const>
7458 <const name="SLIP" value="3">
7459 <desc>
7460 Serial line IP encapsulation.
7461 </desc>
7462 </const>
7463 </enum>
7464
7465 <enum
7466 name="HostNetworkInterfaceStatus"
7467 uuid="CC474A69-2710-434B-8D99-C38E5D5A6F41"
7468 >
7469 <desc>
7470 Current status of the interface.
7471 <see><link to="IHostNetworkInterface"/></see>
7472 </desc>
7473
7474 <const name="Unknown" value="0">
7475 <desc>
7476 The state of interface cannot be determined.
7477 </desc>
7478 </const>
7479 <const name="Up" value="1">
7480 <desc>
7481 The interface is fully operational.
7482 </desc>
7483 </const>
7484 <const name="Down" value="2">
7485 <desc>
7486 The interface is not functioning.
7487 </desc>
7488 </const>
7489 </enum>
7490
7491 <enum
7492 name="HostNetworkInterfaceType"
7493 uuid="67431b00-9946-48a2-bc02-b25c5919f4f3"
7494 >
7495 <desc>
7496 Network interface type.
7497 </desc>
7498 <const name="Bridged" value="1"/>
7499 <const name="HostOnly" value="2"/>
7500 </enum>
7501
7502 <interface
7503 name="IHostNetworkInterface" extends="$unknown"
7504 uuid="ce6fae58-7642-4102-b5db-c9005c2320a8"
7505 wsmap="managed"
7506 >
7507 <desc>
7508 Represents one of host's network interfaces. IP V6 address and network
7509 mask are strings of 32 hexdecimal digits grouped by four. Groups are
7510 separated by colons.
7511 For example, fe80:0000:0000:0000:021e:c2ff:fed2:b030.
7512 </desc>
7513 <attribute name="name" type="wstring" readonly="yes">
7514 <desc>Returns the host network interface name.</desc>
7515 </attribute>
7516
7517 <attribute name="id" type="uuid" mod="string" readonly="yes">
7518 <desc>Returns the interface UUID.</desc>
7519 </attribute>
7520
7521 <attribute name="networkName" type="wstring" readonly="yes">
7522 <desc>Returns the name of a virtual network the interface gets attached to.</desc>
7523 </attribute>
7524
7525 <attribute name="dhcpEnabled" type="boolean" readonly="yes">
7526 <desc>Specifies whether the DHCP is enabled for the interface.</desc>
7527 </attribute>
7528
7529 <attribute name="IPAddress" type="wstring" readonly="yes">
7530 <desc>Returns the IP V4 address of the interface.</desc>
7531 </attribute>
7532
7533 <attribute name="networkMask" type="wstring" readonly="yes">
7534 <desc>Returns the network mask of the interface.</desc>
7535 </attribute>
7536
7537 <attribute name="IPV6Supported" type="boolean" readonly="yes">
7538 <desc>Specifies whether the IP V6 is supported/enabled for the interface.</desc>
7539 </attribute>
7540
7541 <attribute name="IPV6Address" type="wstring" readonly="yes">
7542 <desc>Returns the IP V6 address of the interface.</desc>
7543 </attribute>
7544
7545 <attribute name="IPV6NetworkMaskPrefixLength" type="unsigned long" readonly="yes">
7546 <desc>Returns the length IP V6 network mask prefix of the interface.</desc>
7547 </attribute>
7548
7549 <attribute name="hardwareAddress" type="wstring" readonly="yes">
7550 <desc>Returns the hardware address. For Ethernet it is MAC address.</desc>
7551 </attribute>
7552
7553 <attribute name="mediumType" type="HostNetworkInterfaceMediumType" readonly="yes">
7554 <desc>Type of protocol encapsulation used.</desc>
7555 </attribute>
7556
7557 <attribute name="status" type="HostNetworkInterfaceStatus" readonly="yes">
7558 <desc>Status of the interface.</desc>
7559 </attribute>
7560
7561 <attribute name="interfaceType" type="HostNetworkInterfaceType" readonly="yes">
7562 <desc>specifies the host interface type.</desc>
7563 </attribute>
7564
7565 <method name="enableStaticIpConfig">
7566 <desc>sets and enables the static IP V4 configuration for the given interface.</desc>
7567 <param name="IPAddress" type="wstring" dir="in">
7568 <desc>
7569 IP address.
7570 </desc>
7571 </param>
7572 <param name="networkMask" type="wstring" dir="in">
7573 <desc>
7574 network mask.
7575 </desc>
7576 </param>
7577 </method>
7578
7579 <method name="enableStaticIpConfigV6">
7580 <desc>sets and enables the static IP V6 configuration for the given interface.</desc>
7581 <param name="IPV6Address" type="wstring" dir="in">
7582 <desc>
7583 IP address.
7584 </desc>
7585 </param>
7586 <param name="IPV6NetworkMaskPrefixLength" type="unsigned long" dir="in">
7587 <desc>
7588 network mask.
7589 </desc>
7590 </param>
7591 </method>
7592
7593 <method name="enableDynamicIpConfig">
7594 <desc>enables the dynamic IP configuration.</desc>
7595 </method>
7596
7597 <method name="dhcpRediscover">
7598 <desc>refreshes the IP configuration for dhcp-enabled interface.</desc>
7599 </method>
7600
7601 </interface>
7602
7603 <interface
7604 name="IHost" extends="$unknown"
7605 uuid="dab4a2b8-c735-4f08-94fc-9bec84182e2f"
7606 wsmap="managed"
7607 >
7608 <desc>
7609 The IHost interface represents the physical machine that this VirtualBox
7610 installation runs on.
7611
7612 An object implementing this interface is returned by the
7613 <link to="IVirtualBox::host" /> attribute. This interface contains
7614 read-only information about the host's physical hardware (such as what
7615 processors and disks are available, what the host operating system is,
7616 and so on) and also allows for manipulating some of the host's hardware,
7617 such as global USB device filters and host interface networking.
7618
7619 </desc>
7620 <attribute name="DVDDrives" type="IMedium" readonly="yes" safearray="yes">
7621 <desc>List of DVD drives available on the host.</desc>
7622 </attribute>
7623
7624 <attribute name="floppyDrives" type="IMedium" readonly="yes" safearray="yes">
7625 <desc>List of floppy drives available on the host.</desc>
7626 </attribute>
7627
7628 <attribute name="USBDevices" type="IHostUSBDevice" readonly="yes" safearray="yes">
7629 <desc>
7630 List of USB devices currently attached to the host.
7631 Once a new device is physically attached to the host computer,
7632 it appears in this list and remains there until detached.
7633
7634 <note>
7635 If USB functionality is not available in the given edition of
7636 VirtualBox, this method will set the result code to @c E_NOTIMPL.
7637 </note>
7638 </desc>
7639 </attribute>
7640
7641 <attribute name="USBDeviceFilters" type="IHostUSBDeviceFilter" readonly="yes" safearray="yes">
7642 <desc>
7643 List of USB device filters in action.
7644 When a new device is physically attached to the host computer,
7645 filters from this list are applied to it (in order they are stored
7646 in the list). The first matched filter will determine the
7647 <link to="IHostUSBDeviceFilter::action">action</link>
7648 performed on the device.
7649
7650 Unless the device is ignored by these filters, filters of all
7651 currently running virtual machines
7652 (<link to="IUSBController::deviceFilters"/>) are applied to it.
7653
7654 <note>
7655 If USB functionality is not available in the given edition of
7656 VirtualBox, this method will set the result code to @c E_NOTIMPL.
7657 </note>
7658
7659 <see><link to="IHostUSBDeviceFilter"/>,
7660 <link to="USBDeviceState"/></see>
7661 </desc>
7662 </attribute>
7663
7664 <attribute name="networkInterfaces" type="IHostNetworkInterface" safearray="yes" readonly="yes">
7665 <desc>List of host network interfaces currently defined on the host.</desc>
7666 </attribute>
7667
7668 <attribute name="processorCount" type="unsigned long" readonly="yes">
7669 <desc>Number of (logical) CPUs installed in the host system.</desc>
7670 </attribute>
7671
7672 <attribute name="processorOnlineCount" type="unsigned long" readonly="yes">
7673 <desc>Number of (logical) CPUs online in the host system.</desc>
7674 </attribute>
7675
7676 <attribute name="processorCoreCount" type="unsigned long" readonly="yes">
7677 <desc>Number of physical processor cores installed in the host system.</desc>
7678 </attribute>
7679
7680 <method name="getProcessorSpeed">
7681 <desc>Query the (approximate) maximum speed of a specified host CPU in
7682 Megahertz.
7683 </desc>
7684 <param name="cpuId" type="unsigned long" dir="in">
7685 <desc>
7686 Identifier of the CPU.
7687 </desc>
7688 </param>
7689 <param name="speed" type="unsigned long" dir="return">
7690 <desc>
7691 Speed value. 0 is returned if value is not known or @a cpuId is
7692 invalid.
7693 </desc>
7694 </param>
7695 </method>
7696
7697 <method name="getProcessorFeature">
7698 <desc>Query whether a CPU feature is supported or not.</desc>
7699 <param name="feature" type="ProcessorFeature" dir="in">
7700 <desc>
7701 CPU Feature identifier.
7702 </desc>
7703 </param>
7704 <param name="supported" type="boolean" dir="return">
7705 <desc>
7706 Feature is supported or not.
7707 </desc>
7708 </param>
7709 </method>
7710
7711 <method name="getProcessorDescription">
7712 <desc>Query the model string of a specified host CPU.
7713 </desc>
7714 <param name="cpuId" type="unsigned long" dir="in">
7715 <desc>
7716 Identifier of the CPU.
7717 <note>
7718 The current implementation might not necessarily return the
7719 description for this exact CPU.
7720 </note>
7721 </desc>
7722 </param>
7723 <param name="description" type="wstring" dir="return">
7724 <desc>
7725 Model string. An empty string is returned if value is not known or
7726 @a cpuId is invalid.
7727 </desc>
7728 </param>
7729 </method>
7730
7731 <method name="getProcessorCPUIDLeaf">
7732 <desc>
7733 Returns the CPU cpuid information for the specified leaf.
7734 </desc>
7735 <param name="cpuId" type="unsigned long" dir="in">
7736 <desc>
7737 Identifier of the CPU. The CPU most be online.
7738 <note>
7739 The current implementation might not necessarily return the
7740 description for this exact CPU.
7741 </note>
7742 </desc>
7743 </param>
7744 <param name="leaf" type="unsigned long" dir="in">
7745 <desc>
7746 CPUID leaf index (eax).
7747 </desc>
7748 </param>
7749 <param name="subLeaf" type="unsigned long" dir="in">
7750 <desc>
7751 CPUID leaf sub index (ecx). This currently only applies to cache
7752 information on Intel CPUs. Use 0 if retrieving values for
7753 <link to="IMachine::setCPUIDLeaf"/>.
7754 </desc>
7755 </param>
7756 <param name="valEax" type="unsigned long" dir="out">
7757 <desc>
7758 CPUID leaf value for register eax.
7759 </desc>
7760 </param>
7761 <param name="valEbx" type="unsigned long" dir="out">
7762 <desc>
7763 CPUID leaf value for register ebx.
7764 </desc>
7765 </param>
7766 <param name="valEcx" type="unsigned long" dir="out">
7767 <desc>
7768 CPUID leaf value for register ecx.
7769 </desc>
7770 </param>
7771 <param name="valEdx" type="unsigned long" dir="out">
7772 <desc>
7773 CPUID leaf value for register edx.
7774 </desc>
7775 </param>
7776 </method>
7777
7778 <attribute name="memorySize" type="unsigned long" readonly="yes">
7779 <desc>Amount of system memory in megabytes installed in the host system.</desc>
7780 </attribute>
7781
7782 <attribute name="memoryAvailable" type="unsigned long" readonly="yes">
7783 <desc>Available system memory in the host system.</desc>
7784 </attribute>
7785
7786 <attribute name="operatingSystem" type="wstring" readonly="yes">
7787 <desc>Name of the host system's operating system.</desc>
7788 </attribute>
7789
7790 <attribute name="OSVersion" type="wstring" readonly="yes">
7791 <desc>Host operating system's version string.</desc>
7792 </attribute>
7793
7794 <attribute name="UTCTime" type="long long" readonly="yes">
7795 <desc>Returns the current host time in milliseconds since 1970-01-01 UTC.</desc>
7796 </attribute>
7797
7798 <attribute name="Acceleration3DAvailable" type="boolean" readonly="yes">
7799 <desc>Returns @c true when the host supports 3D hardware acceleration.</desc>
7800 </attribute>
7801
7802 <method name="createHostOnlyNetworkInterface">
7803 <desc>
7804 Creates a new adapter for Host Only Networking.
7805 <result name="E_INVALIDARG">
7806 Host network interface @a name already exists.
7807 </result>
7808 </desc>
7809 <param name="hostInterface" type="IHostNetworkInterface" dir="out">
7810 <desc>
7811 Created host interface object.
7812 </desc>
7813 </param>
7814 <param name="progress" type="IProgress" dir="return">
7815 <desc>
7816 Progress object to track the operation completion.
7817 </desc>
7818 </param>
7819 </method>
7820
7821 <method name="removeHostOnlyNetworkInterface">
7822 <desc>
7823 Removes the given Host Only Networking interface.
7824 <result name="VBOX_E_OBJECT_NOT_FOUND">
7825 No host network interface matching @a id found.
7826 </result>
7827 </desc>
7828 <param name="id" type="uuid" mod="string" dir="in">
7829 <desc>
7830 Adapter GUID.
7831 </desc>
7832 </param>
7833 <param name="progress" type="IProgress" dir="return">
7834 <desc>
7835 Progress object to track the operation completion.
7836 </desc>
7837 </param>
7838 </method>
7839
7840 <method name="createUSBDeviceFilter">
7841 <desc>
7842 Creates a new USB device filter. All attributes except
7843 the filter name are set to empty (any match),
7844 <i>active</i> is @c false (the filter is not active).
7845
7846 The created filter can be added to the list of filters using
7847 <link to="#insertUSBDeviceFilter"/>.
7848
7849 <see><link to="#USBDeviceFilters"/></see>
7850 </desc>
7851 <param name="name" type="wstring" dir="in">
7852 <desc>
7853 Filter name. See <link to="IUSBDeviceFilter::name"/> for more information.
7854 </desc>
7855 </param>
7856 <param name="filter" type="IHostUSBDeviceFilter" dir="return">
7857 <desc>Created filter object.</desc>
7858 </param>
7859 </method>
7860
7861 <method name="insertUSBDeviceFilter">
7862 <desc>
7863 Inserts the given USB device to the specified position
7864 in the list of filters.
7865
7866 Positions are numbered starting from @c 0. If the specified
7867 position is equal to or greater than the number of elements in
7868 the list, the filter is added at the end of the collection.
7869
7870 <note>
7871 Duplicates are not allowed, so an attempt to insert a
7872 filter already in the list is an error.
7873 </note>
7874 <note>
7875 If USB functionality is not available in the given edition of
7876 VirtualBox, this method will set the result code to @c E_NOTIMPL.
7877 </note>
7878
7879 <see><link to="#USBDeviceFilters"/></see>
7880
7881 <result name="VBOX_E_INVALID_OBJECT_STATE">
7882 USB device filter is not created within this VirtualBox instance.
7883 </result>
7884 <result name="E_INVALIDARG">
7885 USB device filter already in list.
7886 </result>
7887
7888 </desc>
7889 <param name="position" type="unsigned long" dir="in">
7890 <desc>Position to insert the filter to.</desc>
7891 </param>
7892 <param name="filter" type="IHostUSBDeviceFilter" dir="in">
7893 <desc>USB device filter to insert.</desc>
7894 </param>
7895 </method>
7896
7897 <method name="removeUSBDeviceFilter">
7898 <desc>
7899 Removes a USB device filter from the specified position in the
7900 list of filters.
7901
7902 Positions are numbered starting from @c 0. Specifying a
7903 position equal to or greater than the number of elements in
7904 the list will produce an error.
7905
7906 <note>
7907 If USB functionality is not available in the given edition of
7908 VirtualBox, this method will set the result code to @c E_NOTIMPL.
7909 </note>
7910
7911 <see><link to="#USBDeviceFilters"/></see>
7912
7913 <result name="E_INVALIDARG">
7914 USB device filter list empty or invalid @a position.
7915 </result>
7916
7917 </desc>
7918 <param name="position" type="unsigned long" dir="in">
7919 <desc>Position to remove the filter from.</desc>
7920 </param>
7921 </method>
7922
7923 <method name="findHostDVDDrive">
7924 <desc>
7925 Searches for a host DVD drive with the given @c name.
7926
7927 <result name="VBOX_E_OBJECT_NOT_FOUND">
7928 Given @c name does not correspond to any host drive.
7929 </result>
7930
7931 </desc>
7932 <param name="name" type="wstring" dir="in">
7933 <desc>Name of the host drive to search for</desc>
7934 </param>
7935 <param name="drive" type="IMedium" dir="return">
7936 <desc>Found host drive object</desc>
7937 </param>
7938 </method>
7939
7940 <method name="findHostFloppyDrive">
7941 <desc>
7942 Searches for a host floppy drive with the given @c name.
7943
7944 <result name="VBOX_E_OBJECT_NOT_FOUND">
7945 Given @c name does not correspond to any host floppy drive.
7946 </result>
7947
7948 </desc>
7949 <param name="name" type="wstring" dir="in">
7950 <desc>Name of the host floppy drive to search for</desc>
7951 </param>
7952 <param name="drive" type="IMedium" dir="return">
7953 <desc>Found host floppy drive object</desc>
7954 </param>
7955 </method>
7956
7957 <method name="findHostNetworkInterfaceByName">
7958 <desc>
7959 Searches through all host network interfaces for an interface with
7960 the given @c name.
7961 <note>
7962 The method returns an error if the given @c name does not
7963 correspond to any host network interface.
7964 </note>
7965 </desc>
7966 <param name="name" type="wstring" dir="in">
7967 <desc>Name of the host network interface to search for.</desc>
7968 </param>
7969 <param name="networkInterface" type="IHostNetworkInterface" dir="return">
7970 <desc>Found host network interface object.</desc>
7971 </param>
7972 </method>
7973 <method name="findHostNetworkInterfaceById">
7974 <desc>
7975 Searches through all host network interfaces for an interface with
7976 the given GUID.
7977 <note>
7978 The method returns an error if the given GUID does not
7979 correspond to any host network interface.
7980 </note>
7981 </desc>
7982 <param name="id" type="uuid" mod="string" dir="in">
7983 <desc>GUID of the host network interface to search for.</desc>
7984 </param>
7985 <param name="networkInterface" type="IHostNetworkInterface" dir="return">
7986 <desc>Found host network interface object.</desc>
7987 </param>
7988 </method>
7989 <method name="findHostNetworkInterfacesOfType">
7990 <desc>
7991 Searches through all host network interfaces and returns a list of interfaces of the specified type
7992 </desc>
7993 <param name="type" type="HostNetworkInterfaceType" dir="in">
7994 <desc>type of the host network interfaces to search for.</desc>
7995 </param>
7996 <param name="networkInterfaces" type="IHostNetworkInterface" safearray="yes" dir="return">
7997 <desc>Found host network interface objects.</desc>
7998 </param>
7999 </method>
8000
8001 <method name="findUSBDeviceById">
8002 <desc>
8003 Searches for a USB device with the given UUID.
8004
8005 <result name="VBOX_E_OBJECT_NOT_FOUND">
8006 Given @c id does not correspond to any USB device.
8007 </result>
8008
8009 <see><link to="IUSBDevice::id"/></see>
8010 </desc>
8011 <param name="id" type="uuid" mod="string" dir="in">
8012 <desc>UUID of the USB device to search for.</desc>
8013 </param>
8014 <param name="device" type="IHostUSBDevice" dir="return">
8015 <desc>Found USB device object.</desc>
8016 </param>
8017 </method>
8018
8019 <method name="findUSBDeviceByAddress">
8020 <desc>
8021 Searches for a USB device with the given host address.
8022
8023 <result name="VBOX_E_OBJECT_NOT_FOUND">
8024 Given @c name does not correspond to any USB device.
8025 </result>
8026
8027 <see><link to="IUSBDevice::address"/></see>
8028 </desc>
8029 <param name="name" type="wstring" dir="in">
8030 <desc>
8031 Address of the USB device (as assigned by the host) to
8032 search for.
8033 </desc>
8034 </param>
8035 <param name="device" type="IHostUSBDevice" dir="return">
8036 <desc>Found USB device object.</desc>
8037 </param>
8038 </method>
8039
8040 <method name="generateMACAddress">
8041 <desc>
8042 Generates a valid Ethernet MAC address, 12 hexadecimal characters.
8043 </desc>
8044 <param name="address" type="wstring" dir="return">
8045 <desc>New Ethernet MAC address.</desc>
8046 </param>
8047 </method>
8048
8049 </interface>
8050
8051 <!--
8052 // ISystemProperties
8053 /////////////////////////////////////////////////////////////////////////
8054 -->
8055
8056 <interface
8057 name="ISystemProperties"
8058 extends="$unknown"
8059 uuid="20fc263c-e1e9-4e86-b9b0-835950790d13"
8060 wsmap="managed"
8061 >
8062 <desc>
8063 The ISystemProperties interface represents global properties of the given
8064 VirtualBox installation.
8065
8066 These properties define limits and default values for various attributes
8067 and parameters. Most of the properties are read-only, but some can be
8068 changed by a user.
8069 </desc>
8070
8071 <attribute name="minGuestRAM" type="unsigned long" readonly="yes">
8072 <desc>Minimum guest system memory in Megabytes.</desc>
8073 </attribute>
8074
8075 <attribute name="maxGuestRAM" type="unsigned long" readonly="yes">
8076 <desc>Maximum guest system memory in Megabytes.</desc>
8077 </attribute>
8078
8079 <attribute name="minGuestVRAM" type="unsigned long" readonly="yes">
8080 <desc>Minimum guest video memory in Megabytes.</desc>
8081 </attribute>
8082
8083 <attribute name="maxGuestVRAM" type="unsigned long" readonly="yes">
8084 <desc>Maximum guest video memory in Megabytes.</desc>
8085 </attribute>
8086
8087 <attribute name="minGuestCPUCount" type="unsigned long" readonly="yes">
8088 <desc>Minimum CPU count.</desc>
8089 </attribute>
8090
8091 <attribute name="maxGuestCPUCount" type="unsigned long" readonly="yes">
8092 <desc>Maximum CPU count.</desc>
8093 </attribute>
8094
8095 <attribute name="maxGuestMonitors" type="unsigned long" readonly="yes">
8096 <desc>Maximum of monitors which could be connected.</desc>
8097 </attribute>
8098
8099 <attribute name="infoVDSize" type="long long" readonly="yes">
8100 <desc>Maximum size of a virtual disk image in bytes. Informational value,
8101 does not reflect the limits of any virtual disk image format.</desc>
8102 </attribute>
8103
8104 <attribute name="serialPortCount" type="unsigned long" readonly="yes">
8105 <desc>
8106 Maximum number of serial ports associated with every
8107 <link to="IMachine"/> instance.
8108 </desc>
8109 </attribute>
8110
8111 <attribute name="parallelPortCount" type="unsigned long" readonly="yes">
8112 <desc>
8113 Maximum number of parallel ports associated with every
8114 <link to="IMachine"/> instance.
8115 </desc>
8116 </attribute>
8117
8118 <attribute name="maxBootPosition" type="unsigned long" readonly="yes">
8119 <desc>
8120 Maximum device position in the boot order. This value corresponds
8121 to the total number of devices a machine can boot from, to make it
8122 possible to include all possible devices to the boot list.
8123 <see><link to="IMachine::setBootOrder"/></see>
8124 </desc>
8125 </attribute>
8126
8127 <attribute name="defaultMachineFolder" type="wstring">
8128 <desc>
8129 Full path to the default directory used to create new or open
8130 existing machines when a machine settings file name contains no
8131 path.
8132
8133 Starting with VirtualBox 4.0, by default, this attribute contains
8134 the full path of folder named "VirtualBox VMs" in the user's
8135 home directory, which depends on the host platform.
8136
8137 When setting this attribute, a full path must be specified.
8138 Setting this property to @c null or an empty string or the
8139 special value "Machines" (for compatibility reasons) will restore
8140 that default value.
8141
8142 If the folder specified herein does not exist, it will be created
8143 automatically as needed.
8144
8145 <see>
8146 <link to="IVirtualBox::createMachine"/>,
8147 <link to="IVirtualBox::openMachine"/>
8148 </see>
8149 </desc>
8150 </attribute>
8151
8152 <attribute name="mediumFormats" type="IMediumFormat" safearray="yes" readonly="yes">
8153 <desc>
8154 List of all medium storage formats supported by this VirtualBox
8155 installation.
8156
8157 Keep in mind that the medium format identifier
8158 (<link to="IMediumFormat::id"/>) used in other API calls like
8159 <link to="IVirtualBox::createHardDisk"/> to refer to a particular
8160 medium format is a case-insensitive string. This means that, for
8161 example, all of the following strings:
8162 <pre>
8163 "VDI"
8164 "vdi"
8165 "VdI"</pre>
8166 refer to the same medium format.
8167
8168 Note that the virtual medium framework is backend-based, therefore
8169 the list of supported formats depends on what backends are currently
8170 installed.
8171
8172 <see><link to="IMediumFormat"/></see>
8173 </desc>
8174 </attribute>
8175
8176 <attribute name="defaultHardDiskFormat" type="wstring">
8177 <desc>
8178 Identifier of the default medium format used by VirtualBox.
8179
8180 The medium format set by this attribute is used by VirtualBox
8181 when the medium format was not specified explicitly. One example is
8182 <link to="IVirtualBox::createHardDisk"/> with the empty
8183 format argument. A more complex example is implicit creation of
8184 differencing media when taking a snapshot of a virtual machine:
8185 this operation will try to use a format of the parent medium first
8186 and if this format does not support differencing media the default
8187 format specified by this argument will be used.
8188
8189 The list of supported medium formats may be obtained by the
8190 <link to="#mediumFormats"/> call. Note that the default medium
8191 format must have a capability to create differencing media;
8192 otherwise operations that create media implicitly may fail
8193 unexpectedly.
8194
8195 The initial value of this property is <tt>"VDI"</tt> in the current
8196 version of the VirtualBox product, but may change in the future.
8197
8198 <note>
8199 Setting this property to @c null or empty string will restore the
8200 initial value.
8201 </note>
8202
8203 <see>
8204 <link to="#mediumFormats"/>,
8205 <link to="IMediumFormat::id"/>,
8206 <link to="IVirtualBox::createHardDisk"/>
8207 </see>
8208 </desc>
8209 </attribute>
8210
8211 <attribute name="freeDiskSpaceWarning" type="long long">
8212 <desc>Issue a warning if the free disk space is below (or in some disk
8213 intensive operation is expected to go below) the given size in
8214 bytes.</desc>
8215 </attribute>
8216
8217 <attribute name="freeDiskSpacePercentWarning" type="unsigned long">
8218 <desc>Issue a warning if the free disk space is below (or in some disk
8219 intensive operation is expected to go below) the given percentage.</desc>
8220 </attribute>
8221
8222 <attribute name="freeDiskSpaceError" type="long long">
8223 <desc>Issue an error if the free disk space is below (or in some disk
8224 intensive operation is expected to go below) the given size in
8225 bytes.</desc>
8226 </attribute>
8227
8228 <attribute name="freeDiskSpacePercentError" type="unsigned long">
8229 <desc>Issue an error if the free disk space is below (or in some disk
8230 intensive operation is expected to go below) the given percentage.</desc>
8231 </attribute>
8232
8233 <attribute name="VRDEAuthLibrary" type="wstring">
8234 <desc>
8235 Library that provides authentication for Remote Desktop clients. The library
8236 is used if a virtual machine's authentication type is set to "external"
8237 in the VM RemoteDisplay configuration.
8238
8239 The system library extension (".DLL" or ".so") must be omitted.
8240 A full path can be specified; if not, then the library must reside on the
8241 system's default library path.
8242
8243 The default value of this property is <tt>"VBoxAuth"</tt>. There is a library
8244 of that name in one of the default VirtualBox library directories.
8245
8246 For details about VirtualBox authentication libraries and how to implement
8247 them, please refer to the VirtualBox manual.
8248
8249 <note>
8250 Setting this property to @c null or empty string will restore the
8251 initial value.
8252 </note>
8253 </desc>
8254 </attribute>
8255
8256 <attribute name="webServiceAuthLibrary" type="wstring">
8257 <desc>
8258 Library that provides authentication for webservice clients. The library
8259 is used if a virtual machine's authentication type is set to "external"
8260 in the VM RemoteDisplay configuration and will be called from
8261 within the <link to="IWebsessionManager::logon" /> implementation.
8262
8263 As opposed to <link to="ISystemProperties::VRDEAuthLibrary" />,
8264 there is no per-VM setting for this, as the webservice is a global
8265 resource (if it is running). Only for this setting (for the webservice),
8266 setting this value to a literal <tt>"null"</tt> string disables authentication,
8267 meaning that <link to="IWebsessionManager::logon" /> will always succeed,
8268 no matter what user name and password are supplied.
8269
8270 The initial value of this property is <tt>"VBoxAuth"</tt>,
8271 meaning that the webservice will use the same authentication
8272 library that is used by default for VRDE (again, see
8273 <link to="ISystemProperties::VRDEAuthLibrary" />).
8274 The format and calling convention of authentication libraries
8275 is the same for the webservice as it is for VRDE.
8276
8277 <note>
8278 Setting this property to @c null or empty string will restore the
8279 initial value.
8280 </note>
8281 </desc>
8282 </attribute>
8283
8284 <attribute name="defaultVRDEExtPack" type="wstring">
8285 <desc>
8286 The name of the extension pack providing the default VRDE.
8287
8288 This attribute is for choosing between multiple extension packs
8289 providing VRDE. If only one is installed, it will automatically be the
8290 default one. The attribute value can be empty if no VRDE extension
8291 pack is installed.
8292
8293 For details about VirtualBox Remote Desktop Extension and how to
8294 implement one, please refer to the VirtualBox SDK.
8295 </desc>
8296 </attribute>
8297
8298 <attribute name="logHistoryCount" type="unsigned long">
8299 <desc>
8300 This value specifies how many old release log files are kept.
8301 </desc>
8302 </attribute>
8303
8304 <attribute name="defaultAudioDriver" type="AudioDriverType" readonly="yes">
8305 <desc>This value hold the default audio driver for the current
8306 system.</desc>
8307 </attribute>
8308
8309 <attribute name="autostartDatabasePath" type="wstring">
8310 <desc>
8311 The path to the autostart database. Depending on the host this might
8312 be a filesystem path or something else.
8313 </desc>
8314 </attribute>
8315
8316 <method name="getMaxNetworkAdapters">
8317 <desc>
8318 Maximum total number of network adapters associated with every
8319 <link to="IMachine"/> instance.
8320 </desc>
8321
8322 <param name="chipset" type="ChipsetType" dir="in">
8323 <desc>The chipset type to get the value for.</desc>
8324 </param>
8325
8326
8327 <param name="maxNetworkAdapters" type="unsigned long" dir="return">
8328 <desc>The maximum total number of network adapters allowed.</desc>
8329 </param>
8330
8331 </method>
8332
8333 <method name="getMaxNetworkAdaptersOfType">
8334 <desc>
8335 Maximum number of network adapters of a given attachment type,
8336 associated with every <link to="IMachine"/> instance.
8337 </desc>
8338
8339 <param name="chipset" type="ChipsetType" dir="in">
8340 <desc>The chipset type to get the value for.</desc>
8341 </param>
8342
8343 <param name="type" type="NetworkAttachmentType" dir="in">
8344 <desc>Type of attachment.</desc>
8345 </param>
8346
8347 <param name="maxNetworkAdapters" type="unsigned long" dir="return">
8348 <desc>The maximum number of network adapters allowed for
8349 particular chipset and attachment type.</desc>
8350 </param>
8351
8352 </method>
8353
8354
8355 <method name="getMaxDevicesPerPortForStorageBus">
8356 <desc>Returns the maximum number of devices which can be attached to a port
8357 for the given storage bus.</desc>
8358
8359 <param name="bus" type="StorageBus" dir="in">
8360 <desc>The storage bus type to get the value for.</desc>
8361 </param>
8362
8363 <param name="maxDevicesPerPort" type="unsigned long" dir="return">
8364 <desc>The maximum number of devices which can be attached to the port for the given
8365 storage bus.</desc>
8366 </param>
8367 </method>
8368
8369 <method name="getMinPortCountForStorageBus">
8370 <desc>Returns the minimum number of ports the given storage bus supports.</desc>
8371
8372 <param name="bus" type="StorageBus" dir="in">
8373 <desc>The storage bus type to get the value for.</desc>
8374 </param>
8375
8376 <param name="minPortCount" type="unsigned long" dir="return">
8377 <desc>The minimum number of ports for the given storage bus.</desc>
8378 </param>
8379 </method>
8380
8381 <method name="getMaxPortCountForStorageBus">
8382 <desc>Returns the maximum number of ports the given storage bus supports.</desc>
8383
8384 <param name="bus" type="StorageBus" dir="in">
8385 <desc>The storage bus type to get the value for.</desc>
8386 </param>
8387
8388 <param name="maxPortCount" type="unsigned long" dir="return">
8389 <desc>The maximum number of ports for the given storage bus.</desc>
8390 </param>
8391 </method>
8392
8393 <method name="getMaxInstancesOfStorageBus">
8394 <desc>Returns the maximum number of storage bus instances which
8395 can be configured for each VM. This corresponds to the number of
8396 storage controllers one can have. Value may depend on chipset type
8397 used.</desc>
8398
8399 <param name="chipset" type="ChipsetType" dir="in">
8400 <desc>The chipset type to get the value for.</desc>
8401 </param>
8402
8403 <param name="bus" type="StorageBus" dir="in">
8404 <desc>The storage bus type to get the value for.</desc>
8405 </param>
8406
8407 <param name="maxInstances" type="unsigned long" dir="return">
8408 <desc>The maximum number of instances for the given storage bus.</desc>
8409 </param>
8410 </method>
8411
8412 <method name="getDeviceTypesForStorageBus">
8413 <desc>Returns list of all the supported device types
8414 (<link to="DeviceType"/>) for the given type of storage
8415 bus.</desc>
8416
8417 <param name="bus" type="StorageBus" dir="in">
8418 <desc>The storage bus type to get the value for.</desc>
8419 </param>
8420
8421 <param name="deviceTypes" type="DeviceType" safearray="yes" dir="return">
8422 <desc>The list of all supported device types for the given storage bus.</desc>
8423 </param>
8424 </method>
8425
8426 <method name="getDefaultIoCacheSettingForStorageController">
8427 <desc>Returns the default I/O cache setting for the
8428 given storage controller</desc>
8429
8430 <param name="controllerType" type="StorageControllerType" dir="in">
8431 <desc>The storage controller to the setting for.</desc>
8432 </param>
8433
8434 <param name="enabled" type="boolean" dir="return">
8435 <desc>Returned flag indicating the default value</desc>
8436 </param>
8437 </method>
8438 </interface>
8439
8440 <!--
8441 // IGuest
8442 /////////////////////////////////////////////////////////////////////////
8443 -->
8444
8445 <interface
8446 name="IGuestOSType" extends="$unknown"
8447 uuid="63a03874-e495-41f7-a6dd-48b92fba8355"
8448 wsmap="struct"
8449 >
8450 <desc>
8451 </desc>
8452
8453 <attribute name="familyId" type="wstring" readonly="yes">
8454 <desc>Guest OS family identifier string.</desc>
8455 </attribute>
8456
8457 <attribute name="familyDescription" type="wstring" readonly="yes">
8458 <desc>Human readable description of the guest OS family.</desc>
8459 </attribute>
8460
8461 <attribute name="id" type="wstring" readonly="yes">
8462 <desc>Guest OS identifier string.</desc>
8463 </attribute>
8464
8465 <attribute name="description" type="wstring" readonly="yes">
8466 <desc>Human readable description of the guest OS.</desc>
8467 </attribute>
8468
8469 <attribute name="is64Bit" type="boolean" readonly="yes">
8470 <desc>Returns @c true if the given OS is 64-bit</desc>
8471 </attribute>
8472
8473 <attribute name="recommendedIOAPIC" type="boolean" readonly="yes">
8474 <desc>Returns @c true if IO APIC recommended for this OS type.</desc>
8475 </attribute>
8476
8477 <attribute name="recommendedVirtEx" type="boolean" readonly="yes">
8478 <desc>Returns @c true if VT-x or AMD-V recommended for this OS type.</desc>
8479 </attribute>
8480
8481 <attribute name="recommendedRAM" type="unsigned long" readonly="yes">
8482 <desc>Recommended RAM size in Megabytes.</desc>
8483 </attribute>
8484
8485 <attribute name="recommendedVRAM" type="unsigned long" readonly="yes">
8486 <desc>Recommended video RAM size in Megabytes.</desc>
8487 </attribute>
8488
8489 <attribute name="recommended2DVideoAcceleration" type="boolean" readonly="yes">
8490 <desc>Returns @c true if 2D video acceleration is recommended for this OS type.</desc>
8491 </attribute>
8492
8493 <attribute name="recommended3DAcceleration" type="boolean" readonly="yes">
8494 <desc>Returns @c true if 3D acceleration is recommended for this OS type.</desc>
8495 </attribute>
8496
8497 <attribute name="recommendedHDD" type="long long" readonly="yes">
8498 <desc>Recommended hard disk size in bytes.</desc>
8499 </attribute>
8500
8501 <attribute name="adapterType" type="NetworkAdapterType" readonly="yes">
8502 <desc>Returns recommended network adapter for this OS type.</desc>
8503 </attribute>
8504
8505 <attribute name="recommendedPae" type="boolean" readonly="yes">
8506 <desc>Returns @c true if using PAE is recommended for this OS type.</desc>
8507 </attribute>
8508
8509 <attribute name="recommendedDvdStorageController" type="StorageControllerType" readonly="yes">
8510 <desc>Recommended storage controller type for DVD/CD drives.</desc>
8511 </attribute>
8512
8513 <attribute name="recommendedDvdStorageBus" type="StorageBus" readonly="yes">
8514 <desc>Recommended storage bus type for DVD/CD drives.</desc>
8515 </attribute>
8516
8517 <attribute name="recommendedHdStorageController" type="StorageControllerType" readonly="yes">
8518 <desc>Recommended storage controller type for HD drives.</desc>
8519 </attribute>
8520
8521 <attribute name="recommendedHdStorageBus" type="StorageBus" readonly="yes">
8522 <desc>Recommended storage bus type for HD drives.</desc>
8523 </attribute>
8524
8525 <attribute name="recommendedFirmware" type="FirmwareType" readonly="yes">
8526 <desc>Recommended firmware type.</desc>
8527 </attribute>
8528
8529 <attribute name="recommendedUsbHid" type="boolean" readonly="yes">
8530 <desc>Returns @c true if using USB Human Interface Devices, such as keyboard and mouse recommended.</desc>
8531 </attribute>
8532
8533 <attribute name="recommendedHpet" type="boolean" readonly="yes">
8534 <desc>Returns @c true if using HPET is recommended for this OS type.</desc>
8535 </attribute>
8536
8537 <attribute name="recommendedUsbTablet" type="boolean" readonly="yes">
8538 <desc>Returns @c true if using a USB Tablet is recommended.</desc>
8539 </attribute>
8540
8541 <attribute name="recommendedRtcUseUtc" type="boolean" readonly="yes">
8542 <desc>Returns @c true if the RTC of this VM should be set to UTC</desc>
8543 </attribute>
8544
8545 <attribute name="recommendedChipset" type="ChipsetType" readonly="yes">
8546 <desc>Recommended chipset type.</desc>
8547 </attribute>
8548
8549 <attribute name="recommendedAudioController" type="AudioControllerType" readonly="yes">
8550 <desc>Recommended audio type.</desc>
8551 </attribute>
8552
8553 <attribute name="recommendedFloppy" type="boolean" readonly="yes">
8554 <desc>Returns @c true a floppy drive is recommended for this OS type.</desc>
8555 </attribute>
8556
8557 <attribute name="recommendedUsb" type="boolean" readonly="yes">
8558 <desc>Returns @c true a USB controller is recommended for this OS type.</desc>
8559 </attribute>
8560
8561 </interface>
8562
8563 <enum
8564 name="AdditionsFacilityType"
8565 uuid="98f7f957-89fb-49b6-a3b1-31e3285eb1d8"
8566 >
8567 <desc>
8568 Guest Additions facility IDs.
8569 </desc>
8570
8571 <const name="None" value="0">
8572 <desc>No/invalid facility.</desc>
8573 </const>
8574 <const name="VBoxGuestDriver" value="20">
8575 <desc>VirtualBox base driver (VBoxGuest).</desc>
8576 </const>
8577 <const name="AutoLogon" value="90">
8578 <desc>Auto-logon modules (VBoxGINA, VBoxCredProv, pam_vbox).</desc>
8579 </const>
8580 <const name="VBoxService" value="100">
8581 <desc>VirtualBox system service (VBoxService).</desc>
8582 </const>
8583 <const name="VBoxTrayClient" value="101">
8584 <desc>VirtualBox desktop integration (VBoxTray on Windows, VBoxClient on non-Windows).</desc>
8585 </const>
8586 <const name="Seamless" value="1000">
8587 <desc>Seamless guest desktop integration.</desc>
8588 </const>
8589 <const name="Graphics" value="1100">
8590 <desc>Guest graphics mode. If not enabled, seamless rendering will not work, resize hints
8591 are not immediately acted on and guest display resizes are probably not initiated by
8592 the guest additions.
8593 </desc>
8594 </const>
8595 <const name="All" value="2147483646">
8596 <desc>All facilities selected.</desc>
8597 </const>
8598 </enum>
8599
8600 <enum
8601 name="AdditionsFacilityClass"
8602 uuid="446451b2-c88d-4e5d-84c9-91bc7f533f5f"
8603 >
8604 <desc>
8605 Guest Additions facility classes.
8606 </desc>
8607
8608 <const name="None" value="0">
8609 <desc>No/invalid class.</desc>
8610 </const>
8611 <const name="Driver" value="10">
8612 <desc>Driver.</desc>
8613 </const>
8614 <const name="Service" value="30">
8615 <desc>System service.</desc>
8616 </const>
8617 <const name="Program" value="50">
8618 <desc>Program.</desc>
8619 </const>
8620 <const name="Feature" value="100">
8621 <desc>Feature.</desc>
8622 </const>
8623 <const name="ThirdParty" value="999">
8624 <desc>Third party.</desc>
8625 </const>
8626 <const name="All" value="2147483646">
8627 <desc>All facility classes selected.</desc>
8628 </const>
8629 </enum>
8630
8631 <enum
8632 name="AdditionsFacilityStatus"
8633 uuid="ce06f9e1-394e-4fe9-9368-5a88c567dbde"
8634 >
8635 <desc>
8636 Guest Additions facility states.
8637 </desc>
8638
8639 <const name="Inactive" value="0">
8640 <desc>Facility is not active.</desc>
8641 </const>
8642 <const name="Paused" value="1">
8643 <desc>Facility has been paused.</desc>
8644 </const>
8645 <const name="PreInit" value="20">
8646 <desc>Facility is preparing to initialize.</desc>
8647 </const>
8648 <const name="Init" value="30">
8649 <desc>Facility is initializing.</desc>
8650 </const>
8651 <const name="Active" value="50">
8652 <desc>Facility is up and running.</desc>
8653 </const>
8654 <const name="Terminating" value="100">
8655 <desc>Facility is shutting down.</desc>
8656 </const>
8657 <const name="Terminated" value="101">
8658 <desc>Facility successfully shut down.</desc>
8659 </const>
8660 <const name="Failed" value="800">
8661 <desc>Facility failed to start.</desc>
8662 </const>
8663 <const name="Unknown" value="999">
8664 <desc>Facility status is unknown.</desc>
8665 </const>
8666 </enum>
8667
8668 <interface
8669 name="IAdditionsFacility" extends="$unknown"
8670 uuid="54992946-6af1-4e49-98ec-58b558b7291e"
8671 wsmap="struct"
8672 >
8673 <desc>
8674 Structure representing a Guest Additions facility.
8675 </desc>
8676
8677 <attribute name="classType" type="AdditionsFacilityClass" readonly="yes">
8678 <desc>The class this facility is part of.</desc>
8679 </attribute>
8680
8681 <attribute name="lastUpdated" type="long long" readonly="yes">
8682 <desc>
8683 Time stamp of the last status update,
8684 in milliseconds since 1970-01-01 UTC.
8685 </desc>
8686 </attribute>
8687
8688 <attribute name="name" type="wstring" readonly="yes">
8689 <desc>The facility's friendly name.</desc>
8690 </attribute>
8691
8692 <attribute name="status" type="AdditionsFacilityStatus" readonly="yes">
8693 <desc>The current status.</desc>
8694 </attribute>
8695
8696 <attribute name="type" type="AdditionsFacilityType" readonly="yes">
8697 <desc>The facility's type ID.</desc>
8698 </attribute>
8699 </interface>
8700
8701 <enum
8702 name="AdditionsRunLevelType"
8703 uuid="a25417ee-a9dd-4f5b-b0dc-377860087754"
8704 >
8705 <desc>
8706 Guest Additions run level type.
8707 </desc>
8708
8709 <const name="None" value="0">
8710 <desc>Guest Additions are not loaded.</desc>
8711 </const>
8712 <const name="System" value="1">
8713 <desc>Guest drivers are loaded.</desc>
8714 </const>
8715 <const name="Userland" value="2">
8716 <desc>Common components (such as application services) are loaded.</desc>
8717 </const>
8718 <const name="Desktop" value="3">
8719 <desc>Per-user desktop components are loaded.</desc>
8720 </const>
8721 </enum>
8722
8723 <enum
8724 name="AdditionsUpdateFlag"
8725 uuid="726a818d-18d6-4389-94e8-3e9e6826171a"
8726 >
8727 <desc>
8728 Guest Additions update flags.
8729 </desc>
8730
8731 <const name="None" value="0">
8732 <desc>No flag set.</desc>
8733 </const>
8734 <const name="WaitForUpdateStartOnly" value="1">
8735 <desc>Only wait for the update process being started and do not
8736 wait while peforming the actual update.</desc>
8737 </const>
8738 </enum>
8739
8740 <enum
8741 name="ExecuteProcessFlag"
8742 uuid="1c49b831-b2c7-4a30-97dd-999a2e2cbf90"
8743 >
8744 <desc>
8745 Guest process execution flags.
8746 </desc>
8747
8748 <const name="None" value="0">
8749 <desc>No flag set.</desc>
8750 </const>
8751 <const name="WaitForProcessStartOnly" value="1">
8752 <desc>Only use the specified timeout value to wait for starting the guest process - the guest
8753 process itself then uses an infinite timeout.</desc>
8754 </const>
8755 <const name="IgnoreOrphanedProcesses" value="2">
8756 <desc>Do not report an error when executed processes are still alive when VBoxService or the guest OS is shutting down.</desc>
8757 </const>
8758 <const name="Hidden" value="4">
8759 <desc>Do not show the started process according to the guest OS guidelines.</desc>
8760 </const>
8761 <const name="NoProfile" value="8">
8762 <desc>Do not use the user's profile data when exeuting a process. Only available for Windows guests.</desc>
8763 </const>
8764 <const name="WaitForStdOut" value="16">
8765 <desc>The guest process waits until all data from stdout is read out.</desc>
8766 </const>
8767 <const name="WaitForStdErr" value="32">
8768 <desc>The guest process waits until all data from stderr is read out.</desc>
8769 </const>
8770 </enum>
8771
8772 <enum
8773 name="ExecuteProcessStatus"
8774 uuid="153768d9-d971-4098-8b5a-c5cb1ab9ea88"
8775 >
8776 <desc>
8777 Guest process execution status.
8778 </desc>
8779 <const name="Undefined" value="0">
8780 <desc>Process is in an undefined state.</desc>
8781 </const>
8782
8783 <const name="Started" value="1">
8784 <desc>Process has been started.</desc>
8785 </const>
8786 <const name="TerminatedNormally" value="2">
8787 <desc>Process terminated normally.</desc>
8788 </const>
8789 <const name="TerminatedSignal" value="3">
8790 <desc>Process terminated via signal.</desc>
8791 </const>
8792 <const name="TerminatedAbnormally" value="4">
8793 <desc>Process terminated abnormally.</desc>
8794 </const>
8795 <const name="TimedOutKilled" value="5">
8796 <desc>Process timed out and was killed.</desc>
8797 </const>
8798 <const name="TimedOutAbnormally" value="6">
8799 <desc>Process timed out and was not killed successfully.</desc>
8800 </const>
8801 <const name="Down" value="7">
8802 <desc>Service/OS is stopping, process was killed.</desc>
8803 </const>
8804 <const name="Error" value="8">
8805 <desc>Something went wrong (error code in flags).</desc>
8806 </const>
8807 </enum>
8808
8809 <enum
8810 name="FileSeekType"
8811 uuid="1b73f4f3-3515-4073-a506-76878d9e2541"
8812 >
8813 <desc>
8814 TODO
8815 </desc>
8816
8817 <const name="Set" value="0">
8818 <desc>TODO</desc>
8819 </const>
8820 <const name="Current" value="1">
8821 <desc>TODO</desc>
8822 </const>
8823 </enum>
8824
8825 <enum
8826 name="ProcessInputFlag"
8827 uuid="5d38c1dd-2604-4ddf-92e5-0c0cdd3bdbd5"
8828 >
8829 <desc>
8830 Guest process input flags.
8831 </desc>
8832 <const name="None" value="0">
8833 <desc>No flag set.</desc>
8834 </const>
8835 <const name="EndOfFile" value="1">
8836 <desc>End of file (input) reached.</desc>
8837 </const>
8838 </enum>
8839
8840 <enum
8841 name="ProcessOutputFlag"
8842 uuid="9979e85a-52bb-40b7-870c-57115e27e0f1"
8843 >
8844 <desc>
8845 Guest process output flags for specifying which
8846 type of output to retrieve.
8847 </desc>
8848 <const name="None" value="0">
8849 <desc>No flags set. Get output from stdout.</desc>
8850 </const>
8851 <const name="StdErr" value="1">
8852 <desc>Get output from stderr.</desc>
8853 </const>
8854 </enum>
8855
8856 <enum
8857 name="ProcessWaitForFlag"
8858 uuid="23b550c7-78e1-437e-98f0-65fd9757bcd2"
8859 >
8860 <desc>
8861 TODO
8862 </desc>
8863
8864 <const name="None" value="0">
8865 <desc>TODO</desc>
8866 </const>
8867 <const name="Start" value="1">
8868 <desc>TODO</desc>
8869 </const>
8870 <const name="Terminate" value="2">
8871 <desc>TODO</desc>
8872 </const>
8873 <const name="StdIn" value="4">
8874 <desc>TODO</desc>
8875 </const>
8876 <const name="StdOut" value="8">
8877 <desc>TODO</desc>
8878 </const>
8879 <const name="StdErr" value="16">
8880 <desc>TODO</desc>
8881 </const>
8882 </enum>
8883
8884 <enum
8885 name="ProcessWaitResult"
8886 uuid="24a4d49f-a7c1-44b0-b01f-5686a316466b"
8887 >
8888 <desc>
8889 TODO
8890 </desc>
8891
8892 <const name="None" value="0">
8893 <desc>TODO</desc>
8894 </const>
8895 <const name="Start" value="1">
8896 <desc>TODO</desc>
8897 </const>
8898 <const name="Terminate" value="2">
8899 <desc>TODO</desc>
8900 </const>
8901 <const name="Status" value="3">
8902 <desc>TODO</desc>
8903 </const>
8904 <const name="Error" value="4">
8905 <desc>TODO</desc>
8906 </const>
8907 <const name="Timeout" value="5">
8908 <desc>TODO</desc>
8909 </const>
8910 <const name="StdIn" value="6">
8911 <desc>TODO</desc>
8912 </const>
8913 <const name="StdOut" value="7">
8914 <desc>TODO</desc>
8915 </const>
8916 <const name="StdErr" value="8">
8917 <desc>TODO</desc>
8918 </const>
8919 <const name="Any" value="9">
8920 <desc>TODO</desc>
8921 </const>
8922 </enum>
8923
8924 <enum
8925 name="CopyFileFlag"
8926 uuid="23f79fdf-738a-493d-b80b-42d607c9b916"
8927 >
8928 <desc>
8929 Host/Guest copy flags. At the moment none of these flags
8930 are implemented.
8931 </desc>
8932 <const name="None" value="0">
8933 <desc>No flag set.</desc>
8934 </const>
8935 <const name="Recursive" value="1">
8936 <desc>Copy directories recursively.</desc>
8937 </const>
8938 <const name="Update" value="2">
8939 <desc>Only copy when the source file is newer than the destination file or when the destination file is missing.</desc>
8940 </const>
8941 <const name="FollowLinks" value="4">
8942 <desc>Follow symbolic links.</desc>
8943 </const>
8944 </enum>
8945
8946 <enum
8947 name="DirectoryCreateFlag"
8948 uuid="bd721b0e-ced5-4f79-b368-249897c32a36"
8949 >
8950 <desc>
8951 Directory creation flags.
8952 </desc>
8953 <const name="None" value="0">
8954 <desc>No flag set.</desc>
8955 </const>
8956 <const name="Parents" value="1">
8957 <desc>No error if existing, make parent directories as needed.</desc>
8958 </const>
8959 </enum>
8960
8961 <enum
8962 name="DirectoryRemoveRecFlag"
8963 uuid="455aabf0-7692-48f6-9061-f21579b65769"
8964 >
8965 <desc>
8966 TODO
8967 </desc>
8968
8969 <const name="None" value="0">
8970 <desc>No flag set.</desc>
8971 </const>
8972 <const name="ContentAndDir" value="1">
8973 <desc>TODO</desc>
8974 </const>
8975 <const name="ContentOnly" value="2">
8976 <desc>TODO</desc>
8977 </const>
8978 </enum>
8979
8980 <enum
8981 name="PathRenameFlag"
8982 uuid="f3baa09f-c758-453d-b91c-c7787d76351d"
8983 >
8984 <desc>
8985 TODO
8986 </desc>
8987
8988 <const name="None" value="0">
8989 <desc>No flag set.</desc>
8990 </const>
8991 <const name="NoReplace" value="1">
8992 <desc>TODO</desc>
8993 </const>
8994 <const name="Replace" value="2">
8995 <desc>TODO</desc>
8996 </const>
8997 <const name="NoSymlinks" value="4">
8998 <desc>TODO</desc>
8999 </const>
9000 </enum>
9001
9002 <enum
9003 name="ProcessCreateFlag"
9004 uuid="91c8aba8-2e62-4fe5-b744-fcbd607971e2"
9005 >
9006 <desc>
9007 Guest process execution flags.
9008 </desc>
9009
9010 <const name="None" value="0">
9011 <desc>No flag set.</desc>
9012 </const>
9013 <const name="WaitForProcessStartOnly" value="1">
9014 <desc>Only use the specified timeout value to wait for starting the guest process - the guest
9015 process itself then uses an infinite timeout.</desc>
9016 </const>
9017 <const name="IgnoreOrphanedProcesses" value="2">
9018 <desc>Do not report an error when executed processes are still alive when VBoxService or the guest OS is shutting down.</desc>
9019 </const>
9020 <const name="Hidden" value="4">
9021 <desc>Do not show the started process according to the guest OS guidelines.</desc>
9022 </const>
9023 <const name="NoProfile" value="8">
9024 <desc>Do not use the user's profile data when exeuting a process. Only available for Windows guests.</desc>
9025 </const>
9026 <const name="WaitForStdOut" value="16">
9027 <desc>The guest process waits until all data from stdout is read out.</desc>
9028 </const>
9029 <const name="WaitForStdErr" value="32">
9030 <desc>The guest process waits until all data from stderr is read out.</desc>
9031 </const>
9032 </enum>
9033
9034 <enum
9035 name="ProcessPriority"
9036 uuid="ee8cac50-e232-49fe-806b-d1214d9c2e49"
9037 >
9038 <desc>
9039 TODO
9040 </desc>
9041
9042 <const name="Invalid" value="0">
9043 <desc>TODO</desc>
9044 </const>
9045 <const name="Default" value="1">
9046 <desc>TODO</desc>
9047 </const>
9048 </enum>
9049
9050 <enum
9051 name="SymlinkType"
9052 uuid="37794668-f8f1-4714-98a5-6f8fa2ed0118"
9053 >
9054 <desc>
9055 TODO
9056 </desc>
9057
9058 <const name="Unknown" value="0">
9059 <desc>TODO</desc>
9060 </const>
9061 <const name="Directory" value="1">
9062 <desc>TODO</desc>
9063 </const>
9064 <const name="File" value="2">
9065 <desc>TODO</desc>
9066 </const>
9067 </enum>
9068
9069 <enum
9070 name="SymlinkReadFlag"
9071 uuid="b7fe2b9d-790e-4b25-8adf-1ca33026931f"
9072 >
9073 <desc>
9074 TODO
9075 </desc>
9076
9077 <const name="None" value="0">
9078 <desc>TODO.</desc>
9079 </const>
9080 <const name="NoSymlinks" value="1">
9081 <desc>TODO</desc>
9082 </const>
9083 </enum>
9084
9085 <enum
9086 name="ProcessStatus"
9087 uuid="4d52368f-5b48-4bfe-b486-acf89139b52f"
9088 >
9089 <desc>
9090 Guest process execution status.
9091 </desc>
9092 <const name="Undefined" value="0">
9093 <desc>Process is in an undefined state.</desc>
9094 </const>
9095
9096 <const name="Starting" value="10">
9097 <desc>TODO</desc>
9098 </const>
9099 <const name="Started" value="100">
9100 <desc>Process has been started.</desc>
9101 </const>
9102 <const name="Paused" value="110">
9103 <desc>TODO</desc>
9104 </const>
9105 <const name="Terminating" value="480">
9106 <desc>TODO</desc>
9107 </const>
9108 <const name="TerminatedNormally" value="500">
9109 <desc>Process terminated normally.</desc>
9110 </const>
9111 <const name="TerminatedSignal" value="510">
9112 <desc>Process terminated via signal.</desc>
9113 </const>
9114 <const name="TerminatedAbnormally" value="511">
9115 <desc>Process terminated abnormally.</desc>
9116 </const>
9117 <const name="TimedOutKilled" value="512">
9118 <desc>Process timed out and was killed.</desc>
9119 </const>
9120 <const name="TimedOutAbnormally" value="513">
9121 <desc>Process timed out and was not killed successfully.</desc>
9122 </const>
9123 <const name="Down" value="600">
9124 <desc>Service/OS is stopping, process was killed.</desc>
9125 </const>
9126 <const name="Error" value="800">
9127 <desc>Something went wrong (error code in flags).</desc>
9128 </const>
9129 </enum>
9130
9131 <enum
9132 name="FsObjType"
9133 uuid="a1ed437c-b3c3-4ca2-b19c-4239d658d5e8"
9134 >
9135 <desc>
9136 TODO
9137 </desc>
9138
9139 <const name="Undefined" value="0">
9140 <desc>TODO</desc>
9141 </const>
9142 <const name="FIFO" value="1">
9143 <desc>TODO</desc>
9144 </const>
9145 <const name="DevChar" value="10">
9146 <desc>TODO</desc>
9147 </const>
9148 <const name="DevBlock" value="11">
9149 <desc>TODO</desc>
9150 </const>
9151 <const name="Directory" value="50">
9152 <desc>TODO</desc>
9153 </const>
9154 <const name="File" value="80">
9155 <desc>TODO</desc>
9156 </const>
9157 <const name="Symlink" value="100">
9158 <desc>TODO</desc>
9159 </const>
9160 <const name="Socket" value="200">
9161 <desc>TODO</desc>
9162 </const>
9163 <const name="Whiteout" value="400">
9164 <desc>TODO</desc>
9165 </const>
9166 </enum>
9167
9168 <enum
9169 name="DragAndDropAction"
9170 uuid="47f3b162-c107-4fcd-bfa7-54b8135c441e"
9171 >
9172 <desc>
9173 Possible actions within an Drag and Drop operation.
9174 </desc>
9175
9176 <const name="Ignore" value="0">
9177 <desc>Do nothing.</desc>
9178 </const>
9179
9180 <const name="Copy" value="1">
9181 <desc>Copy the item to the target.</desc>
9182 </const>
9183
9184 <const name="Move" value="2">
9185 <desc>Move the item to the target.</desc>
9186 </const>
9187
9188 <const name="Link" value="3">
9189 <desc>Link the item from within the target.</desc>
9190 </const>
9191 </enum>
9192
9193 <enum
9194 name="DirectoryOpenFlag"
9195 uuid="fc8f6203-0072-4f34-bd08-0b35e50bf071"
9196 >
9197 <desc>
9198 Directory open flags.
9199 </desc>
9200 <const name="None" value="0">
9201 <desc>No flag set.</desc>
9202 </const>
9203 </enum>
9204
9205 <enum
9206 name="GuestDirEntryType"
9207 uuid="6d19d924-1b77-4fc8-b369-a3b2c85c8241"
9208 >
9209 <desc>
9210 Guest directory entry type.
9211 </desc>
9212 <const name="Unknown" value="0">
9213 <desc>Unknown.</desc>
9214 </const>
9215 <const name="Directory" value="4">
9216 <desc>Regular file.</desc>
9217 </const>
9218 <const name="File" value="10">
9219 <desc>Regular file.</desc>
9220 </const>
9221 <const name="Symlink" value="12">
9222 <desc>Symbolic link.</desc>
9223 </const>
9224 </enum>
9225
9226 <interface
9227 name="IGuestDirEntry" extends="$unknown"
9228 uuid="20a66efc-c2f6-4438-826f-38454c04369e"
9229 wsmap="struct"
9230 >
9231 <desc>
9232 Structure representing a directory entry on the guest OS.
9233 </desc>
9234 <attribute name="nodeId" type="long long" readonly="yes">
9235 <desc>The unique identifier (within the guest's file system) of this file system object.</desc>
9236 </attribute>
9237 <attribute name="name" type="wstring" readonly="yes">
9238 <desc>The filename.</desc>
9239 </attribute>
9240 <attribute name="type" type="GuestDirEntryType" readonly="yes">
9241 <desc>The entry type.</desc>
9242 </attribute>
9243 </interface>
9244
9245 <interface
9246 name="IGuestSession" extends="$unknown"
9247 uuid="47a344ec-8495-49ad-bfab-8cd0ff8eb3cf"
9248 wsmap="managed"
9249 >
9250
9251 <attribute name="user" type="wstring" readonly="yes">
9252 <desc>
9253 TODO
9254 <note>
9255 TODO
9256 </note>
9257 </desc>
9258 </attribute>
9259
9260 <attribute name="domain" type="wstring" readonly="yes">
9261 <desc>
9262 TODO
9263 <note>
9264 TODO
9265 </note>
9266 </desc>
9267 </attribute>
9268
9269 <attribute name="name" type="wstring" readonly="yes">
9270 <desc>
9271 TODO
9272 <note>
9273 TODO
9274 </note>
9275 </desc>
9276 </attribute>
9277
9278 <attribute name="id" type="unsigned long" readonly="yes">
9279 <desc>
9280 TODO
9281 <note>
9282 TODO
9283 </note>
9284 </desc>
9285 </attribute>
9286
9287 <attribute name="timeout" type="unsigned long" readonly="no">
9288 <desc>
9289 TODO
9290 <note>
9291 TODO
9292 </note>
9293 </desc>
9294 </attribute>
9295
9296 <attribute name="environment" type="wstring" readonly="yes" safearray="yes">
9297 <desc>
9298 TODO
9299 </desc>
9300 </attribute>
9301
9302 <attribute name="processes" type="IGuestProcess" readonly="yes" safearray="yes">
9303 <desc>
9304 TODO
9305 </desc>
9306 </attribute>
9307
9308 <attribute name="directories" type="IGuestDirectory" readonly="yes" safearray="yes">
9309 <desc>
9310 TODO
9311 </desc>
9312 </attribute>
9313
9314 <attribute name="files" type="IGuestFile" readonly="yes" safearray="yes">
9315 <desc>
9316 TODO
9317 </desc>
9318 </attribute>
9319
9320 <method name="Close">
9321 <desc>
9322 TODO
9323
9324 <result name="VBOX_E_NOT_SUPPORTED">
9325 TODO
9326 </result>
9327 </desc>
9328 </method>
9329
9330 <method name="CopyFrom">
9331 <desc>
9332 TODO
9333
9334 <result name="VBOX_E_NOT_SUPPORTED">
9335 TODO
9336 </result>
9337 </desc>
9338 <param name="source" type="wstring" dir="in">
9339 <desc>TODO</desc>
9340 </param>
9341 <param name="dest" type="wstring" dir="in">
9342 <desc>TODO</desc>
9343 </param>
9344 <param name="flags" type="CopyFileFlag" dir="in" safearray="yes">
9345 <desc>TODO</desc>
9346 </param>
9347 <param name="progress" type="IProgress" dir="return">
9348 <desc>Progress object to track the operation completion.</desc>
9349 </param>
9350 </method>
9351
9352 <method name="CopyTo">
9353 <desc>
9354 TODO
9355
9356 <result name="VBOX_E_NOT_SUPPORTED">
9357 TODO
9358 </result>
9359 </desc>
9360 <param name="source" type="wstring" dir="in">
9361 <desc>TODO</desc>
9362 </param>
9363 <param name="dest" type="wstring" dir="in">
9364 <desc>TODO</desc>
9365 </param>
9366 <param name="flags" type="CopyFileFlag" dir="in" safearray="yes">
9367 <desc>TODO</desc>
9368 </param>
9369 <param name="progress" type="IProgress" dir="return">
9370 <desc>Progress object to track the operation completion.</desc>
9371 </param>
9372 </method>
9373
9374 <method name="DirectoryCreate">
9375 <desc>
9376 TODO
9377
9378 <result name="VBOX_E_NOT_SUPPORTED">
9379 TODO
9380 </result>
9381 </desc>
9382 <param name="path" type="wstring" dir="in">
9383 <desc>TODO</desc>
9384 </param>
9385 <param name="mode" type="unsigned long" dir="in">
9386 <desc>TODO</desc>
9387 </param>
9388 <param name="flags" type="unsigned long" dir="in">
9389 <desc>TODO</desc>
9390 </param>
9391 <param name="directory" type="IGuestDirectory" dir="return">
9392 <desc>Optional.</desc>
9393 </param>
9394 </method>
9395
9396 <method name="DirectoryCreateTemp">
9397 <desc>
9398 TODO
9399
9400 <result name="VBOX_E_NOT_SUPPORTED">
9401 TODO
9402 </result>
9403 </desc>
9404 <param name="templateName" type="wstring" dir="in">
9405 <desc>TODO</desc>
9406 </param>
9407 <param name="mode" type="unsigned long" dir="in">
9408 <desc>TODO</desc>
9409 </param>
9410 <param name="path" type="wstring" dir="in">
9411 <desc>TODO</desc>
9412 </param>
9413 <param name="directory" type="IGuestDirectory" dir="return">
9414 <desc>TODO</desc>
9415 </param>
9416 </method>
9417
9418 <method name="DirectoryExists">
9419 <desc>
9420 TODO
9421
9422 <result name="VBOX_E_NOT_SUPPORTED">
9423 TODO
9424 </result>
9425 </desc>
9426 <param name="path" type="wstring" dir="in">
9427 <desc>TODO</desc>
9428 </param>
9429 <param name="exists" type="boolean" dir="return">
9430 <desc>TODO</desc>
9431 </param>
9432 </method>
9433
9434 <method name="DirectoryOpen">
9435 <desc>
9436 TODO
9437
9438 <result name="VBOX_E_NOT_SUPPORTED">
9439 TODO
9440 </result>
9441 </desc>
9442 <param name="path" type="wstring" dir="in">
9443 <desc>TODO</desc>
9444 </param>
9445 <param name="filter" type="wstring" dir="in">
9446 <desc>TODO</desc>
9447 </param>
9448 <param name="flags" type="wstring" dir="in">
9449 <desc>TODO</desc>
9450 </param>
9451 <param name="directory" type="IGuestDirectory" dir="return">
9452 <desc>TODO</desc>
9453 </param>
9454 </method>
9455
9456 <method name="DirectoryQueryInfo">
9457 <desc>
9458 TODO
9459
9460 <result name="VBOX_E_NOT_SUPPORTED">
9461 TODO
9462 </result>
9463 </desc>
9464 <param name="path" type="wstring" dir="in">
9465 <desc>TODO</desc>
9466 </param>
9467 <param name="info" type="IGuestFsObjInfo" dir="return">
9468 <desc>TODO</desc>
9469 </param>
9470 </method>
9471
9472 <method name="DirectoryRemove">
9473 <desc>
9474 TODO
9475
9476 <result name="VBOX_E_NOT_SUPPORTED">
9477 TODO
9478 </result>
9479 </desc>
9480 <param name="path" type="wstring" dir="in">
9481 <desc>TODO</desc>
9482 </param>
9483 </method>
9484
9485 <method name="DirectoryRemoveRecursive">
9486 <desc>
9487 TODO
9488
9489 <result name="VBOX_E_NOT_SUPPORTED">
9490 TODO
9491 </result>
9492 </desc>
9493 <param name="path" type="wstring" dir="in">
9494 <desc>TODO</desc>
9495 </param>
9496 <param name="flags" type="DirectoryRemoveRecFlag" dir="in" safearray="yes">
9497 <desc>TODO</desc>
9498 </param>
9499 <param name="progress" type="IProgress" dir="return">
9500 <desc>TODO</desc>
9501 </param>
9502 </method>
9503
9504 <method name="DirectoryRename">
9505 <desc>
9506 TODO
9507
9508 <result name="VBOX_E_NOT_SUPPORTED">
9509 TODO
9510 </result>
9511 </desc>
9512 <param name="source" type="wstring" dir="in">
9513 <desc>TODO</desc>
9514 </param>
9515 <param name="dest" type="wstring" dir="in">
9516 <desc>TODO</desc>
9517 </param>
9518 <param name="flags" type="PathRenameFlag" dir="in" safearray="yes">
9519 <desc>TODO</desc>
9520 </param>
9521 </method>
9522
9523 <method name="DirectorySetACL">
9524 <desc>
9525 TODO
9526
9527 <result name="VBOX_E_NOT_SUPPORTED">
9528 TODO
9529 </result>
9530 </desc>
9531 <param name="path" type="wstring" dir="in">
9532 <desc>TODO</desc>
9533 </param>
9534 <param name="acl" type="wstring" dir="in">
9535 <desc>TODO</desc>
9536 </param>
9537 </method>
9538
9539 <method name="EnvironmentClear">
9540 <desc>
9541 TODO
9542
9543 <result name="VBOX_E_NOT_SUPPORTED">
9544 TODO
9545 </result>
9546 </desc>
9547 </method>
9548
9549 <method name="EnvironmentGet">
9550 <desc>
9551 TODO
9552
9553 <result name="VBOX_E_NOT_SUPPORTED">
9554 TODO
9555 </result>
9556 </desc>
9557 <param name="name" type="wstring" dir="in">
9558 <desc>TODO</desc>
9559 </param>
9560 <param name="value" type="wstring" dir="return">
9561 <desc>TODO</desc>
9562 </param>
9563 </method>
9564
9565 <method name="EnvironmentSet">
9566 <desc>
9567 TODO
9568
9569 <result name="VBOX_E_NOT_SUPPORTED">
9570 TODO
9571 </result>
9572 </desc>
9573 <param name="name" type="wstring" dir="in">
9574 <desc>TODO</desc>
9575 </param>
9576 <param name="value" type="wstring" dir="in">
9577 <desc>TODO</desc>
9578 </param>
9579 </method>
9580
9581 <method name="EnvironmentSetArray">
9582 <desc>
9583 TODO
9584
9585 <result name="VBOX_E_NOT_SUPPORTED">
9586 TODO
9587 </result>
9588 </desc>
9589 <param name="environment" type="wstring" dir="in" safearray="yes">
9590 <desc>TODO</desc>
9591 </param>
9592 </method>
9593
9594 <method name="EnvironmentUnset">
9595 <desc>
9596 TODO
9597
9598 <result name="VBOX_E_NOT_SUPPORTED">
9599 TODO
9600 </result>
9601 </desc>
9602 <param name="name" type="wstring" dir="in">
9603 <desc>TODO</desc>
9604 </param>
9605 </method>
9606
9607 <method name="FileCreateTemp">
9608 <desc>
9609 TODO
9610
9611 <result name="VBOX_E_NOT_SUPPORTED">
9612 TODO
9613 </result>
9614 </desc>
9615 <param name="templateName" type="wstring" dir="in">
9616 <desc>TODO</desc>
9617 </param>
9618 <param name="mode" type="unsigned long" dir="in">
9619 <desc>TODO</desc>
9620 </param>
9621 <param name="path" type="wstring" dir="in">
9622 <desc>TODO</desc>
9623 </param>
9624 <param name="file" type="IGuestFile" dir="return">
9625 <desc>Optional.</desc>
9626 </param>
9627 </method>
9628
9629 <method name="FileExists">
9630 <desc>
9631 TODO
9632
9633 <result name="VBOX_E_NOT_SUPPORTED">
9634 TODO
9635 </result>
9636 </desc>
9637 <param name="path" type="wstring" dir="in">
9638 <desc>TODO</desc>
9639 </param>
9640 <param name="exists" type="boolean" dir="return">
9641 <desc>TODO</desc>
9642 </param>
9643 </method>
9644
9645 <method name="FileOpen">
9646 <desc>
9647 TODO
9648
9649 <result name="VBOX_E_NOT_SUPPORTED">
9650 TODO
9651 </result>
9652 </desc>
9653 <param name="path" type="wstring" dir="in">
9654 <desc>TODO</desc>
9655 </param>
9656 <param name="openMode" type="wstring" dir="in">
9657 <desc>TODO</desc>
9658 </param>
9659 <param name="disposition" type="wstring" dir="in">
9660 <desc>TODO</desc>
9661 </param>
9662 <param name="creationMode" type="unsigned long" dir="in">
9663 <desc>TODO</desc>
9664 </param>
9665 <param name="offset" type="long long" dir="in">
9666 <desc>TODO</desc>
9667 </param>
9668 <param name="file" type="IGuestFile" dir="return">
9669 <desc>TODO</desc>
9670 </param>
9671 </method>
9672
9673 <method name="FileQueryInfo">
9674 <desc>
9675 TODO
9676
9677 <result name="VBOX_E_NOT_SUPPORTED">
9678 TODO
9679 </result>
9680 </desc>
9681 <param name="path" type="wstring" dir="in">
9682 <desc>TODO</desc>
9683 </param>
9684 <param name="info" type="IGuestFsObjInfo" dir="return">
9685 <desc>TODO</desc>
9686 </param>
9687 </method>
9688
9689 <method name="FileQuerySize">
9690 <desc>
9691 TODO
9692
9693 <result name="VBOX_E_NOT_SUPPORTED">
9694 TODO
9695 </result>
9696 </desc>
9697 <param name="path" type="wstring" dir="in">
9698 <desc>TODO</desc>
9699 </param>
9700 <param name="size" type="long long" dir="return">
9701 <desc>TODO</desc>
9702 </param>
9703 </method>
9704
9705 <method name="FileRename">
9706 <desc>
9707 TODO
9708
9709 <result name="VBOX_E_NOT_SUPPORTED">
9710 TODO
9711 </result>
9712 </desc>
9713 <param name="source" type="wstring" dir="in">
9714 <desc>TODO</desc>
9715 </param>
9716 <param name="dest" type="wstring" dir="in">
9717 <desc>TODO</desc>
9718 </param>
9719 <param name="flags" type="PathRenameFlag" dir="in" safearray="yes">
9720 <desc>TODO</desc>
9721 </param>
9722 </method>
9723
9724 <method name="FileSetACL">
9725 <desc>
9726 TODO
9727
9728 <result name="VBOX_E_NOT_SUPPORTED">
9729 TODO
9730 </result>
9731 </desc>
9732 <param name="file" type="wstring" dir="in">
9733 <desc>TODO</desc>
9734 </param>
9735 <param name="acl" type="wstring" dir="in">
9736 <desc>TODO</desc>
9737 </param>
9738 </method>
9739
9740 <method name="ProcessCreate">
9741 <desc>
9742 TODO
9743
9744 <result name="VBOX_E_NOT_SUPPORTED">
9745 TODO
9746 </result>
9747 </desc>
9748 <param name="command" type="wstring" dir="in">
9749 <desc>TODO</desc>
9750 </param>
9751 <param name="arguments" type="wstring" dir="in" safearray="yes">
9752 <desc>TODO</desc>
9753 </param>
9754 <param name="environment" type="wstring" dir="in" safearray="yes">
9755 <desc>TODO</desc>
9756 </param>
9757 <param name="flags" type="ProcessCreateFlag" dir="in" safearray="yes">
9758 <desc>TODO</desc>
9759 </param>
9760 <param name="timeoutMS" type="unsigned long" dir="in">
9761 <desc>TODO</desc>
9762 </param>
9763 <param name="guestProcess" type="IGuestProcess" dir="return">
9764 <desc>TODO</desc>
9765 </param>
9766 </method>
9767
9768 <method name="ProcessCreateEx">
9769 <desc>
9770 TODO
9771
9772 <result name="VBOX_E_NOT_SUPPORTED">
9773 TODO
9774 </result>
9775 </desc>
9776 <param name="command" type="wstring" dir="in">
9777 <desc>TODO</desc>
9778 </param>
9779 <param name="arguments" type="wstring" dir="in" safearray="yes">
9780 <desc>TODO</desc>
9781 </param>
9782 <param name="environment" type="wstring" dir="in" safearray="yes">
9783 <desc>TODO</desc>
9784 </param>
9785 <param name="flags" type="ProcessCreateFlag" dir="in" safearray="yes">
9786 <desc>TODO</desc>
9787 </param>
9788 <param name="timeoutMS" type="unsigned long" dir="in">
9789 <desc>TODO</desc>
9790 </param>
9791 <param name="priority" type="ProcessPriority" dir="in">
9792 <desc>TODO</desc>
9793 </param>
9794 <param name="affinity" type="long" dir="in" safearray="yes">
9795 <desc>TODO</desc>
9796 </param>
9797 <param name="guestProcess" type="IGuestProcess" dir="return">
9798 <desc>TODO</desc>
9799 </param>
9800 </method>
9801
9802 <method name="ProcessGet">
9803 <desc>
9804 TODO
9805
9806 <result name="VBOX_E_NOT_SUPPORTED">
9807 TODO
9808 </result>
9809 </desc>
9810 <param name="pid" type="unsigned long" dir="in">
9811 <desc>TODO</desc>
9812 </param>
9813 <param name="guestProcess" type="IGuestProcess" dir="return">
9814 <desc>TODO</desc>
9815 </param>
9816 </method>
9817
9818 <method name="SymlinkCreate">
9819 <desc>
9820 TODO
9821
9822 <result name="VBOX_E_NOT_SUPPORTED">
9823 TODO
9824 </result>
9825 </desc>
9826 <param name="source" type="wstring" dir="in">
9827 <desc>TODO</desc>
9828 </param>
9829 <param name="target" type="wstring" dir="in">
9830 <desc>TODO</desc>
9831 </param>
9832 <param name="type" type="SymlinkType" dir="in">
9833 <desc>TODO</desc>
9834 </param>
9835 </method>
9836
9837 <method name="SymlinkExists">
9838 <desc>
9839 TODO
9840
9841 <result name="VBOX_E_NOT_SUPPORTED">
9842 TODO
9843 </result>
9844 </desc>
9845 <param name="symlink" type="wstring" dir="in">
9846 <desc>TODO</desc>
9847 </param>
9848 <param name="exists" type="boolean" dir="return">
9849 <desc>TODO</desc>
9850 </param>
9851 </method>
9852
9853 <method name="SymlinkRead">
9854 <desc>
9855 TODO
9856
9857 <result name="VBOX_E_NOT_SUPPORTED">
9858 TODO
9859 </result>
9860 </desc>
9861 <param name="symlink" type="wstring" dir="in">
9862 <desc>TODO</desc>
9863 </param>
9864 <param name="flags" type="SymlinkReadFlag" dir="in" safearray="yes">
9865 <desc>TODO</desc>
9866 </param>
9867 <param name="target" type="wstring" dir="return">
9868 <desc>TODO</desc>
9869 </param>
9870 </method>
9871
9872 <method name="SymlinkRemoveDirectory">
9873 <desc>
9874 TODO
9875
9876 <result name="VBOX_E_NOT_SUPPORTED">
9877 TODO
9878 </result>
9879 </desc>
9880 <param name="path" type="wstring" dir="in">
9881 <desc>TODO</desc>
9882 </param>
9883 </method>
9884
9885 <method name="SymlinkRemoveFile">
9886 <desc>
9887 TODO
9888
9889 <result name="VBOX_E_NOT_SUPPORTED">
9890 TODO
9891 </result>
9892 </desc>
9893 <param name="file" type="wstring" dir="in">
9894 <desc>TODO</desc>
9895 </param>
9896 </method>
9897
9898 </interface>
9899
9900 <interface
9901 name="IProcess" extends="$unknown"
9902 uuid="f55af4a1-e280-40ac-83e1-921c0abcaf18"
9903 wsmap="managed"
9904 >
9905 <desc>
9906 TODO
9907 </desc>
9908 <attribute name="pid" type="unsigned long" readonly="yes">
9909 <desc>
9910 TODO
9911 <note>
9912 TODO
9913 </note>
9914 </desc>
9915 </attribute>
9916 <attribute name="status" type="ProcessStatus" readonly="yes">
9917 <desc>
9918 TODO
9919 <note>
9920 TODO
9921 </note>
9922 </desc>
9923 </attribute>
9924 <attribute name="exitCode" type="long" readonly="yes">
9925 <desc>
9926 TODO
9927 <note>
9928 TODO
9929 </note>
9930 </desc>
9931 </attribute>
9932 <attribute name="environment" type="wstring" readonly="yes" safearray="yes">
9933 <desc>
9934 TODO
9935 <note>
9936 TODO
9937 </note>
9938 </desc>
9939 </attribute>
9940 <attribute name="arguments" type="wstring" readonly="yes" safearray="yes">
9941 <desc>
9942 TODO
9943 <note>
9944 TODO
9945 </note>
9946 </desc>
9947 </attribute>
9948 <attribute name="executablePath" type="wstring" readonly="yes">
9949 <desc>
9950 TODO
9951 <note>
9952 TODO
9953 </note>
9954 </desc>
9955 </attribute>
9956 <attribute name="name" type="wstring" readonly="yes">
9957 <desc>
9958 TODO
9959 <note>
9960 TODO
9961 </note>
9962 </desc>
9963 </attribute>
9964
9965 <method name="WaitFor">
9966 <desc>
9967 TODO
9968
9969 <result name="VBOX_E_NOT_SUPPORTED">
9970 TODO
9971 </result>
9972 </desc>
9973 <param name="waitFor" type="unsigned long" dir="in">
9974 <desc>TODO</desc>
9975 </param>
9976 <param name="timeoutMS" type="unsigned long" dir="in">
9977 <desc>TODO</desc>
9978 </param>
9979 <param name="reason" type="ProcessWaitResult" dir="return">
9980 <desc>TODO</desc>
9981 </param>
9982 </method>
9983
9984 <method name="WaitForArray">
9985 <desc>
9986 Scriptable version of <link to="#WaitFor" />.
9987
9988 <result name="VBOX_E_NOT_SUPPORTED">
9989 TODO
9990 </result>
9991 </desc>
9992 <param name="waitFor" type="ProcessWaitForFlag" dir="in" safearray="yes">
9993 <desc>TODO</desc>
9994 </param>
9995 <param name="timeoutMS" type="unsigned long" dir="in">
9996 <desc>TODO</desc>
9997 </param>
9998 <param name="reason" type="ProcessWaitResult" dir="return">
9999 <desc>TODO</desc>
10000 </param>
10001 </method>
10002
10003 <method name="Read">
10004 <desc>
10005 TODO
10006
10007 <result name="VBOX_E_NOT_SUPPORTED">
10008 TODO
10009 </result>
10010 </desc>
10011 <param name="handle" type="unsigned long" dir="in">
10012 <desc>TODO</desc>
10013 </param>
10014 <param name="size" type="unsigned long" dir="in">
10015 <desc>TODO</desc>
10016 </param>
10017 <param name="timeoutMS" type="unsigned long" dir="in">
10018 <desc>TODO</desc>
10019 </param>
10020 <param name="data" type="octet" dir="return" safearray="yes">
10021 <desc>TODO</desc>
10022 </param>
10023 </method>
10024
10025 <method name="Write">
10026 <desc>
10027 TODO
10028
10029 <result name="VBOX_E_NOT_SUPPORTED">
10030 TODO
10031 </result>
10032 </desc>
10033 <param name="handle" type="unsigned long" dir="in">
10034 <desc>TODO</desc>
10035 </param>
10036 <param name="data" type="octet" dir="in" safearray="yes">
10037 <desc>TODO</desc>
10038 </param>
10039 <param name="timeoutMS" type="unsigned long" dir="in">
10040 <desc>TODO</desc>
10041 </param>
10042 <param name="written" type="unsigned long" dir="return">
10043 <desc>TODO</desc>
10044 </param>
10045 </method>
10046
10047 <method name="Terminate">
10048 <desc>
10049 TODO
10050
10051 <result name="VBOX_E_NOT_SUPPORTED">
10052 TODO
10053 </result>
10054 </desc>
10055 </method>
10056 </interface>
10057
10058 <interface
10059 name="IGuestProcess" extends="IProcess"
10060 uuid="dfa39a36-5d43-4840-a025-67ea956b3111"
10061 wsmap="managed"
10062 >
10063 <desc>
10064 TODO
10065 </desc>
10066 </interface>
10067
10068 <interface
10069 name="IDirectory" extends="$unknown"
10070 uuid="edb0fb3b-9c74-40a6-9c54-ed7abd9d7533"
10071 wsmap="managed"
10072 >
10073 <desc>
10074 TODO
10075 </desc>
10076
10077 <attribute name="directoryName" type="wstring" readonly="yes">
10078 <desc>
10079 Full path of directory.
10080 <note>
10081 TODO
10082 </note>
10083 </desc>
10084 </attribute>
10085
10086 <method name="Read">
10087 <desc>
10088 TODO
10089
10090 <result name="VBOX_E_NOT_SUPPORTED">
10091 TODO
10092 </result>
10093 </desc>
10094 <param name="objInfo" type="IFsObjInfo" dir="return">
10095 <desc>TODO</desc>
10096 </param>
10097 </method>
10098 </interface>
10099
10100 <interface
10101 name="IGuestDirectory" extends="IDirectory"
10102 uuid="af4a8ce0-0725-42b7-8826-46e3c7ba7357"
10103 wsmap="managed"
10104 >
10105 <desc>
10106 TODO
10107 </desc>
10108 </interface>
10109
10110 <interface
10111 name="IFile" extends="$unknown"
10112 uuid="3f067338-2490-47e4-ae81-45a65300f3b1"
10113 wsmap="managed"
10114 >
10115 <desc>
10116 TODO
10117 </desc>
10118
10119 <attribute name="fileName" type="wstring" readonly="yes">
10120 <desc>
10121 TODO
10122 <note>
10123 TODO
10124 </note>
10125 </desc>
10126 </attribute>
10127 <attribute name="initialSize" type="long long" readonly="yes">
10128 <desc>
10129 TODO
10130 <note>
10131 TODO
10132 </note>
10133 </desc>
10134 </attribute>
10135 <attribute name="openMode" type="unsigned long" readonly="yes">
10136 <desc>
10137 TODO
10138 <note>
10139 TODO
10140 </note>
10141 </desc>
10142 </attribute>
10143 <attribute name="offset" type="long long" readonly="yes">
10144 <desc>
10145 TODO
10146 <note>
10147 TODO
10148 </note>
10149 </desc>
10150 </attribute>
10151
10152 <method name="Close">
10153 <desc>
10154 TODO
10155
10156 <result name="VBOX_E_NOT_SUPPORTED">
10157 TODO
10158 </result>
10159 </desc>
10160 </method>
10161
10162 <method name="QueryInfo">
10163 <desc>
10164 TODO
10165
10166 <result name="VBOX_E_NOT_SUPPORTED">
10167 TODO
10168 </result>
10169 </desc>
10170 <param name="objInfo" type="IFsObjInfo" dir="return">
10171 <desc>TODO</desc>
10172 </param>
10173 </method>
10174
10175 <method name="Read">
10176 <desc>
10177 TODO
10178
10179 <result name="VBOX_E_NOT_SUPPORTED">
10180 TODO
10181 </result>
10182 </desc>
10183 <param name="toRead" type="unsigned long" dir="in">
10184 <desc>TODO</desc>
10185 </param>
10186 <param name="read" type="unsigned long" dir="out">
10187 <desc>TODO</desc>
10188 </param>
10189 <param name="data" type="octet" dir="return" safearray="yes">
10190 <desc>TODO</desc>
10191 </param>
10192 </method>
10193
10194 <method name="ReadAt">
10195 <desc>
10196 TODO
10197
10198 <result name="VBOX_E_NOT_SUPPORTED">
10199 TODO
10200 </result>
10201 </desc>
10202 <param name="offset" type="long long" dir="in">
10203 <desc>TODO</desc>
10204 </param>
10205 <param name="toRead" type="unsigned long" dir="in">
10206 <desc>TODO</desc>
10207 </param>
10208 <param name="read" type="unsigned long" dir="out">
10209 <desc>TODO</desc>
10210 </param>
10211 <param name="data" type="octet" dir="return" safearray="yes">
10212 <desc>TODO</desc>
10213 </param>
10214 </method>
10215
10216 <method name="Seek">
10217 <desc>
10218 TODO
10219
10220 <result name="VBOX_E_NOT_SUPPORTED">
10221 TODO
10222 </result>
10223 </desc>
10224 <param name="offset" type="long long" dir="in">
10225 <desc>TODO</desc>
10226 </param>
10227 <param name="whence" type="FileSeekType" dir="in">
10228 <desc>TODO</desc>
10229 </param>
10230 </method>
10231
10232 <method name="SetACL">
10233 <desc>
10234 TODO
10235
10236 <result name="VBOX_E_NOT_SUPPORTED">
10237 TODO
10238 </result>
10239 </desc>
10240 <param name="acl" type="wstring" dir="in">
10241 <desc>TODO</desc>
10242 </param>
10243 </method>
10244
10245 <method name="Write">
10246 <desc>
10247 TODO
10248
10249 <result name="VBOX_E_NOT_SUPPORTED">
10250 TODO
10251 </result>
10252 </desc>
10253 <param name="data" type="octet" dir="in" safearray="yes">
10254 <desc>TODO</desc>
10255 </param>
10256 <param name="written" type="unsigned long" dir="return">
10257 <desc>TODO</desc>
10258 </param>
10259 </method>
10260
10261 <method name="WriteAt">
10262 <desc>
10263 TODO
10264
10265 <result name="VBOX_E_NOT_SUPPORTED">
10266 TODO
10267 </result>
10268 </desc>
10269 <param name="offset" type="long long" dir="in">
10270 <desc>TODO</desc>
10271 </param>
10272 <param name="data" type="octet" dir="in" safearray="yes">
10273 <desc>TODO</desc>
10274 </param>
10275 <param name="written" type="unsigned long" dir="return">
10276 <desc>TODO</desc>
10277 </param>
10278 </method>
10279
10280 </interface>
10281
10282 <interface
10283 name="IGuestFile" extends="IFile"
10284 uuid="60661aec-145f-4d11-b80e-8ea151598093"
10285 wsmap="managed"
10286 >
10287 <desc>
10288 TODO
10289 </desc>
10290 </interface>
10291
10292 <interface
10293 name="IFsObjInfo" extends="$unknown"
10294 uuid="fbcde6d8-69a4-41a3-950f-f98aed6ade52"
10295 wsmap="managed"
10296 >
10297 <desc>
10298 TODO
10299 </desc>
10300
10301 <attribute name="accessTime" type="long long" readonly="yes">
10302 <desc>
10303 TODO
10304 <note>
10305 TODO
10306 </note>
10307 </desc>
10308 </attribute>
10309 <attribute name="allocatedSize" type="long long" readonly="yes">
10310 <desc>
10311 TODO
10312 <note>
10313 TODO
10314 </note>
10315 </desc>
10316 </attribute>
10317 <attribute name="birthTime" type="long long" readonly="yes">
10318 <desc>
10319 TODO
10320 <note>
10321 TODO
10322 </note>
10323 </desc>
10324 </attribute>
10325 <attribute name="changeTime" type="long long" readonly="yes">
10326 <desc>
10327 TODO
10328 <note>
10329 TODO
10330 </note>
10331 </desc>
10332 </attribute>
10333 <attribute name="deviceNumber" type="unsigned long" readonly="yes">
10334 <desc>
10335 TODO
10336 <note>
10337 TODO
10338 </note>
10339 </desc>
10340 </attribute>
10341 <attribute name="fileAtttributes" type="wstring" readonly="yes">
10342 <desc>
10343 TODO
10344 <note>
10345 TODO
10346 </note>
10347 </desc>
10348 </attribute>
10349 <attribute name="generationId" type="unsigned long" readonly="yes">
10350 <desc>
10351 TODO
10352 <note>
10353 TODO
10354 </note>
10355 </desc>
10356 </attribute>
10357 <attribute name="gid" type="unsigned long" readonly="yes">
10358 <desc>
10359 TODO
10360 <note>
10361 TODO
10362 </note>
10363 </desc>
10364 </attribute>
10365 <attribute name="groupName" type="wstring" readonly="yes">
10366 <desc>
10367 TODO
10368 <note>
10369 TODO
10370 </note>
10371 </desc>
10372 </attribute>
10373 <attribute name="hardLinks" type="unsigned long" readonly="yes">
10374 <desc>
10375 TODO
10376 <note>
10377 TODO
10378 </note>
10379 </desc>
10380 </attribute>
10381 <attribute name="modificationTime" type="long long" readonly="yes">
10382 <desc>
10383 TODO
10384 <note>
10385 TODO
10386 </note>
10387 </desc>
10388 </attribute>
10389 <attribute name="name" type="wstring" readonly="yes">
10390 <desc>
10391 TODO
10392 <note>
10393 TODO
10394 </note>
10395 </desc>
10396 </attribute>
10397 <attribute name="nodeId" type="long long" readonly="yes">
10398 <desc>
10399 TODO
10400 <note>
10401 TODO
10402 </note>
10403 </desc>
10404 </attribute>
10405 <attribute name="nodeIdDevice" type="unsigned long" readonly="yes">
10406 <desc>
10407 TODO
10408 <note>
10409 TODO
10410 </note>
10411 </desc>
10412 </attribute>
10413 <attribute name="objectSize" type="long long" readonly="yes">
10414 <desc>
10415 TODO
10416 <note>
10417 TODO
10418 </note>
10419 </desc>
10420 </attribute>
10421 <attribute name="type" type="FsObjType" readonly="yes">
10422 <desc>
10423 TODO
10424 <note>
10425 TODO
10426 </note>
10427 </desc>
10428 </attribute>
10429 <attribute name="uid" type="unsigned long" readonly="yes">
10430 <desc>
10431 TODO
10432 <note>
10433 TODO
10434 </note>
10435 </desc>
10436 </attribute>
10437 <attribute name="userFlags" type="unsigned long" readonly="yes">
10438 <desc>
10439 TODO
10440 <note>
10441 TODO
10442 </note>
10443 </desc>
10444 </attribute>
10445 <attribute name="userName" type="wstring" readonly="yes">
10446 <desc>
10447 TODO
10448 <note>
10449 TODO
10450 </note>
10451 </desc>
10452 </attribute>
10453
10454 </interface>
10455
10456 <interface
10457 name="IGuestFsObjInfo" extends="IFsObjInfo"
10458 uuid="d5cf678e-3484-4e4a-ac55-329e15462e18"
10459 wsmap="managed"
10460 >
10461 <desc>
10462 TODO
10463 </desc>
10464 </interface>
10465
10466 <interface
10467 name="IGuest" extends="$unknown"
10468 uuid="9e0b07b1-490f-4413-8955-0a16515aac12"
10469 wsmap="managed"
10470 >
10471 <desc>
10472 The IGuest interface represents information about the operating system
10473 running inside the virtual machine. Used in
10474 <link to="IConsole::guest"/>.
10475
10476 IGuest provides information about the guest operating system, whether
10477 Guest Additions are installed and other OS-specific virtual machine
10478 properties.
10479 </desc>
10480
10481 <attribute name="OSTypeId" type="wstring" readonly="yes">
10482 <desc>
10483 Identifier of the Guest OS type as reported by the Guest
10484 Additions.
10485 You may use <link to="IVirtualBox::getGuestOSType"/> to obtain
10486 an IGuestOSType object representing details about the given
10487 Guest OS type.
10488 <note>
10489 If Guest Additions are not installed, this value will be
10490 the same as <link to="IMachine::OSTypeId"/>.
10491 </note>
10492 </desc>
10493 </attribute>
10494
10495 <attribute name="additionsRunLevel" type="AdditionsRunLevelType" readonly="yes">
10496 <desc>
10497 Current run level of the Guest Additions.
10498 </desc>
10499 </attribute>
10500
10501 <attribute name="additionsVersion" type="wstring" readonly="yes">
10502 <desc>
10503 Version of the Guest Additions in the same format as
10504 <link to="IVirtualBox::version"/>.
10505 </desc>
10506 </attribute>
10507
10508 <attribute name="additionsRevision" type="unsigned long" readonly="yes">
10509 <desc>
10510 The internal build revision number of the additions.
10511
10512 See also <link to="IVirtualBox::revision"/>.
10513 </desc>
10514 </attribute>
10515
10516 <attribute name="facilities" type="IAdditionsFacility" readonly="yes" safearray="yes">
10517 <desc>
10518 Array of current known facilities. Only returns facilities where a status is known,
10519 e.g. facilities with an unknown status will not be returned.
10520 </desc>
10521 </attribute>
10522
10523 <attribute name="sessions" type="IGuestSession" readonly="yes" safearray="yes">
10524 <desc>TODO</desc>
10525 </attribute>
10526
10527 <attribute name="memoryBalloonSize" type="unsigned long">
10528 <desc>Guest system memory balloon size in megabytes (transient property).</desc>
10529 </attribute>
10530
10531 <attribute name="statisticsUpdateInterval" type="unsigned long">
10532 <desc>Interval to update guest statistics in seconds.</desc>
10533 </attribute>
10534
10535 <method name="internalGetStatistics">
10536 <desc>
10537 Internal method; do not use as it might change at any time.
10538 </desc>
10539 <param name="cpuUser" type="unsigned long" dir="out">
10540 <desc>Percentage of processor time spent in user mode as seen by the guest.</desc>
10541 </param>
10542 <param name="cpuKernel" type="unsigned long" dir="out">
10543 <desc>Percentage of processor time spent in kernel mode as seen by the guest.</desc>
10544 </param>
10545 <param name="cpuIdle" type="unsigned long" dir="out">
10546 <desc>Percentage of processor time spent idling as seen by the guest.</desc>
10547 </param>
10548 <param name="memTotal" type="unsigned long" dir="out">
10549 <desc>Total amount of physical guest RAM.</desc>
10550 </param>
10551 <param name="memFree" type="unsigned long" dir="out">
10552 <desc>Free amount of physical guest RAM.</desc>
10553 </param>
10554 <param name="memBalloon" type="unsigned long" dir="out">
10555 <desc>Amount of ballooned physical guest RAM.</desc>
10556 </param>
10557 <param name="memShared" type="unsigned long" dir="out">
10558 <desc>Amount of shared physical guest RAM.</desc>
10559 </param>
10560 <param name="memCache" type="unsigned long" dir="out">
10561 <desc>Total amount of guest (disk) cache memory.</desc>
10562 </param>
10563 <param name="pagedTotal" type="unsigned long" dir="out">
10564 <desc>Total amount of space in the page file.</desc>
10565 </param>
10566 <param name="memAllocTotal" type="unsigned long" dir="out">
10567 <desc>Total amount of memory allocated by the hypervisor.</desc>
10568 </param>
10569 <param name="memFreeTotal" type="unsigned long" dir="out">
10570 <desc>Total amount of free memory available in the hypervisor.</desc>
10571 </param>
10572 <param name="memBalloonTotal" type="unsigned long" dir="out">
10573 <desc>Total amount of memory ballooned by the hypervisor.</desc>
10574 </param>
10575 <param name="memSharedTotal" type="unsigned long" dir="out">
10576 <desc>Total amount of shared memory in the hypervisor.</desc>
10577 </param>
10578 </method>
10579
10580 <method name="getFacilityStatus">
10581 <desc>
10582 Get the current status of a Guest Additions facility.
10583 </desc>
10584 <param name="facility" type="AdditionsFacilityType" dir="in">
10585 <desc>Facility to check status for.</desc>
10586 </param>
10587 <param name="timestamp" type="long long" dir="out">
10588 <desc>Timestamp (in ms) of last status update seen by the host.</desc>
10589 </param>
10590 <param name="status" type="AdditionsFacilityStatus" dir="return">
10591 <desc>The current (latest) facility status.</desc>
10592 </param>
10593 </method>
10594
10595 <method name="getAdditionsStatus">
10596 <desc>
10597 Retrieve the current status of a certain Guest Additions run level.
10598
10599 <result name="VBOX_E_NOT_SUPPORTED">
10600 Wrong status level specified.
10601 </result>
10602
10603 </desc>
10604 <param name="level" type="AdditionsRunLevelType" dir="in">
10605 <desc>Status level to check</desc>
10606 </param>
10607 <param name="active" type="boolean" dir="return">
10608 <desc>Flag whether the status level has been reached or not</desc>
10609 </param>
10610 </method>
10611
10612 <method name="setCredentials">
10613 <desc>
10614 Store login credentials that can be queried by guest operating
10615 systems with Additions installed. The credentials are transient
10616 to the session and the guest may also choose to erase them. Note
10617 that the caller cannot determine whether the guest operating system
10618 has queried or made use of the credentials.
10619
10620 <result name="VBOX_E_VM_ERROR">
10621 VMM device is not available.
10622 </result>
10623
10624 </desc>
10625 <param name="userName" type="wstring" dir="in">
10626 <desc>User name string, can be empty</desc>
10627 </param>
10628 <param name="password" type="wstring" dir="in">
10629 <desc>Password string, can be empty</desc>
10630 </param>
10631 <param name="domain" type="wstring" dir="in">
10632 <desc>Domain name (guest logon scheme specific), can be empty</desc>
10633 </param>
10634 <param name="allowInteractiveLogon" type="boolean" dir="in">
10635 <desc>
10636 Flag whether the guest should alternatively allow the user to
10637 interactively specify different credentials. This flag might
10638 not be supported by all versions of the Additions.
10639 </desc>
10640 </param>
10641 </method>
10642
10643 <method name="dragHGEnter">
10644 <desc>
10645 Informs the guest about a Drag and Drop enter event.
10646
10647 This is used in Host - Guest direction.
10648
10649 <result name="VBOX_E_VM_ERROR">
10650 VMM device is not available.
10651 </result>
10652
10653 </desc>
10654 <param name="screenId" type="unsigned long" dir="in">
10655 <desc>The screen id where the Drag and Drop event occured.</desc>
10656 </param>
10657 <param name="y" type="unsigned long" dir="in">
10658 <desc>y-position of the event.</desc>
10659 </param>
10660 <param name="x" type="unsigned long" dir="in">
10661 <desc>x-position of the event.</desc>
10662 </param>
10663 <param name="defaultAction" type="DragAndDropAction" dir="in">
10664 <desc>The default action to use.</desc>
10665 </param>
10666 <param name="allowedActions" type="DragAndDropAction" dir="in" safearray="yes">
10667 <desc>The actions which are allowed.</desc>
10668 </param>
10669 <param name="formats" type="wstring" dir="in" safearray="yes">
10670 <desc>The supported mime types.</desc>
10671 </param>
10672 <param name="resultAction" type="DragAndDropAction" dir="return">
10673 <desc>The resulting action of this event.</desc>
10674 </param>
10675 </method>
10676
10677 <method name="dragHGMove">
10678 <desc>
10679 Informs the guest about a Drag and Drop move event.
10680
10681 This is used in Host - Guest direction.
10682
10683 <result name="VBOX_E_VM_ERROR">
10684 VMM device is not available.
10685 </result>
10686
10687 </desc>
10688 <param name="screenId" type="unsigned long" dir="in">
10689 <desc>The screen id where the Drag and Drop event occured.</desc>
10690 </param>
10691 <param name="x" type="unsigned long" dir="in">
10692 <desc>x-position of the event.</desc>
10693 </param>
10694 <param name="y" type="unsigned long" dir="in">
10695 <desc>y-position of the event.</desc>
10696 </param>
10697 <param name="defaultAction" type="DragAndDropAction" dir="in">
10698 <desc>The default action to use.</desc>
10699 </param>
10700 <param name="allowedActions" type="DragAndDropAction" dir="in" safearray="yes">
10701 <desc>The actions which are allowed.</desc>
10702 </param>
10703 <param name="formats" type="wstring" dir="in" safearray="yes">
10704 <desc>The supported mime types.</desc>
10705 </param>
10706 <param name="resultAction" type="DragAndDropAction" dir="return">
10707 <desc>The resulting action of this event.</desc>
10708 </param>
10709 </method>
10710
10711 <method name="dragHGLeave">
10712 <desc>
10713 Informs the guest about a Drag and Drop leave event.
10714
10715 This is used in Host - Guest direction.
10716
10717 <result name="VBOX_E_VM_ERROR">
10718 VMM device is not available.
10719 </result>
10720
10721 </desc>
10722 <param name="screenId" type="unsigned long" dir="in">
10723 <desc>The screen id where the Drag and Drop event occured.</desc>
10724 </param>
10725 </method>
10726
10727 <method name="dragHGDrop">
10728 <desc>
10729 Informs the guest about a drop event.
10730
10731 This is used in Host - Guest direction.
10732
10733 <result name="VBOX_E_VM_ERROR">
10734 VMM device is not available.
10735 </result>
10736
10737 </desc>
10738 <param name="screenId" type="unsigned long" dir="in">
10739 <desc>The screen id where the Drag and Drop event occured.</desc>
10740 </param>
10741 <param name="x" type="unsigned long" dir="in">
10742 <desc>x-position of the event.</desc>
10743 </param>
10744 <param name="y" type="unsigned long" dir="in">
10745 <desc>y-position of the event.</desc>
10746 </param>
10747 <param name="defaultAction" type="DragAndDropAction" dir="in">
10748 <desc>The default action to use.</desc>
10749 </param>
10750 <param name="allowedActions" type="DragAndDropAction" dir="in" safearray="yes">
10751 <desc>The actions which are allowed.</desc>
10752 </param>
10753 <param name="formats" type="wstring" dir="in" safearray="yes">
10754 <desc>The supported mime types.</desc>
10755 </param>
10756 <param name="format" type="wstring" dir="out">
10757 <desc>The resulting format of this event.</desc>
10758 </param>
10759 <param name="resultAction" type="DragAndDropAction" dir="return">
10760 <desc>The resulting action of this event.</desc>
10761 </param>
10762 </method>
10763
10764 <method name="dragHGPutData">
10765 <desc>
10766 Informs the guest about a drop data event.
10767
10768 This is used in Host - Guest direction.
10769
10770 <result name="VBOX_E_VM_ERROR">
10771 VMM device is not available.
10772 </result>
10773
10774 </desc>
10775 <param name="screenId" type="unsigned long" dir="in">
10776 <desc>The screen id where the Drag and Drop event occured.</desc>
10777 </param>
10778 <param name="format" type="wstring" dir="in">
10779 <desc>The mime type the data is in.</desc>
10780 </param>
10781 <param name="data" type="octet" dir="in" safearray="yes">
10782 <desc>The actual data.</desc>
10783 </param>
10784 <param name="progress" type="IProgress" dir="return">
10785 <desc>Progress object to track the operation completion.</desc>
10786 </param>
10787 </method>
10788
10789 <method name="dragGHPending">
10790 <desc>
10791 Ask the guest if there is any Drag and Drop operation pending in the guest.
10792
10793 If no Drag and Drop operation is pending currently, Ignore is returned.
10794
10795 This is used in Guest - Host direction.
10796
10797 <result name="VBOX_E_VM_ERROR">
10798 VMM device is not available.
10799 </result>
10800
10801 </desc>
10802 <param name="screenId" type="unsigned long" dir="in">
10803 <desc>The screen id where the Drag and Drop event occured.</desc>
10804 </param>
10805 <param name="format" type="wstring" dir="out" safearray="yes">
10806 <desc>On return the supported mime types.</desc>
10807 </param>
10808 <param name="allowedActions" type="DragAndDropAction" dir="out" safearray="yes">
10809 <desc>On return the actions which are allowed.</desc>
10810 </param>
10811 <param name="defaultAction" type="DragAndDropAction" dir="return">
10812 <desc>On return the default action to use.</desc>
10813 </param>
10814 </method>
10815
10816 <method name="dragGHDropped">
10817 <desc>
10818 Informs the guest that a drop event occured for a pending Drag and Drop event.
10819
10820 This is used in Guest - Host direction.
10821
10822 <result name="VBOX_E_VM_ERROR">
10823 VMM device is not available.
10824 </result>
10825
10826 </desc>
10827
10828 <param name="format" type="wstring" dir="in">
10829 <desc>The mime type the data must be in.</desc>
10830 </param>
10831 <param name="action" type="DragAndDropAction" dir="in">
10832 <desc>The action to use.</desc>
10833 </param>
10834 <param name="progress" type="IProgress" dir="return">
10835 <desc>Progress object to track the operation completion.</desc>
10836 </param>
10837 </method>
10838
10839 <method name="dragGHGetData">
10840 <desc>
10841 Fetch the data of a previously Drag and Drop event from the guest.
10842
10843 This is used in Guest - Host direction.
10844
10845 <result name="VBOX_E_VM_ERROR">
10846 VMM device is not available.
10847 </result>
10848
10849 </desc>
10850
10851 <param name="data" type="octet" safearray="yes" dir="return">
10852 <desc>The actual data.</desc>
10853 </param>
10854 </method>
10855
10856 <method name="createSession">
10857 <desc>
10858 TODO
10859 </desc>
10860 <param name="user" type="wstring" dir="in">
10861 <desc>
10862 TODO
10863 </desc>
10864 </param>
10865 <param name="password" type="wstring" dir="in">
10866 <desc>
10867 TODO
10868 </desc>
10869 </param>
10870 <param name="domain" type="wstring" dir="in">
10871 <desc>
10872 TODO
10873 </desc>
10874 </param>
10875 <param name="sessionName" type="wstring" dir="in">
10876 <desc>
10877 TODO
10878 </desc>
10879 </param>
10880 <param name="guestSession" type="IGuestSession" dir="return">
10881 <desc>
10882 TODO
10883 </desc>
10884 </param>
10885 </method>
10886
10887 <method name="findSession">
10888 <desc>
10889 TODO
10890 </desc>
10891 <param name="sessionName" type="wstring" dir="in">
10892 <desc>
10893 TODO
10894 </desc>
10895 </param>
10896 <param name="sessions" type="IGuestSession" safearray="yes" dir="return">
10897 <desc>
10898 TODO
10899 </desc>
10900 </param>
10901 </method>
10902
10903 <method name="executeProcess">
10904 <desc>
10905 Executes an existing program inside the guest VM.
10906
10907 <note>
10908 Starting at VirtualBox 4.1.8 guest process execution by default is limited
10909 to serve up to 25 guest processes at a time. If all 25 guest processes
10910 are still active and running, starting a new guest process will result in an
10911 appropriate error message.
10912
10913 If ExecuteProcessFlag_WaitForStdOut and/or respectively
10914 ExecuteProcessFlag_WaitForStdErr of <link to="ExecuteProcessFlag"/> is
10915 set, the guest process will not exit until all data from the specified
10916 stream(s) is/are read out.
10917
10918 To raise or lower the guest process execution limit, either the guest property
10919 "/VirtualBox/GuestAdd/VBoxService/--control-procs-max-kept" or VBoxService'
10920 command line by specifying "--control-procs-max-kept" needs to be modified.
10921 A restart of the guest OS is required afterwards. To serve unlimited guest
10922 processes, a value of "0" needs to be set (not recommended).
10923 </note>
10924
10925 <result name="VBOX_E_IPRT_ERROR">
10926 Could not execute process.
10927 </result>
10928
10929 </desc>
10930 <param name="execName" type="wstring" dir="in">
10931 <desc>
10932 Full path name of the command to execute on the guest; the
10933 commands has to exists in the guest VM in order to be executed.
10934 </desc>
10935 </param>
10936 <param name="flags" type="unsigned long" dir="in">
10937 <desc>
10938 <link to="ExecuteProcessFlag"/> flags.
10939 </desc>
10940 </param>
10941 <param name="arguments" type="wstring" safearray="yes" dir="in">
10942 <desc>
10943 Array of arguments passed to the execution command.
10944 </desc>
10945 </param>
10946 <param name="environment" type="wstring" safearray="yes" dir="in">
10947 <desc>
10948 Environment variables that can be set while the command is being
10949 executed, in form of "NAME=VALUE"; one pair per entry. To unset a
10950 variable just set its name ("NAME") without a value.
10951 </desc>
10952 </param>
10953 <param name="userName" type="wstring" dir="in">
10954 <desc>
10955 User name under which the command will be executed; has to exist
10956 and have the appropriate rights to execute programs in the VM.
10957 </desc>
10958 </param>
10959 <param name="password" type="wstring" dir="in">
10960 <desc>
10961 Password of the user account specified.
10962 </desc>
10963 </param>
10964 <param name="timeoutMS" type="unsigned long" dir="in">
10965 <desc>
10966 The maximum timeout value (in msec) to wait for finished program
10967 execution. Pass 0 for an infinite timeout.
10968 </desc>
10969 </param>
10970 <param name="pid" type="unsigned long" dir="out">
10971 <desc>
10972 The PID (process ID) of the started command for later reference.
10973 </desc>
10974 </param>
10975 <param name="progress" type="IProgress" dir="return">
10976 <desc>Progress object to track the operation completion.</desc>
10977 </param>
10978 </method>
10979
10980 <method name="getProcessOutput">
10981 <desc>
10982 Retrieves output of a formerly started and running guest process.
10983
10984 <note>
10985 Starting with VirtualBox 4.1.8 this only will return output data
10986 from stdout or stderr if flag ExecuteProcessFlag_WaitForStdOut
10987 and/or respectively ExecuteProcessFlag_WaitForStdErr of
10988 <link to="ExecuteProcessFlag"/> is set in the
10989 former <link to="#executeProcess"/> call for this guest process.
10990 </note>
10991
10992 <result name="VBOX_E_IPRT_ERROR">
10993 Could not retrieve output.
10994 </result>
10995
10996 </desc>
10997 <param name="pid" type="unsigned long" dir="in">
10998 <desc>
10999 Process id returned by earlier <link to="#executeProcess"/> call.
11000 </desc>
11001 </param>
11002 <param name="flags" type="unsigned long" dir="in">
11003 <desc>
11004 <link to="ProcessOutputFlag"/> flags.
11005 </desc>
11006 </param>
11007 <param name="timeoutMS" type="unsigned long" dir="in">
11008 <desc>
11009 The maximum timeout value (in msec) to wait for output
11010 data. Pass 0 for an infinite timeout.
11011 </desc>
11012 </param>
11013 <param name="size" type="long long" dir="in">
11014 <desc>
11015 Size in bytes to read in the buffer.
11016 </desc>
11017 </param>
11018 <param name="data" type="octet" safearray="yes" dir="return">
11019 <desc>
11020 Buffer for retrieving the actual output. A data size of 0 means end of file
11021 if the requested size was not 0. This is the unprocessed
11022 output data, i.e. the line ending style depends on the platform of
11023 the system the server is running on.
11024 </desc>
11025 </param>
11026 </method>
11027
11028 <method name="getProcessStatus">
11029 <desc>
11030 Retrieves status, exit code and the exit reason of a formerly started
11031 guest process. If a guest process exited or got terminated this function
11032 returns its final status and removes this process from the list of
11033 known guest processes for further retrieval.
11034
11035 <result name="VBOX_E_IPRT_ERROR">
11036 Process with specified PID was not found.
11037 </result>
11038
11039 </desc>
11040 <param name="pid" type="unsigned long" dir="in">
11041 <desc>
11042 Process id returned by earlier <link to="#executeProcess"/> call.
11043 </desc>
11044 </param>
11045 <param name="exitcode" type="unsigned long" dir="out">
11046 <desc>
11047 The exit code (if available).
11048 </desc>
11049 </param>
11050 <param name="flags" type="unsigned long" dir="out">
11051 <desc>
11052 Additional flags of process status. Not used at the moment and
11053 must be set to 0.
11054 </desc>
11055 </param>
11056 <param name="reason" type="ExecuteProcessStatus" dir="return">
11057 <desc>
11058 The current process status.
11059 </desc>
11060 </param>
11061 </method>
11062
11063 <method name="copyFromGuest">
11064 <desc>
11065 Copies files/directories from guest to the host.
11066
11067 <result name="VBOX_E_IPRT_ERROR">
11068 Error while copying.
11069 </result>
11070
11071 </desc>
11072 <param name="source" type="wstring" dir="in">
11073 <desc>
11074 Source file on the guest to copy.
11075 </desc>
11076 </param>
11077 <param name="dest" type="wstring" dir="in">
11078 <desc>
11079 Destination path on the host.
11080 </desc>
11081 </param>
11082 <param name="userName" type="wstring" dir="in">
11083 <desc>
11084 User name under which the copy command will be executed; the
11085 user has to exist and have the appropriate rights to read from
11086 the source path.
11087 </desc>
11088 </param>
11089 <param name="password" type="wstring" dir="in">
11090 <desc>
11091 Password of the user account specified.
11092 </desc>
11093 </param>
11094 <param name="flags" type="unsigned long" dir="in">
11095 <desc>
11096 <link to="CopyFileFlag"/> flags. Not used at the moment and should be set to 0.
11097 </desc>
11098 </param>
11099 <param name="progress" type="IProgress" dir="return">
11100 <desc>Progress object to track the operation completion.</desc>
11101 </param>
11102 </method>
11103
11104 <method name="copyToGuest">
11105 <desc>
11106 Copies files/directories from host to the guest.
11107
11108 <result name="VBOX_E_IPRT_ERROR">
11109 Error while copying.
11110 </result>
11111
11112 </desc>
11113 <param name="source" type="wstring" dir="in">
11114 <desc>
11115 Source file on the host to copy.
11116 </desc>
11117 </param>
11118 <param name="dest" type="wstring" dir="in">
11119 <desc>
11120 Destination path on the guest.
11121 </desc>
11122 </param>
11123 <param name="userName" type="wstring" dir="in">
11124 <desc>
11125 User name under which the copy command will be executed; the
11126 user has to exist and have the appropriate rights to write to
11127 the destination path.
11128 </desc>
11129 </param>
11130 <param name="password" type="wstring" dir="in">
11131 <desc>
11132 Password of the user account specified.
11133 </desc>
11134 </param>
11135 <param name="flags" type="unsigned long" dir="in">
11136 <desc>
11137 <link to="CopyFileFlag"/> flags. Not used at the moment and should be set to 0.
11138 </desc>
11139 </param>
11140 <param name="progress" type="IProgress" dir="return">
11141 <desc>Progress object to track the operation completion.</desc>
11142 </param>
11143 </method>
11144
11145 <method name="directoryClose">
11146 <desc>
11147 Closes a formerly opened guest directory.
11148
11149 <result name="VBOX_E_IPRT_ERROR">
11150 Error while closing directory.
11151 </result>
11152
11153 </desc>
11154 <param name="handle" type="unsigned long" dir="in">
11155 <desc>
11156 Handle of opened directory to close.
11157 </desc>
11158 </param>
11159 </method>
11160
11161 <method name="directoryCreate">
11162 <desc>
11163 Creates a directory on the guest.
11164
11165 <result name="VBOX_E_IPRT_ERROR">
11166 Error while creating directory.
11167 </result>
11168
11169 </desc>
11170 <param name="directory" type="wstring" dir="in">
11171 <desc>
11172 Directory to create.
11173 </desc>
11174 </param>
11175 <param name="userName" type="wstring" dir="in">
11176 <desc>
11177 User name under which the directory creation will be executed; the
11178 user has to exist and have the appropriate rights to create the
11179 desired directory.
11180 </desc>
11181 </param>
11182 <param name="password" type="wstring" dir="in">
11183 <desc>
11184 Password of the user account specified.
11185 </desc>
11186 </param>
11187 <param name="mode" type="unsigned long" dir="in">
11188 <desc>
11189 File mode.
11190 </desc>
11191 </param>
11192 <param name="flags" type="unsigned long" dir="in">
11193 <desc>
11194 <link to="DirectoryCreateFlag"/> flags.
11195 </desc>
11196 </param>
11197 </method>
11198
11199 <method name="directoryOpen">
11200 <desc>
11201 Opens a directory on the guest.
11202
11203 <result name="VBOX_E_IPRT_ERROR">
11204 Error while opening / reading directory.
11205 </result>
11206
11207 </desc>
11208 <param name="directory" type="wstring" dir="in">
11209 <desc>
11210 Directory to read.
11211 </desc>
11212 </param>
11213 <param name="filter" type="wstring" dir="in">
11214 <desc>
11215 Directory filter (DOS style wildcards). Set to empty
11216 string if no filter required.
11217 </desc>
11218 </param>
11219 <param name="flags" type="unsigned long" dir="in">
11220 <desc>
11221 <link to="DirectoryOpenFlag"/> flags.
11222 </desc>
11223 </param>
11224 <param name="userName" type="wstring" dir="in">
11225 <desc>
11226 User name under which the directory reading will be performed; the
11227 user has to exist and have the appropriate rights to access / read the
11228 desired directory.
11229 </desc>
11230 </param>
11231 <param name="password" type="wstring" dir="in">
11232 <desc>
11233 Password of the user account specified.
11234 </desc>
11235 </param>
11236 <param name="handle" type="unsigned long" dir="return">
11237 <desc>
11238 Handle of opened directory returned by openDirectory.
11239 </desc>
11240 </param>
11241 </method>
11242
11243 <method name="directoryRead">
11244 <desc>
11245 Reads the next directory entry of an opened guest directory.
11246
11247 <result name="E_ABORT">
11248 When the end of the directory has been reached.
11249 </result>
11250
11251 <result name="VBOX_E_IPRT_ERROR">
11252 Error while opening / reading directory.
11253 </result>
11254
11255 </desc>
11256 <param name="handle" type="unsigned long" dir="in">
11257 <desc>
11258 Handle of opened directory returned by openDirectory.
11259 </desc>
11260 </param>
11261 <param name="entry" type="IGuestDirEntry" dir="return">
11262 <desc>
11263 Information about next directory entry on success.
11264 </desc>
11265 </param>
11266 </method>
11267
11268 <method name="fileExists">
11269 <desc>
11270 Checks if the specified file name exists and is a regular file.
11271
11272 If the file name ends with a slash or backslash, the function assumes
11273 it's a directory and will check if the specified directory exists and
11274 is a regular directory.
11275
11276 <result name="VBOX_E_IPRT_ERROR">
11277 Error while looking up information.
11278 </result>
11279
11280 </desc>
11281 <param name="file" type="wstring" dir="in">
11282 <desc>
11283 Full path of file to check.
11284 </desc>
11285 </param>
11286 <param name="userName" type="wstring" dir="in">
11287 <desc>
11288 User name under which the lookup will be performed; the
11289 user has to exist and have the appropriate rights to access / read the
11290 desired directory.
11291 </desc>
11292 </param>
11293 <param name="password" type="wstring" dir="in">
11294 <desc>
11295 Password of the user account specified.
11296 </desc>
11297 </param>
11298 <param name="exists" type="boolean" dir="return">
11299 <desc>
11300 True if it's a regular file, false if it isn't (or doesn't exist).
11301 </desc>
11302 </param>
11303 </method>
11304
11305 <method name="fileQuerySize">
11306 <desc>
11307 Queries the size of a file, given the path to it.
11308
11309 <result name="VBOX_E_IPRT_ERROR">
11310 Error while looking up information.
11311 </result>
11312
11313 </desc>
11314 <param name="file" type="wstring" dir="in">
11315 <desc>
11316 Full path of file to query file size for.
11317 </desc>
11318 </param>
11319 <param name="userName" type="wstring" dir="in">
11320 <desc>
11321 User name under which the lookup will be performed; the
11322 user has to exist and have the appropriate rights to access / read the
11323 desired directory.
11324 </desc>
11325 </param>
11326 <param name="password" type="wstring" dir="in">
11327 <desc>
11328 Password of the user account specified.
11329 </desc>
11330 </param>
11331 <param name="size" type="long long" dir="return">
11332 <desc>
11333 Size (in bytes) of file specified.
11334 </desc>
11335 </param>
11336 </method>
11337
11338 <method name="setProcessInput">
11339 <desc>
11340 Sends input into a formerly started process.
11341
11342 <result name="VBOX_E_IPRT_ERROR">
11343 Could not send input.
11344 </result>
11345
11346 </desc>
11347 <param name="pid" type="unsigned long" dir="in">
11348 <desc>
11349 Process id returned by earlier <link to="#executeProcess"/> call.
11350 </desc>
11351 </param>
11352 <param name="flags" type="unsigned long" dir="in">
11353 <desc>
11354 <link to="ProcessInputFlag"/> flags.
11355 </desc>
11356 </param>
11357 <param name="timeoutMS" type="unsigned long" dir="in">
11358 <desc>
11359 The maximum timeout value (in msec) to wait for getting the
11360 data transfered to the guest. Pass 0 for an infinite timeout.
11361 </desc>
11362 </param>
11363 <param name="data" type="octet" dir="in" safearray="yes">
11364 <desc>
11365 Buffer of input data to send to the started process to.
11366 </desc>
11367 </param>
11368 <param name="written" type="unsigned long" dir="return">
11369 <desc>
11370 Number of bytes written.
11371 </desc>
11372 </param>
11373 </method>
11374
11375 <method name="updateGuestAdditions">
11376 <desc>
11377 Updates already installed Guest Additions in a VM
11378 (Windows guests only).
11379
11380 <result name="VBOX_E_IPRT_ERROR">
11381 Error while updating.
11382 </result>
11383
11384 </desc>
11385 <param name="source" type="wstring" dir="in">
11386 <desc>
11387 Path to the Guest Additions .ISO file to use for the upate.
11388 </desc>
11389 </param>
11390 <param name="flags" type="unsigned long" dir="in">
11391 <desc>
11392 <link to="AdditionsUpdateFlag"/> flags.
11393 </desc>
11394 </param>
11395 <param name="progress" type="IProgress" dir="return">
11396 <desc>Progress object to track the operation completion.</desc>
11397 </param>
11398 </method>
11399
11400 </interface>
11401
11402
11403 <!--
11404 // IProgress
11405 /////////////////////////////////////////////////////////////////////////
11406 -->
11407
11408 <interface
11409 name="IProgress" extends="$unknown"
11410 uuid="c20238e4-3221-4d3f-8891-81ce92d9f913"
11411 wsmap="managed"
11412 >
11413 <desc>
11414 The IProgress interface is used to track and control
11415 asynchronous tasks within VirtualBox.
11416
11417 An instance of this is returned every time VirtualBox starts
11418 an asynchronous task (in other words, a separate thread) which
11419 continues to run after a method call returns. For example,
11420 <link to="IConsole::saveState" />, which saves the state of
11421 a running virtual machine, can take a long time to complete.
11422 To be able to display a progress bar, a user interface such as
11423 the VirtualBox graphical user interface can use the IProgress
11424 object returned by that method.
11425
11426 Note that IProgress is a "read-only" interface in the sense
11427 that only the VirtualBox internals behind the Main API can
11428 create and manipulate progress objects, whereas client code
11429 can only use the IProgress object to monitor a task's
11430 progress and, if <link to="#cancelable" /> is @c true,
11431 cancel the task by calling <link to="#cancel" />.
11432
11433 A task represented by IProgress consists of either one or
11434 several sub-operations that run sequentially, one by one (see
11435 <link to="#operation" /> and <link to="#operationCount" />).
11436 Every operation is identified by a number (starting from 0)
11437 and has a separate description.
11438
11439 You can find the individual percentage of completion of the current
11440 operation in <link to="#operationPercent" /> and the
11441 percentage of completion of the task as a whole
11442 in <link to="#percent" />.
11443
11444 Similarly, you can wait for the completion of a particular
11445 operation via <link to="#waitForOperationCompletion" /> or
11446 for the completion of the whole task via
11447 <link to="#waitForCompletion" />.
11448 </desc>
11449
11450 <attribute name="id" type="uuid" mod="string" readonly="yes">
11451 <desc>ID of the task.</desc>
11452 </attribute>
11453
11454 <attribute name="description" type="wstring" readonly="yes">
11455 <desc>Description of the task.</desc>
11456 </attribute>
11457
11458 <attribute name="initiator" type="$unknown" readonly="yes">
11459 <desc>Initiator of the task.</desc>
11460 </attribute>
11461
11462 <attribute name="cancelable" type="boolean" readonly="yes">
11463 <desc>Whether the task can be interrupted.</desc>
11464 </attribute>
11465
11466 <attribute name="percent" type="unsigned long" readonly="yes">
11467 <desc>
11468 Current progress value of the task as a whole, in percent.
11469 This value depends on how many operations are already complete.
11470 Returns 100 if <link to="#completed" /> is @c true.
11471 </desc>
11472 </attribute>
11473
11474 <attribute name="timeRemaining" type="long" readonly="yes">
11475 <desc>
11476 Estimated remaining time until the task completes, in
11477 seconds. Returns 0 once the task has completed; returns -1
11478 if the remaining time cannot be computed, in particular if
11479 the current progress is 0.
11480
11481 Even if a value is returned, the estimate will be unreliable
11482 for low progress values. It will become more reliable as the
11483 task progresses; it is not recommended to display an ETA
11484 before at least 20% of a task have completed.
11485 </desc>
11486 </attribute>
11487
11488 <attribute name="completed" type="boolean" readonly="yes">
11489 <desc>Whether the task has been completed.</desc>
11490 </attribute>
11491
11492 <attribute name="canceled" type="boolean" readonly="yes">
11493 <desc>Whether the task has been canceled.</desc>
11494 </attribute>
11495
11496 <attribute name="resultCode" type="long" readonly="yes">
11497 <desc>
11498 Result code of the progress task.
11499 Valid only if <link to="#completed"/> is @c true.
11500 </desc>
11501 </attribute>
11502
11503 <attribute name="errorInfo" type="IVirtualBoxErrorInfo" readonly="yes">
11504 <desc>
11505 Extended information about the unsuccessful result of the
11506 progress operation. May be @c null if no extended information
11507 is available.
11508 Valid only if <link to="#completed"/> is @c true and
11509 <link to="#resultCode"/> indicates a failure.
11510 </desc>
11511 </attribute>
11512
11513 <attribute name="operationCount" type="unsigned long" readonly="yes">
11514 <desc>
11515 Number of sub-operations this task is divided into.
11516 Every task consists of at least one suboperation.
11517 </desc>
11518 </attribute>
11519
11520 <attribute name="operation" type="unsigned long" readonly="yes">
11521 <desc>Number of the sub-operation being currently executed.</desc>
11522 </attribute>
11523
11524 <attribute name="operationDescription" type="wstring" readonly="yes">
11525 <desc>
11526 Description of the sub-operation being currently executed.
11527 </desc>
11528 </attribute>
11529
11530 <attribute name="operationPercent" type="unsigned long" readonly="yes">
11531 <desc>Progress value of the current sub-operation only, in percent.</desc>
11532 </attribute>
11533
11534 <attribute name="operationWeight" type="unsigned long" readonly="yes">
11535 <desc>Weight value of the current sub-operation only.</desc>
11536 </attribute>
11537
11538 <attribute name="timeout" type="unsigned long">
11539 <desc>
11540 When non-zero, this specifies the number of milliseconds after which
11541 the operation will automatically be canceled. This can only be set on
11542 cancelable objects.
11543 </desc>
11544 </attribute>
11545
11546 <method name="setCurrentOperationProgress">
11547 <desc>Internal method, not to be called externally.</desc>
11548 <param name="percent" type="unsigned long" dir="in" />
11549 </method>
11550 <method name="setNextOperation">
11551 <desc>Internal method, not to be called externally.</desc>
11552 <param name="nextOperationDescription" type="wstring" dir="in" />
11553 <param name="nextOperationsWeight" type="unsigned long" dir="in" />
11554 </method>
11555
11556 <method name="waitForCompletion">
11557 <desc>
11558 Waits until the task is done (including all sub-operations)
11559 with a given timeout in milliseconds; specify -1 for an indefinite wait.
11560
11561 Note that the VirtualBox/XPCOM/COM/native event queues of the calling
11562 thread are not processed while waiting. Neglecting event queues may
11563 have dire consequences (degrade performance, resource hogs,
11564 deadlocks, etc.), this is specially so for the main thread on
11565 platforms using XPCOM. Callers are adviced wait for short periods
11566 and service their event queues between calls, or to create a worker
11567 thread to do the waiting.
11568
11569 <result name="VBOX_E_IPRT_ERROR">
11570 Failed to wait for task completion.
11571 </result>
11572 </desc>
11573
11574 <param name="timeout" type="long" dir="in">
11575 <desc>
11576 Maximum time in milliseconds to wait or -1 to wait indefinitely.
11577 </desc>
11578 </param>
11579 </method>
11580
11581 <method name="waitForOperationCompletion">
11582 <desc>
11583 Waits until the given operation is done with a given timeout in
11584 milliseconds; specify -1 for an indefinite wait.
11585
11586 See <link to="#waitForCompletion"> for event queue considerations.</link>
11587
11588 <result name="VBOX_E_IPRT_ERROR">
11589 Failed to wait for operation completion.
11590 </result>
11591
11592 </desc>
11593 <param name="operation" type="unsigned long" dir="in">
11594 <desc>
11595 Number of the operation to wait for.
11596 Must be less than <link to="#operationCount"/>.
11597 </desc>
11598 </param>
11599 <param name="timeout" type="long" dir="in">
11600 <desc>
11601 Maximum time in milliseconds to wait or -1 to wait indefinitely.
11602 </desc>
11603 </param>
11604 </method>
11605
11606 <method name="waitForAsyncProgressCompletion">
11607 <desc>
11608 Waits until the other task is completed (including all
11609 sub-operations) and forward all changes from the other progress to
11610 this progress. This means sub-operation number, description, percent
11611 and so on.
11612
11613 You have to take care on setting up at least the same count on
11614 sub-operations in this progress object like there are in the other
11615 progress object.
11616
11617 If the other progress object supports cancel and this object gets any
11618 cancel request (when here enabled as well), it will be forwarded to
11619 the other progress object.
11620
11621 If there is an error in the other progress, this error isn't
11622 automatically transfered to this progress object. So you have to
11623 check any operation error within the other progress object, after
11624 this method returns.
11625 </desc>
11626
11627 <param name="pProgressAsync" type="IProgress" dir="in">
11628 <desc>
11629 The progress object of the asynchrony process.
11630 </desc>
11631 </param>
11632 </method>
11633
11634 <method name="cancel">
11635 <desc>
11636 Cancels the task.
11637 <note>
11638 If <link to="#cancelable"/> is @c false, then this method will fail.
11639 </note>
11640
11641 <result name="VBOX_E_INVALID_OBJECT_STATE">
11642 Operation cannot be canceled.
11643 </result>
11644
11645 </desc>
11646 </method>
11647
11648 </interface>
11649
11650 <!--
11651 // ISnapshot
11652 /////////////////////////////////////////////////////////////////////////
11653 -->
11654
11655 <interface
11656 name="ISnapshot" extends="$unknown"
11657 uuid="0472823b-c6e7-472a-8e9f-d732e86b8463"
11658 wsmap="managed"
11659 >
11660 <desc>
11661 The ISnapshot interface represents a snapshot of the virtual
11662 machine.
11663
11664 Together with the differencing media that are created
11665 when a snapshot is taken, a machine can be brought back to
11666 the exact state it was in when the snapshot was taken.
11667
11668 The ISnapshot interface has no methods, only attributes; snapshots
11669 are controlled through methods of the <link to="IConsole" /> interface
11670 which also manage the media associated with the snapshot.
11671 The following operations exist:
11672
11673 <ul>
11674 <li><link to="IConsole::takeSnapshot"/> creates a new snapshot
11675 by creating new, empty differencing images for the machine's
11676 media and saving the VM settings and (if the VM is running)
11677 the current VM state in the snapshot.
11678
11679 The differencing images will then receive all data written to
11680 the machine's media, while their parent (base) images
11681 remain unmodified after the snapshot has been taken (see
11682 <link to="IMedium" /> for details about differencing images).
11683 This simplifies restoring a machine to the state of a snapshot:
11684 only the differencing images need to be deleted.
11685
11686 The current machine state is not changed by taking a snapshot
11687 except that <link to="IMachine::currentSnapshot" /> is set to
11688 the newly created snapshot, which is also added to the machine's
11689 snapshots tree.
11690 </li>
11691
11692 <li><link to="IConsole::restoreSnapshot"/> resets a machine to
11693 the state of a previous snapshot by deleting the differencing
11694 image of each of the machine's media and setting the machine's
11695 settings and state to the state that was saved in the snapshot (if any).
11696
11697 This destroys the machine's current state. After calling this,
11698 <link to="IMachine::currentSnapshot" /> points to the snapshot
11699 that was restored.
11700 </li>
11701
11702 <li><link to="IConsole::deleteSnapshot"/> deletes a snapshot
11703 without affecting the current machine state.
11704
11705 This does not change the current machine state, but instead frees the
11706 resources allocated when the snapshot was taken: the settings and machine
11707 state file are deleted (if any), and the snapshot's differencing image for
11708 each of the machine's media gets merged with its parent image.
11709
11710 Neither the current machine state nor other snapshots are affected
11711 by this operation, except that parent media will be modified
11712 to contain the disk data associated with the snapshot being deleted.
11713
11714 When deleting the current snapshot, the <link to="IMachine::currentSnapshot" />
11715 attribute is set to the current snapshot's parent or @c null if it
11716 has no parent. Otherwise the attribute is unchanged.
11717 </li>
11718 </ul>
11719
11720 Each snapshot contains a copy of virtual machine's settings (hardware
11721 configuration etc.). This copy is contained in an immutable (read-only)
11722 instance of <link to="IMachine" /> which is available from the snapshot's
11723 <link to="#machine" /> attribute. When restoring the snapshot, these
11724 settings are copied back to the original machine.
11725
11726 In addition, if the machine was running when the
11727 snapshot was taken (<link to="IMachine::state"/> is <link to="MachineState_Running"/>),
11728 the current VM state is saved in the snapshot (similarly to what happens
11729 when a VM's state is saved). The snapshot is then said to be <i>online</i>
11730 because when restoring it, the VM will be running.
11731
11732 If the machine was in <link to="MachineState_Saved">saved</link> saved,
11733 the snapshot receives a copy of the execution state file
11734 (<link to="IMachine::stateFilePath"/>).
11735
11736 Otherwise, if the machine was not running (<link to="MachineState_PoweredOff"/>
11737 or <link to="MachineState_Aborted"/>), the snapshot is <i>offline</i>;
11738 it then contains a so-called "zero execution state", representing a
11739 machine that is powered off.
11740 </desc>
11741
11742 <attribute name="id" type="uuid" mod="string" readonly="yes">
11743 <desc>UUID of the snapshot.</desc>
11744 </attribute>
11745
11746 <attribute name="name" type="wstring">
11747 <desc>Short name of the snapshot.
11748 <note>Setting this attribute causes <link to="IMachine::saveSettings" /> to
11749 be called implicitly.</note>
11750 </desc>
11751 </attribute>
11752
11753 <attribute name="description" type="wstring">
11754 <desc>Optional description of the snapshot.
11755 <note>Setting this attribute causes <link to="IMachine::saveSettings" /> to
11756 be called implicitly.</note>
11757 </desc>
11758 </attribute>
11759
11760 <attribute name="timeStamp" type="long long" readonly="yes">
11761 <desc>
11762 Time stamp of the snapshot, in milliseconds since 1970-01-01 UTC.
11763 </desc>
11764 </attribute>
11765
11766 <attribute name="online" type="boolean" readonly="yes">
11767 <desc>
11768 @c true if this snapshot is an online snapshot and @c false otherwise.
11769
11770 When this attribute is @c true, the
11771 <link to="IMachine::stateFilePath"/> attribute of the
11772 <link to="#machine"/> object associated with this snapshot
11773 will point to the saved state file. Otherwise, it will be
11774 an empty string.
11775 </desc>
11776 </attribute>
11777
11778 <attribute name="machine" type="IMachine" readonly="yes">
11779 <desc>
11780 Virtual machine this snapshot is taken on. This object
11781 stores all settings the machine had when taking this snapshot.
11782 <note>
11783 The returned machine object is immutable, i.e. no
11784 any settings can be changed.
11785 </note>
11786 </desc>
11787 </attribute>
11788
11789 <attribute name="parent" type="ISnapshot" readonly="yes">
11790 <desc>
11791 Parent snapshot (a snapshot this one is based on), or
11792 @c null if the snapshot has no parent (i.e. is the first snapshot).
11793 </desc>
11794 </attribute>
11795
11796 <attribute name="children" type="ISnapshot" readonly="yes" safearray="yes">
11797 <desc>
11798 Child snapshots (all snapshots having this one as a parent).
11799 By inspecting this attribute starting with a machine's root snapshot
11800 (which can be obtained by calling <link to="IMachine::findSnapshot" />
11801 with a @c null UUID), a machine's snapshots tree can be iterated over.
11802 </desc>
11803 </attribute>
11804
11805 <method name="getChildrenCount" const="yes">
11806 <desc>
11807 Returns the number of direct childrens of this snapshot.
11808 </desc>
11809 <param name="childrenCount" type="unsigned long" dir="return">
11810 <desc>
11811 </desc>
11812 </param>
11813 </method>
11814
11815 </interface>
11816
11817
11818 <!--
11819 // IMedium
11820 /////////////////////////////////////////////////////////////////////////
11821 -->
11822
11823 <enum
11824 name="MediumState"
11825 uuid="ef41e980-e012-43cd-9dea-479d4ef14d13"
11826 >
11827 <desc>
11828 Virtual medium state.
11829 <see><link to="IMedium"/></see>
11830 </desc>
11831
11832 <const name="NotCreated" value="0">
11833 <desc>
11834 Associated medium storage does not exist (either was not created yet or
11835 was deleted).
11836 </desc>
11837 </const>
11838 <const name="Created" value="1">
11839 <desc>
11840 Associated storage exists and accessible; this gets set if the
11841 accessibility check performed by <link to="IMedium::refreshState" />
11842 was successful.
11843 </desc>
11844 </const>
11845 <const name="LockedRead" value="2">
11846 <desc>
11847 Medium is locked for reading (see <link to="IMedium::lockRead"/>),
11848 no data modification is possible.
11849 </desc>
11850 </const>
11851 <const name="LockedWrite" value="3">
11852 <desc>
11853 Medium is locked for writing (see <link to="IMedium::lockWrite"/>),
11854 no concurrent data reading or modification is possible.
11855 </desc>
11856 </const>
11857 <const name="Inaccessible" value="4">
11858 <desc>
11859 Medium accessibility check (see <link to="IMedium::refreshState" />) has
11860 not yet been performed, or else, associated medium storage is not
11861 accessible. In the first case, <link to="IMedium::lastAccessError"/>
11862 is empty, in the second case, it describes the error that occurred.
11863 </desc>
11864 </const>
11865 <const name="Creating" value="5">
11866 <desc>
11867 Associated medium storage is being created.
11868 </desc>
11869 </const>
11870 <const name="Deleting" value="6">
11871 <desc>
11872 Associated medium storage is being deleted.
11873 </desc>
11874 </const>
11875 </enum>
11876
11877 <enum
11878 name="MediumType"
11879 uuid="fe663fb5-c244-4e1b-9d81-c628b417dd04"
11880 >
11881 <desc>
11882 Virtual medium type. For each <link to="IMedium" />, this defines how the medium is
11883 attached to a virtual machine (see <link to="IMediumAttachment" />) and what happens
11884 when a snapshot (see <link to="ISnapshot" />) is taken of a virtual machine which has
11885 the medium attached. At the moment DVD and floppy media are always of type "writethrough".
11886 </desc>
11887
11888 <const name="Normal" value="0">
11889 <desc>
11890 Normal medium (attached directly or indirectly, preserved
11891 when taking snapshots).
11892 </desc>
11893 </const>
11894 <const name="Immutable" value="1">
11895 <desc>
11896 Immutable medium (attached indirectly, changes are wiped out
11897 the next time the virtual machine is started).
11898 </desc>
11899 </const>
11900 <const name="Writethrough" value="2">
11901 <desc>
11902 Write through medium (attached directly, ignored when
11903 taking snapshots).
11904 </desc>
11905 </const>
11906 <const name="Shareable" value="3">
11907 <desc>
11908 Allow using this medium concurrently by several machines.
11909 <note>Present since VirtualBox 3.2.0, and accepted since 3.2.8.</note>
11910 </desc>
11911 </const>
11912 <const name="Readonly" value="4">
11913 <desc>
11914 A readonly medium, which can of course be used by several machines.
11915 <note>Present and accepted since VirtualBox 4.0.</note>
11916 </desc>
11917 </const>
11918 <const name="MultiAttach" value="5">
11919 <desc>
11920 A medium which is indirectly attached, so that one base medium can
11921 be used for several VMs which have their own differencing medium to
11922 store their modifications. In some sense a variant of Immutable
11923 with unset AutoReset flag in each differencing medium.
11924 <note>Present and accepted since VirtualBox 4.0.</note>
11925 </desc>
11926 </const>
11927 </enum>
11928
11929 <enum
11930 name="MediumVariant"
11931 uuid="80685b6b-e42f-497d-8271-e77bf3c61ada"
11932 >
11933 <desc>
11934 Virtual medium image variant. More than one flag may be set.
11935 <see><link to="IMedium"/></see>
11936 </desc>
11937
11938 <const name="Standard" value="0">
11939 <desc>
11940 No particular variant requested, results in using the backend default.
11941 </desc>
11942 </const>
11943 <const name="VmdkSplit2G" value="0x01">
11944 <desc>
11945 VMDK image split in chunks of less than 2GByte.
11946 </desc>
11947 </const>
11948 <const name="VmdkRawDisk" value="0x02">
11949 <desc>
11950 VMDK image representing a raw disk.
11951 </desc>
11952 </const>
11953 <const name="VmdkStreamOptimized" value="0x04">
11954 <desc>
11955 VMDK streamOptimized image. Special import/export format which is
11956 read-only/append-only.
11957 </desc>
11958 </const>
11959 <const name="VmdkESX" value="0x08">
11960 <desc>
11961 VMDK format variant used on ESX products.
11962 </desc>
11963 </const>
11964 <const name="Fixed" value="0x10000">
11965 <desc>
11966 Fixed image. Only allowed for base images.
11967 </desc>
11968 </const>
11969 <const name="Diff" value="0x20000">
11970 <desc>
11971 Differencing image. Only allowed for child images.
11972 </desc>
11973 </const>
11974 <const name="NoCreateDir" value="0x40000000">
11975 <desc>
11976 Special flag which suppresses automatic creation of the subdirectory.
11977 Only used when passing the medium variant as an input parameter.
11978 </desc>
11979 </const>
11980 </enum>
11981
11982 <interface
11983 name="IMediumAttachment" extends="$unknown"
11984 uuid="5ee464d6-0613-4331-b154-7ce12170ef9f"
11985 wsmap="struct"
11986 >
11987 <desc>
11988 The IMediumAttachment interface links storage media to virtual machines.
11989 For each medium (<link to="IMedium"/>) which has been attached to a
11990 storage controller (<link to="IStorageController"/>) of a machine
11991 (<link to="IMachine"/>) via the <link to="IMachine::attachDevice" />
11992 method, one instance of IMediumAttachment is added to the machine's
11993 <link to="IMachine::mediumAttachments"/> array attribute.
11994
11995 Each medium attachment specifies the storage controller as well as a
11996 port and device number and the IMedium instance representing a virtual
11997 hard disk or floppy or DVD image.
11998
11999 For removable media (DVDs or floppies), there are two additional
12000 options. For one, the IMedium instance can be @c null to represent
12001 an empty drive with no media inserted (see <link to="IMachine::mountMedium" />);
12002 secondly, the medium can be one of the pseudo-media for host drives
12003 listed in <link to="IHost::DVDDrives"/> or <link to="IHost::floppyDrives"/>.
12004
12005 <h3>Attaching Hard Disks</h3>
12006
12007 Hard disks are attached to virtual machines using the
12008 <link to="IMachine::attachDevice"/> method and detached using the
12009 <link to="IMachine::detachDevice"/> method. Depending on a medium's
12010 type (see <link to="IMedium::type" />), hard disks are attached either
12011 <i>directly</i> or <i>indirectly</i>.
12012
12013 When a hard disk is being attached directly, it is associated with the
12014 virtual machine and used for hard disk operations when the machine is
12015 running. When a hard disk is being attached indirectly, a new differencing
12016 hard disk linked to it is implicitly created and this differencing hard
12017 disk is associated with the machine and used for hard disk operations.
12018 This also means that if <link to="IMachine::attachDevice"/> performs
12019 a direct attachment then the same hard disk will be returned in response
12020 to the subsequent <link to="IMachine::getMedium"/> call; however if
12021 an indirect attachment is performed then
12022 <link to="IMachine::getMedium"/> will return the implicitly created
12023 differencing hard disk, not the original one passed to <link
12024 to="IMachine::attachDevice"/>. In detail:
12025
12026 <ul>
12027 <li><b>Normal base</b> hard disks that do not have children (i.e.
12028 differencing hard disks linked to them) and that are not already
12029 attached to virtual machines in snapshots are attached <b>directly</b>.
12030 Otherwise, they are attached <b>indirectly</b> because having
12031 dependent children or being part of the snapshot makes it impossible
12032 to modify hard disk contents without breaking the integrity of the
12033 dependent party. The <link to="IMedium::readOnly"/> attribute allows to
12034 quickly determine the kind of the attachment for the given hard
12035 disk. Note that if a normal base hard disk is to be indirectly
12036 attached to a virtual machine with snapshots then a special
12037 procedure called <i>smart attachment</i> is performed (see below).</li>
12038 <li><b>Normal differencing</b> hard disks are like normal base hard disks:
12039 they are attached <b>directly</b> if they do not have children and are
12040 not attached to virtual machines in snapshots, and <b>indirectly</b>
12041 otherwise. Note that the smart attachment procedure is never performed
12042 for differencing hard disks.</li>
12043 <li><b>Immutable</b> hard disks are always attached <b>indirectly</b> because
12044 they are designed to be non-writable. If an immutable hard disk is
12045 attached to a virtual machine with snapshots then a special
12046 procedure called smart attachment is performed (see below).</li>
12047 <li><b>Writethrough</b> hard disks are always attached <b>directly</b>,
12048 also as designed. This also means that writethrough hard disks cannot
12049 have other hard disks linked to them at all.</li>
12050 <li><b>Shareable</b> hard disks are always attached <b>directly</b>,
12051 also as designed. This also means that shareable hard disks cannot
12052 have other hard disks linked to them at all. They behave almost
12053 like writethrough hard disks, except that shareable hard disks can
12054 be attached to several virtual machines which are running, allowing
12055 concurrent accesses. You need special cluster software running in
12056 the virtual machines to make use of such disks.</li>
12057 </ul>
12058
12059 Note that the same hard disk, regardless of its type, may be attached to
12060 more than one virtual machine at a time. In this case, the machine that is
12061 started first gains exclusive access to the hard disk and attempts to
12062 start other machines having this hard disk attached will fail until the
12063 first machine is powered down.
12064
12065 Detaching hard disks is performed in a <i>deferred</i> fashion. This means
12066 that the given hard disk remains associated with the given machine after a
12067 successful <link to="IMachine::detachDevice"/> call until
12068 <link to="IMachine::saveSettings"/> is called to save all changes to
12069 machine settings to disk. This deferring is necessary to guarantee that
12070 the hard disk configuration may be restored at any time by a call to
12071 <link to="IMachine::discardSettings"/> before the settings
12072 are saved (committed).
12073
12074 Note that if <link to="IMachine::discardSettings"/> is called after
12075 indirectly attaching some hard disks to the machine but before a call to
12076 <link to="IMachine::saveSettings"/> is made, it will implicitly delete
12077 all differencing hard disks implicitly created by
12078 <link to="IMachine::attachDevice"/> for these indirect attachments.
12079 Such implicitly created hard disks will also be immediately deleted when
12080 detached explicitly using the <link to="IMachine::detachDevice"/>
12081 call if it is made before <link to="IMachine::saveSettings"/>. This
12082 implicit deletion is safe because newly created differencing hard
12083 disks do not contain any user data.
12084
12085 However, keep in mind that detaching differencing hard disks that were
12086 implicitly created by <link to="IMachine::attachDevice"/>
12087 before the last <link to="IMachine::saveSettings"/> call will
12088 <b>not</b> implicitly delete them as they may already contain some data
12089 (for example, as a result of virtual machine execution). If these hard
12090 disks are no more necessary, the caller can always delete them explicitly
12091 using <link to="IMedium::deleteStorage"/> after they are actually de-associated
12092 from this machine by the <link to="IMachine::saveSettings"/> call.
12093
12094 <h3>Smart Attachment</h3>
12095
12096 When normal base or immutable hard disks are indirectly attached to a
12097 virtual machine then some additional steps are performed to make sure the
12098 virtual machine will have the most recent "view" of the hard disk being
12099 attached. These steps include walking through the machine's snapshots
12100 starting from the current one and going through ancestors up to the first
12101 snapshot. Hard disks attached to the virtual machine in all
12102 of the encountered snapshots are checked whether they are descendants of
12103 the given normal base or immutable hard disk. The first found child (which
12104 is the differencing hard disk) will be used instead of the normal base or
12105 immutable hard disk as a parent for creating a new differencing hard disk
12106 that will be actually attached to the machine. And only if no descendants
12107 are found or if the virtual machine does not have any snapshots then the
12108 normal base or immutable hard disk will be used itself as a parent for
12109 this differencing hard disk.
12110
12111 It is easier to explain what smart attachment does using the
12112 following example:
12113 <pre>
12114BEFORE attaching B.vdi: AFTER attaching B.vdi:
12115
12116Snapshot 1 (B.vdi) Snapshot 1 (B.vdi)
12117 Snapshot 2 (D1->B.vdi) Snapshot 2 (D1->B.vdi)
12118 Snapshot 3 (D2->D1.vdi) Snapshot 3 (D2->D1.vdi)
12119 Snapshot 4 (none) Snapshot 4 (none)
12120 CurState (none) CurState (D3->D2.vdi)
12121
12122 NOT
12123 ...
12124 CurState (D3->B.vdi)
12125 </pre>
12126 The first column is the virtual machine configuration before the base hard
12127 disk <tt>B.vdi</tt> is attached, the second column shows the machine after
12128 this hard disk is attached. Constructs like <tt>D1->B.vdi</tt> and similar
12129 mean that the hard disk that is actually attached to the machine is a
12130 differencing hard disk, <tt>D1.vdi</tt>, which is linked to (based on)
12131 another hard disk, <tt>B.vdi</tt>.
12132
12133 As we can see from the example, the hard disk <tt>B.vdi</tt> was detached
12134 from the machine before taking Snapshot 4. Later, after Snapshot 4 was
12135 taken, the user decides to attach <tt>B.vdi</tt> again. <tt>B.vdi</tt> has
12136 dependent child hard disks (<tt>D1.vdi</tt>, <tt>D2.vdi</tt>), therefore
12137 it cannot be attached directly and needs an indirect attachment (i.e.
12138 implicit creation of a new differencing hard disk). Due to the smart
12139 attachment procedure, the new differencing hard disk
12140 (<tt>D3.vdi</tt>) will be based on <tt>D2.vdi</tt>, not on
12141 <tt>B.vdi</tt> itself, since <tt>D2.vdi</tt> is the most recent view of
12142 <tt>B.vdi</tt> existing for this snapshot branch of the given virtual
12143 machine.
12144
12145 Note that if there is more than one descendant hard disk of the given base
12146 hard disk found in a snapshot, and there is an exact device, channel and
12147 bus match, then this exact match will be used. Otherwise, the youngest
12148 descendant will be picked up.
12149
12150 There is one more important aspect of the smart attachment procedure which
12151 is not related to snapshots at all. Before walking through the snapshots
12152 as described above, the backup copy of the current list of hard disk
12153 attachment is searched for descendants. This backup copy is created when
12154 the hard disk configuration is changed for the first time after the last
12155 <link to="IMachine::saveSettings"/> call and used by
12156 <link to="IMachine::discardSettings"/> to undo the recent hard disk
12157 changes. When such a descendant is found in this backup copy, it will be
12158 simply re-attached back, without creating a new differencing hard disk for
12159 it. This optimization is necessary to make it possible to re-attach the
12160 base or immutable hard disk to a different bus, channel or device slot
12161 without losing the contents of the differencing hard disk actually
12162 attached to the machine in place of it.
12163
12164 </desc>
12165
12166 <attribute name="medium" type="IMedium" readonly="yes">
12167 <desc>Medium object associated with this attachment; it
12168 can be @c null for removable devices.</desc>
12169 </attribute>
12170
12171 <attribute name="controller" type="wstring" readonly="yes">
12172 <desc>Name of the storage controller of this attachment; this
12173 refers to one of the controllers in <link to="IMachine::storageControllers" />
12174 by name.</desc>
12175 </attribute>
12176
12177 <attribute name="port" type="long" readonly="yes">
12178 <desc>Port number of this attachment.
12179 See <link to="IMachine::attachDevice" /> for the meaning of this value for the different controller types.
12180 </desc>
12181 </attribute>
12182
12183 <attribute name="device" type="long" readonly="yes">
12184 <desc>Device slot number of this attachment.
12185 See <link to="IMachine::attachDevice" /> for the meaning of this value for the different controller types.
12186 </desc>
12187 </attribute>
12188
12189 <attribute name="type" type="DeviceType" readonly="yes">
12190 <desc>Device type of this attachment.</desc>
12191 </attribute>
12192
12193 <attribute name="passthrough" type="boolean" readonly="yes">
12194 <desc>Pass I/O requests through to a device on the host.</desc>
12195 </attribute>
12196
12197 <attribute name="temporaryEject" type="boolean" readonly="yes">
12198 <desc>Whether guest-triggered eject results in unmounting the medium.</desc>
12199 </attribute>
12200
12201 <attribute name="isEjected" type="boolean" readonly="yes">
12202 <desc>Signals that the removable medium has been ejected. This is not
12203 necessarily equivalent to having a @c null medium association.</desc>
12204 </attribute>
12205
12206 <attribute name="nonRotational" type="boolean" readonly="yes">
12207 <desc>Whether the associated medium is non-rotational.</desc>
12208 </attribute>
12209
12210 <attribute name="discard" type="boolean" readonly="yes">
12211 <desc>Whether the associated medium supports discarding unused blocks.</desc>
12212 </attribute>
12213
12214 <attribute name="bandwidthGroup" type="IBandwidthGroup" readonly="yes">
12215 <desc>The bandwidth group this medium attachment is assigned to.</desc>
12216 </attribute>
12217
12218 </interface>
12219
12220 <interface
12221 name="IMedium" extends="$unknown"
12222 uuid="53f9cc0c-e0fd-40a5-a404-a7a5272082cd"
12223 wsmap="managed"
12224 >
12225 <desc>
12226 The IMedium interface represents virtual storage for a machine's
12227 hard disks, CD/DVD or floppy drives. It will typically represent
12228 a disk image on the host, for example a VDI or VMDK file representing
12229 a virtual hard disk, or an ISO or RAW file representing virtual
12230 removable media, but can also point to a network location (e.g.
12231 for iSCSI targets).
12232
12233 Instances of IMedium are connected to virtual machines by way of medium
12234 attachments, which link the storage medium to a particular device slot
12235 of a storage controller of the virtual machine.
12236 In the VirtualBox API, virtual storage is therefore always represented
12237 by the following chain of object links:
12238
12239 <ul>
12240 <li><link to="IMachine::storageControllers"/> contains an array of
12241 storage controllers (IDE, SATA, SCSI, SAS or a floppy controller;
12242 these are instances of <link to="IStorageController"/>).</li>
12243 <li><link to="IMachine::mediumAttachments"/> contains an array of
12244 medium attachments (instances of <link to="IMediumAttachment"/>
12245 created by <link to="IMachine::attachDevice" />),
12246 each containing a storage controller from the above array, a
12247 port/device specification, and an instance of IMedium representing
12248 the medium storage (image file).
12249
12250 For removable media, the storage medium is optional; a medium
12251 attachment with no medium represents a CD/DVD or floppy drive
12252 with no medium inserted. By contrast, hard disk attachments
12253 will always have an IMedium object attached.</li>
12254 <li>Each IMedium in turn points to a storage unit (such as a file
12255 on the host computer or a network resource) that holds actual
12256 data. This location is represented by the <link to="#location"/>
12257 attribute.</li>
12258 </ul>
12259
12260 Existing media are opened using <link to="IVirtualBox::openMedium"/>;
12261 new hard disk media can be created with the VirtualBox API using the
12262 <link to="IVirtualBox::createHardDisk"/> method. Differencing hard
12263 disks (see below) are usually implicitly created by VirtualBox as
12264 needed, but may also be created explicitly using <link to="#createDiffStorage"/>.
12265 VirtualBox cannot create CD/DVD or floppy images (ISO and RAW files); these
12266 should be created with external tools and then opened from within VirtualBox.
12267
12268 Only for CD/DVDs and floppies, an IMedium instance can also represent a host
12269 drive. In that case the <link to="#id" /> attribute contains the UUID of
12270 one of the drives in <link to="IHost::DVDDrives" /> or <link to="IHost::floppyDrives" />.
12271
12272 <h3>Media registries</h3>
12273
12274 When a medium has been opened or created using one of the aforementioned
12275 APIs, it becomes "known" to VirtualBox. Known media can be attached
12276 to virtual machines and re-found through <link to="IVirtualBox::openMedium"/>.
12277 They also appear in the global
12278 <link to="IVirtualBox::hardDisks" />,
12279 <link to="IVirtualBox::DVDImages" /> and
12280 <link to="IVirtualBox::floppyImages" /> arrays.
12281
12282 Prior to VirtualBox 4.0, opening a medium added it to a global media registry
12283 in the VirtualBox.xml file, which was shared between all machines and made
12284 transporting machines and their media from one host to another difficult.
12285
12286 Starting with VirtualBox 4.0, media are only added to a registry when they are
12287 <i>attached</i> to a machine using <link to="IMachine::attachDevice" />. For
12288 backwards compatibility, which registry a medium is added to depends on which
12289 VirtualBox version created a machine:
12290
12291 <ul>
12292 <li>If the medium has first been attached to a machine which was created by
12293 VirtualBox 4.0 or later, it is added to that machine's media registry in
12294 the machine XML settings file. This way all information about a machine's
12295 media attachments is contained in a single file and can be transported
12296 easily.</li>
12297 <li>For older media attachments (i.e. if the medium was first attached to a
12298 machine which was created with a VirtualBox version before 4.0), media
12299 continue to be registered in the global VirtualBox settings file, for
12300 backwards compatibility.</li>
12301 </ul>
12302
12303 See <link to="IVirtualBox::openMedium" /> for more information.
12304
12305 Media are removed from media registries by the <link to="IMedium::close"/>,
12306 <link to="#deleteStorage"/> and <link to="#mergeTo"/> methods.
12307
12308 <h3>Accessibility checks</h3>
12309
12310 VirtualBox defers media accessibility checks until the <link to="#refreshState" />
12311 method is called explicitly on a medium. This is done to make the VirtualBox object
12312 ready for serving requests as fast as possible and let the end-user
12313 application decide if it needs to check media accessibility right away or not.
12314
12315 As a result, when VirtualBox starts up (e.g. the VirtualBox
12316 object gets created for the first time), all known media are in the
12317 "Inaccessible" state, but the value of the <link to="#lastAccessError"/>
12318 attribute is an empty string because no actual accessibility check has
12319 been made yet.
12320
12321 After calling <link to="#refreshState" />, a medium is considered
12322 <i>accessible</i> if its storage unit can be read. In that case, the
12323 <link to="#state"/> attribute has a value of "Created". If the storage
12324 unit cannot be read (for example, because it is located on a disconnected
12325 network resource, or was accidentally deleted outside VirtualBox),
12326 the medium is considered <i>inaccessible</i>, which is indicated by the
12327 "Inaccessible" state. The exact reason why the medium is inaccessible can be
12328 obtained by reading the <link to="#lastAccessError"/> attribute.
12329
12330 <h3>Medium types</h3>
12331
12332 There are five types of medium behavior which are stored in the
12333 <link to="#type"/> attribute (see <link to="MediumType" />) and
12334 which define the medium's behavior with attachments and snapshots.
12335
12336 All media can be also divided in two groups: <i>base</i> media and
12337 <i>differencing</i> media. A base medium contains all sectors of the
12338 medium data in its own storage and therefore can be used independently.
12339 In contrast, a differencing medium is a "delta" to some other medium and
12340 contains only those sectors which differ from that other medium, which is
12341 then called a <i>parent</i>. The differencing medium is said to be
12342 <i>linked to</i> that parent. The parent may be itself a differencing
12343 medium, thus forming a chain of linked media. The last element in that
12344 chain must always be a base medium. Note that several differencing
12345 media may be linked to the same parent medium.
12346
12347 Differencing media can be distinguished from base media by querying the
12348 <link to="#parent"/> attribute: base media do not have parents they would
12349 depend on, so the value of this attribute is always @c null for them.
12350 Using this attribute, it is possible to walk up the medium tree (from the
12351 child medium to its parent). It is also possible to walk down the tree
12352 using the <link to="#children"/> attribute.
12353
12354 Note that the type of all differencing media is "normal"; all other
12355 values are meaningless for them. Base media may be of any type.
12356
12357 <h3>Automatic composition of the file name part</h3>
12358
12359 Another extension to the <link to="IMedium::location"/> attribute is that
12360 there is a possibility to cause VirtualBox to compose a unique value for
12361 the file name part of the location using the UUID of the hard disk. This
12362 applies only to hard disks in <link to="MediumState_NotCreated"/> state,
12363 e.g. before the storage unit is created, and works as follows. You set the
12364 value of the <link to="IMedium::location"/> attribute to a location
12365 specification which only contains the path specification but not the file
12366 name part and ends with either a forward slash or a backslash character.
12367 In response, VirtualBox will generate a new UUID for the hard disk and
12368 compose the file name using the following pattern:
12369 <pre>
12370 &lt;path&gt;/{&lt;uuid&gt;}.&lt;ext&gt;
12371 </pre>
12372 where <tt>&lt;path&gt;</tt> is the supplied path specification,
12373 <tt>&lt;uuid&gt;</tt> is the newly generated UUID and <tt>&lt;ext&gt;</tt>
12374 is the default extension for the storage format of this hard disk. After
12375 that, you may call any of the methods that create a new hard disk storage
12376 unit and they will use the generated UUID and file name.
12377 </desc>
12378
12379 <attribute name="id" type="uuid" mod="string" readonly="yes">
12380 <desc>
12381 UUID of the medium. For a newly created medium, this value is a randomly
12382 generated UUID.
12383
12384 <note>
12385 For media in one of MediumState_NotCreated, MediumState_Creating or
12386 MediumState_Deleting states, the value of this property is undefined
12387 and will most likely be an empty UUID.
12388 </note>
12389 </desc>
12390 </attribute>
12391
12392 <attribute name="description" type="wstring">
12393 <desc>
12394 Optional description of the medium. For a newly created medium the value
12395 of this attribute is an empty string.
12396
12397 Medium types that don't support this attribute will return E_NOTIMPL in
12398 attempt to get or set this attribute's value.
12399
12400 <note>
12401 For some storage types, reading this attribute may return an outdated
12402 (last known) value when <link to="#state"/> is <link
12403 to="MediumState_Inaccessible"/> or <link
12404 to="MediumState_LockedWrite"/> because the value of this attribute is
12405 stored within the storage unit itself. Also note that changing the
12406 attribute value is not possible in such case, as well as when the
12407 medium is the <link to="MediumState_LockedRead"/> state.
12408 </note>
12409 </desc>
12410 </attribute>
12411
12412 <attribute name="state" type="MediumState" readonly="yes">
12413 <desc>
12414 Returns the current medium state, which is the last state set by
12415 the accessibility check performed by <link to="#refreshState"/>.
12416 If that method has not yet been called on the medium, the state
12417 is "Inaccessible"; as opposed to truly inaccessible media, the
12418 value of <link to="#lastAccessError"/> will be an empty string in
12419 that case.
12420
12421 <note>As of version 3.1, this no longer performs an accessibility check
12422 automatically; call <link to="#refreshState"/> for that.
12423 </note>
12424 </desc>
12425 </attribute>
12426
12427 <attribute name="variant" type="unsigned long" readonly="yes">
12428 <desc>
12429 Returns the storage format variant information for this medium
12430 as a combination of the flags described at <link to="MediumVariant" />.
12431 Before <link to="#refreshState"/> is called this method returns
12432 an undefined value.
12433 </desc>
12434 </attribute>
12435
12436 <attribute name="location" type="wstring">
12437 <desc>
12438 Location of the storage unit holding medium data.
12439
12440 The format of the location string is medium type specific. For medium
12441 types using regular files in a host's file system, the location
12442 string is the full file name.
12443
12444 Some medium types may support changing the storage unit location by
12445 simply changing the value of this property. If this operation is not
12446 supported, the implementation will return E_NOTIMPL in attempt to set
12447 this attribute's value.
12448
12449 When setting a value of the location attribute which is a regular file
12450 in the host's file system, the given file name may be either relative to
12451 the <link to="IVirtualBox::homeFolder">VirtualBox home folder</link> or
12452 absolute. Note that if the given location specification does not contain
12453 the file extension part then a proper default extension will be
12454 automatically appended by the implementation depending on the medium type.
12455 </desc>
12456 </attribute>
12457
12458 <attribute name="name" type="wstring" readonly="yes">
12459 <desc>
12460 Name of the storage unit holding medium data.
12461
12462 The returned string is a short version of the <link to="#location"/>
12463 attribute that is suitable for representing the medium in situations
12464 where the full location specification is too long (such as lists
12465 and comboboxes in GUI frontends). This string is also used by frontends
12466 to sort the media list alphabetically when needed.
12467
12468 For example, for locations that are regular files in the host's file
12469 system, the value of this attribute is just the file name (+ extension),
12470 without the path specification.
12471
12472 Note that as opposed to the <link to="#location"/> attribute, the name
12473 attribute will not necessary be unique for a list of media of the
12474 given type and format.
12475 </desc>
12476 </attribute>
12477
12478 <attribute name="deviceType" type="DeviceType" readonly="yes">
12479 <desc>Kind of device (DVD/Floppy/HardDisk) which is applicable to this
12480 medium.</desc>
12481 </attribute>
12482
12483 <attribute name="hostDrive" type="boolean" readonly="yes">
12484 <desc>True if this corresponds to a drive on the host.</desc>
12485 </attribute>
12486
12487 <attribute name="size" type="long long" readonly="yes">
12488 <desc>
12489 Physical size of the storage unit used to hold medium data (in bytes).
12490
12491 <note>
12492 For media whose <link to="#state"/> is <link
12493 to="MediumState_Inaccessible"/>, the value of this property is the
12494 last known size. For <link to="MediumState_NotCreated"/> media,
12495 the returned value is zero.
12496 </note>
12497 </desc>
12498 </attribute>
12499
12500 <attribute name="format" type="wstring" readonly="yes">
12501 <desc>
12502 Storage format of this medium.
12503
12504 The value of this attribute is a string that specifies a backend used
12505 to store medium data. The storage format is defined when you create a
12506 new medium or automatically detected when you open an existing medium,
12507 and cannot be changed later.
12508
12509 The list of all storage formats supported by this VirtualBox
12510 installation can be obtained using
12511 <link to="ISystemProperties::mediumFormats"/>.
12512 </desc>
12513 </attribute>
12514
12515 <attribute name="mediumFormat" type="IMediumFormat" readonly="yes">
12516 <desc>
12517 Storage medium format object corresponding to this medium.
12518
12519 The value of this attribute is a reference to the medium format object
12520 that specifies the backend properties used to store medium data. The
12521 storage format is defined when you create a new medium or automatically
12522 detected when you open an existing medium, and cannot be changed later.
12523
12524 <note>@c null is returned if there is no associated medium format
12525 object. This can e.g. happen for medium objects representing host
12526 drives and other special medium objects.</note>
12527 </desc>
12528 </attribute>
12529
12530 <attribute name="type" type="MediumType">
12531 <desc>
12532 Type (role) of this medium.
12533
12534 The following constraints apply when changing the value of this
12535 attribute:
12536 <ul>
12537 <li>If a medium is attached to a virtual machine (either in the
12538 current state or in one of the snapshots), its type cannot be
12539 changed.
12540 </li>
12541 <li>As long as the medium has children, its type cannot be set
12542 to <link to="MediumType_Writethrough"/>.
12543 </li>
12544 <li>The type of all differencing media is
12545 <link to="MediumType_Normal"/> and cannot be changed.
12546 </li>
12547 </ul>
12548
12549 The type of a newly created or opened medium is set to
12550 <link to="MediumType_Normal"/>, except for DVD and floppy media,
12551 which have a type of <link to="MediumType_Writethrough"/>.
12552 </desc>
12553 </attribute>
12554
12555 <attribute name="allowedTypes" type="MediumType" safearray="yes" readonly="yes">
12556 <desc>
12557 Returns which medium types can selected for this medium.
12558
12559 <result name="E_NOTIMPL">
12560 This attribute is not implemented at the moment.
12561 </result>
12562 </desc>
12563 </attribute>
12564
12565 <attribute name="parent" type="IMedium" readonly="yes">
12566 <desc>
12567 Parent of this medium (the medium this medium is directly based
12568 on).
12569
12570 Only differencing media have parents. For base (non-differencing)
12571 media, @c null is returned.
12572 </desc>
12573 </attribute>
12574
12575 <attribute name="children" type="IMedium" safearray="yes" readonly="yes">
12576 <desc>
12577 Children of this medium (all differencing media directly based
12578 on this medium). A @c null array is returned if this medium
12579 does not have any children.
12580 </desc>
12581 </attribute>
12582
12583 <attribute name="base" type="IMedium" readonly="yes">
12584 <desc>
12585 Base medium of this medium.
12586
12587 If this is a differencing medium, its base medium is the medium
12588 the given medium branch starts from. For all other types of media, this
12589 property returns the medium object itself (i.e. the same object this
12590 property is read on).
12591 </desc>
12592 </attribute>
12593
12594 <attribute name="readOnly" type="boolean" readonly="yes">
12595 <desc>
12596 Returns @c true if this medium is read-only and @c false otherwise.
12597
12598 A medium is considered to be read-only when its contents cannot be
12599 modified without breaking the integrity of other parties that depend on
12600 this medium such as its child media or snapshots of virtual machines
12601 where this medium is attached to these machines. If there are no
12602 children and no such snapshots then there is no dependency and the
12603 medium is not read-only.
12604
12605 The value of this attribute can be used to determine the kind of the
12606 attachment that will take place when attaching this medium to a
12607 virtual machine. If the value is @c false then the medium will
12608 be attached directly. If the value is @c true then the medium
12609 will be attached indirectly by creating a new differencing child
12610 medium for that. See the interface description for more information.
12611
12612 Note that all <link to="MediumType_Immutable">Immutable</link> media
12613 are always read-only while all
12614 <link to="MediumType_Writethrough">Writethrough</link> media are
12615 always not.
12616
12617 <note>
12618 The read-only condition represented by this attribute is related to
12619 the medium type and usage, not to the current
12620 <link to="IMedium::state">medium state</link> and not to the read-only
12621 state of the storage unit.
12622 </note>
12623 </desc>
12624 </attribute>
12625
12626 <attribute name="logicalSize" type="long long" readonly="yes">
12627 <desc>
12628 Logical size of this medium (in bytes), as reported to the
12629 guest OS running inside the virtual machine this medium is
12630 attached to. The logical size is defined when the medium is created
12631 and cannot be changed later.
12632
12633 <note>
12634 Reading this property on a differencing medium will return the size
12635 of its <link to="#base"/> medium.
12636 </note>
12637 <note>
12638 For media whose state is <link to="#state"/> is <link
12639 to="MediumState_Inaccessible"/>, the value of this property is the
12640 last known logical size. For <link to="MediumState_NotCreated"/>
12641 media, the returned value is zero.
12642 </note>
12643 </desc>
12644 </attribute>
12645
12646 <attribute name="autoReset" type="boolean">
12647 <desc>
12648 Whether this differencing medium will be automatically reset each
12649 time a virtual machine it is attached to is powered up. This
12650 attribute is automatically set to @c true for the last
12651 differencing image of an "immutable" medium (see
12652 <link to="MediumType" />).
12653
12654 See <link to="#reset"/> for more information about resetting
12655 differencing media.
12656
12657 <note>
12658 Reading this property on a base (non-differencing) medium will
12659 always @c false. Changing the value of this property in this
12660 case is not supported.
12661 </note>
12662
12663 <result name="VBOX_E_NOT_SUPPORTED">
12664 This is not a differencing medium (when changing the attribute
12665 value).
12666 </result>
12667 </desc>
12668 </attribute>
12669
12670 <attribute name="lastAccessError" type="wstring" readonly="yes">
12671 <desc>
12672 Text message that represents the result of the last accessibility
12673 check performed by <link to="#refreshState"/>.
12674
12675 An empty string is returned if the last accessibility check
12676 was successful or has not yet been called. As a result, if
12677 <link to="#state" /> is "Inaccessible" and this attribute is empty,
12678 then <link to="#refreshState"/> has yet to be called; this is the
12679 default value of media after VirtualBox initialization.
12680 A non-empty string indicates a failure and should normally describe
12681 a reason of the failure (for example, a file read error).
12682 </desc>
12683 </attribute>
12684
12685 <attribute name="machineIds" type="uuid" mod="string" safearray="yes" readonly="yes">
12686 <desc>
12687 Array of UUIDs of all machines this medium is attached to.
12688
12689 A @c null array is returned if this medium is not attached to any
12690 machine or to any machine's snapshot.
12691
12692 <note>
12693 The returned array will include a machine even if this medium is not
12694 attached to that machine in the current state but attached to it in
12695 one of the machine's snapshots. See <link to="#getSnapshotIds"/> for
12696 details.
12697 </note>
12698 </desc>
12699 </attribute>
12700
12701 <method name="setIDs">
12702 <desc>
12703 Changes the UUID and parent UUID for a hard disk medium.
12704 </desc>
12705 <param name="setImageId" type="boolean" dir="in">
12706 <desc>
12707 Select whether a new image UUID is set or not.
12708 </desc>
12709 </param>
12710 <param name="imageId" type="uuid" mod="string" dir="in">
12711 <desc>
12712 New UUID for the image. If an empty string is passed, then a new
12713 UUID is automatically created, provided that @a setImageId is @c true.
12714 Specifying a zero UUID is not allowed.
12715 </desc>
12716 </param>
12717 <param name="setParentId" type="boolean" dir="in">
12718 <desc>
12719 Select whether a new parent UUID is set or not.
12720 </desc>
12721 </param>
12722 <param name="parentId" type="uuid" mod="string" dir="in">
12723 <desc>
12724 New parent UUID for the image. If an empty string is passed, then a
12725 new UUID is automatically created, provided @a setParentId is
12726 @c true. A zero UUID is valid.
12727 </desc>
12728 </param>
12729 <result name="E_INVALIDARG">
12730 Invalid parameter combination.
12731 </result>
12732 <result name="VBOX_E_NOT_SUPPORTED">
12733 Medium is not a hard disk medium.
12734 </result>
12735 </method>
12736
12737 <method name="refreshState">
12738 <desc>
12739 If the current medium state (see <link to="MediumState"/>) is one of
12740 "Created", "Inaccessible" or "LockedRead", then this performs an
12741 accessibility check on the medium and sets the value of the <link to="#state"/>
12742 attribute accordingly; that value is also returned for convenience.
12743
12744 For all other state values, this does not perform a refresh but returns
12745 the state only.
12746
12747 The refresh, if performed, may take a long time (several seconds or even
12748 minutes, depending on the storage unit location and format) because it performs an
12749 accessibility check of the storage unit. This check may cause a significant
12750 delay if the storage unit of the given medium is, for example, a file located
12751 on a network share which is not currently accessible due to connectivity
12752 problems. In that case, the call will not return until a timeout
12753 interval defined by the host OS for this operation expires. For this reason,
12754 it is recommended to never read this attribute on the main UI thread to avoid
12755 making the UI unresponsive.
12756
12757 If the last known state of the medium is "Created" and the accessibility
12758 check fails, then the state would be set to "Inaccessible", and
12759 <link to="#lastAccessError"/> may be used to get more details about the
12760 failure. If the state of the medium is "LockedRead", then it remains the
12761 same, and a non-empty value of <link to="#lastAccessError"/> will
12762 indicate a failed accessibility check in this case.
12763
12764 Note that not all medium states are applicable to all medium types.
12765 </desc>
12766 <param name="state" type="MediumState" dir="return">
12767 <desc>
12768 New medium state.
12769 </desc>
12770 </param>
12771 </method>
12772
12773 <method name="getSnapshotIds">
12774 <desc>
12775 Returns an array of UUIDs of all snapshots of the given machine where
12776 this medium is attached to.
12777
12778 If the medium is attached to the machine in the current state, then the
12779 first element in the array will always be the ID of the queried machine
12780 (i.e. the value equal to the @c machineId argument), followed by
12781 snapshot IDs (if any).
12782
12783 If the medium is not attached to the machine in the current state, then
12784 the array will contain only snapshot IDs.
12785
12786 The returned array may be @c null if this medium is not attached
12787 to the given machine at all, neither in the current state nor in one of
12788 the snapshots.
12789 </desc>
12790 <param name="machineId" type="uuid" mod="string" dir="in">
12791 <desc>
12792 UUID of the machine to query.
12793 </desc>
12794 </param>
12795 <param name="snapshotIds" type="uuid" mod="string" safearray="yes" dir="return">
12796 <desc>
12797 Array of snapshot UUIDs of the given machine using this medium.
12798 </desc>
12799 </param>
12800 </method>
12801
12802 <method name="lockRead">
12803 <desc>
12804 Locks this medium for reading.
12805
12806 A read lock is shared: many clients can simultaneously lock the
12807 same medium for reading unless it is already locked for writing (see
12808 <link to="#lockWrite"/>) in which case an error is returned.
12809
12810 When the medium is locked for reading, it cannot be modified
12811 from within VirtualBox. This means that any method that changes
12812 the properties of this medium or contents of the storage unit
12813 will return an error (unless explicitly stated otherwise). That
12814 includes an attempt to start a virtual machine that wants to
12815 write to the the medium.
12816
12817 When the virtual machine is started up, it locks for reading all
12818 media it uses in read-only mode. If some medium cannot be locked
12819 for reading, the startup procedure will fail.
12820 A medium is typically locked for reading while it is used by a running
12821 virtual machine but has a depending differencing image that receives
12822 the actual write operations. This way one base medium can have
12823 multiple child differencing images which can be written to
12824 simultaneously. Read-only media such as DVD and floppy images are
12825 also locked for reading only (so they can be in use by multiple
12826 machines simultaneously).
12827
12828 A medium is also locked for reading when it is the source of a
12829 write operation such as <link to="#cloneTo"/> or <link to="#mergeTo"/>.
12830
12831 The medium locked for reading must be unlocked using the <link
12832 to="#unlockRead"/> method. Calls to <link to="#lockRead"/>
12833 can be nested and must be followed by the same number of paired
12834 <link to="#unlockRead"/> calls.
12835
12836 This method sets the medium state (see <link to="#state"/>) to
12837 "LockedRead" on success. The medium's previous state must be
12838 one of "Created", "Inaccessible" or "LockedRead".
12839
12840 Locking an inaccessible medium is not an error; this method performs
12841 a logical lock that prevents modifications of this medium through
12842 the VirtualBox API, not a physical file-system lock of the underlying
12843 storage unit.
12844
12845 This method returns the current state of the medium
12846 <i>before</i> the operation.
12847
12848 <result name="VBOX_E_INVALID_OBJECT_STATE">
12849 Invalid medium state (e.g. not created, locked, inaccessible,
12850 creating, deleting).
12851 </result>
12852
12853 </desc>
12854 <param name="state" type="MediumState" dir="return">
12855 <desc>
12856 State of the medium after the operation.
12857 </desc>
12858 </param>
12859 </method>
12860
12861 <method name="unlockRead">
12862 <desc>
12863 Cancels the read lock previously set by <link to="#lockRead"/>.
12864
12865 For both success and failure, this method returns the current state
12866 of the medium <i>after</i> the operation.
12867
12868 See <link to="#lockRead"/> for more details.
12869
12870 <result name="VBOX_E_INVALID_OBJECT_STATE">
12871 Medium not locked for reading.
12872 </result>
12873
12874 </desc>
12875 <param name="state" type="MediumState" dir="return">
12876 <desc>
12877 State of the medium after the operation.
12878 </desc>
12879 </param>
12880 </method>
12881
12882 <method name="lockWrite">
12883 <desc>
12884 Locks this medium for writing.
12885
12886 A write lock, as opposed to <link to="#lockRead"/>, is
12887 exclusive: there may be only one client holding a write lock,
12888 and there may be no read locks while the write lock is held.
12889 As a result, read-locking fails if a write lock is held, and
12890 write-locking fails if either a read or another write lock is held.
12891
12892 When a medium is locked for writing, it cannot be modified
12893 from within VirtualBox, and it is not guaranteed that the values
12894 of its properties are up-to-date. Any method that changes the
12895 properties of this medium or contents of the storage unit will
12896 return an error (unless explicitly stated otherwise).
12897
12898 When a virtual machine is started up, it locks for writing all
12899 media it uses to write data to. If any medium could not be locked
12900 for writing, the startup procedure will fail. If a medium has
12901 differencing images, then while the machine is running, only
12902 the last ("leaf") differencing image is locked for writing,
12903 whereas its parents are locked for reading only.
12904
12905 A medium is also locked for writing when it is the target of a
12906 write operation such as <link to="#cloneTo"/> or <link to="#mergeTo"/>.
12907
12908 The medium locked for writing must be unlocked using the <link
12909 to="#unlockWrite"/> method. Write locks <i>cannot</i> be nested.
12910
12911 This method sets the medium state (see <link to="#state"/>) to
12912 "LockedWrite" on success. The medium's previous state must be
12913 either "Created" or "Inaccessible".
12914
12915 Locking an inaccessible medium is not an error; this method performs
12916 a logical lock that prevents modifications of this medium through
12917 the VirtualBox API, not a physical file-system lock of the underlying
12918 storage unit.
12919
12920 For both, success and failure, this method returns the current
12921 state of the medium <i>before</i> the operation.
12922
12923 <result name="VBOX_E_INVALID_OBJECT_STATE">
12924 Invalid medium state (e.g. not created, locked, inaccessible,
12925 creating, deleting).
12926 </result>
12927
12928 </desc>
12929 <param name="state" type="MediumState" dir="return">
12930 <desc>
12931 State of the medium after the operation.
12932 </desc>
12933 </param>
12934 </method>
12935
12936 <method name="unlockWrite">
12937 <desc>
12938 Cancels the write lock previously set by <link to="#lockWrite"/>.
12939
12940 For both success and failure, this method returns the current
12941 state of the medium <i>after</i> the operation.
12942
12943 See <link to="#lockWrite"/> for more details.
12944
12945 <result name="VBOX_E_INVALID_OBJECT_STATE">
12946 Medium not locked for writing.
12947 </result>
12948
12949 </desc>
12950 <param name="state" type="MediumState" dir="return">
12951 <desc>
12952 State of the medium after the operation.
12953 </desc>
12954 </param>
12955 </method>
12956
12957 <method name="close">
12958 <desc>
12959 Closes this medium.
12960
12961 The medium must not be attached to any known virtual machine
12962 and must not have any known child media, otherwise the
12963 operation will fail.
12964
12965 When the medium is successfully closed, it is removed from
12966 the list of registered media, but its storage unit is not
12967 deleted. In particular, this means that this medium can
12968 later be opened again using the <link to="IVirtualBox::openMedium"/>
12969 call.
12970
12971 Note that after this method successfully returns, the given medium
12972 object becomes uninitialized. This means that any attempt
12973 to call any of its methods or attributes will fail with the
12974 <tt>"Object not ready" (E_ACCESSDENIED)</tt> error.
12975
12976 <result name="VBOX_E_INVALID_OBJECT_STATE">
12977 Invalid medium state (other than not created, created or
12978 inaccessible).
12979 </result>
12980 <result name="VBOX_E_OBJECT_IN_USE">
12981 Medium attached to virtual machine.
12982 </result>
12983 <result name="VBOX_E_FILE_ERROR">
12984 Settings file not accessible.
12985 </result>
12986 <result name="VBOX_E_XML_ERROR">
12987 Could not parse the settings file.
12988 </result>
12989
12990 </desc>
12991 </method>
12992
12993 <!-- property methods -->
12994
12995 <method name="getProperty" const="yes">
12996 <desc>
12997 Returns the value of the custom medium property with the given name.
12998
12999 The list of all properties supported by the given medium format can
13000 be obtained with <link to="IMediumFormat::describeProperties"/>.
13001
13002 <note>If this method returns an empty string in @a value, the requested
13003 property is supported but currently not assigned any value.</note>
13004
13005 <result name="VBOX_E_OBJECT_NOT_FOUND">
13006 Requested property does not exist (not supported by the format).
13007 </result>
13008 <result name="E_INVALIDARG">@a name is @c null or empty.</result>
13009 </desc>
13010 <param name="name" type="wstring" dir="in">
13011 <desc>Name of the property to get.</desc>
13012 </param>
13013 <param name="value" type="wstring" dir="return">
13014 <desc>Current property value.</desc>
13015 </param>
13016 </method>
13017
13018 <method name="setProperty">
13019 <desc>
13020 Sets the value of the custom medium property with the given name.
13021
13022 The list of all properties supported by the given medium format can
13023 be obtained with <link to="IMediumFormat::describeProperties"/>.
13024
13025 <note>Setting the property value to @c null or an empty string is
13026 equivalent to deleting the existing value. A default value (if it is
13027 defined for this property) will be used by the format backend in this
13028 case.</note>
13029
13030 <result name="VBOX_E_OBJECT_NOT_FOUND">
13031 Requested property does not exist (not supported by the format).
13032 </result>
13033 <result name="E_INVALIDARG">@a name is @c null or empty.</result>
13034 </desc>
13035 <param name="name" type="wstring" dir="in">
13036 <desc>Name of the property to set.</desc>
13037 </param>
13038 <param name="value" type="wstring" dir="in">
13039 <desc>Property value to set.</desc>
13040 </param>
13041 </method>
13042
13043 <method name="getProperties" const="yes">
13044 <desc>
13045 Returns values for a group of properties in one call.
13046
13047 The names of the properties to get are specified using the @a names
13048 argument which is a list of comma-separated property names or
13049 an empty string if all properties are to be returned.
13050 <note>Currently the value of this argument is ignored and the method
13051 always returns all existing properties.</note>
13052
13053 The list of all properties supported by the given medium format can
13054 be obtained with <link to="IMediumFormat::describeProperties"/>.
13055
13056 The method returns two arrays, the array of property names corresponding
13057 to the @a names argument and the current values of these properties.
13058 Both arrays have the same number of elements with each element at the
13059 given index in the first array corresponds to an element at the same
13060 index in the second array.
13061
13062 For properties that do not have assigned values, an empty string is
13063 returned at the appropriate index in the @a returnValues array.
13064
13065 </desc>
13066 <param name="names" type="wstring" dir="in">
13067 <desc>
13068 Names of properties to get.
13069 </desc>
13070 </param>
13071 <param name="returnNames" type="wstring" safearray="yes" dir="out">
13072 <desc>Names of returned properties.</desc>
13073 </param>
13074 <param name="returnValues" type="wstring" safearray="yes" dir="return">
13075 <desc>Values of returned properties.</desc>
13076 </param>
13077 </method>
13078
13079 <method name="setProperties">
13080 <desc>
13081 Sets values for a group of properties in one call.
13082
13083 The names of the properties to set are passed in the @a names
13084 array along with the new values for them in the @a values array. Both
13085 arrays have the same number of elements with each element at the given
13086 index in the first array corresponding to an element at the same index
13087 in the second array.
13088
13089 If there is at least one property name in @a names that is not valid,
13090 the method will fail before changing the values of any other properties
13091 from the @a names array.
13092
13093 Using this method over <link to="#setProperty"/> is preferred if you
13094 need to set several properties at once since it is more efficient.
13095
13096 The list of all properties supported by the given medium format can
13097 be obtained with <link to="IMediumFormat::describeProperties"/>.
13098
13099 Setting the property value to @c null or an empty string is equivalent
13100 to deleting the existing value. A default value (if it is defined for
13101 this property) will be used by the format backend in this case.
13102 </desc>
13103 <param name="names" type="wstring" safearray="yes" dir="in">
13104 <desc>Names of properties to set.</desc>
13105 </param>
13106 <param name="values" type="wstring" safearray="yes" dir="in">
13107 <desc>Values of properties to set.</desc>
13108 </param>
13109 </method>
13110
13111 <!-- storage methods -->
13112
13113 <method name="createBaseStorage">
13114 <desc>
13115 Starts creating a hard disk storage unit (fixed/dynamic, according
13116 to the variant flags) in in the background. The previous storage unit
13117 created for this object, if any, must first be deleted using
13118 <link to="#deleteStorage"/>, otherwise the operation will fail.
13119
13120 Before the operation starts, the medium is placed in
13121 <link to="MediumState_Creating"/> state. If the create operation
13122 fails, the medium will be placed back in <link to="MediumState_NotCreated"/>
13123 state.
13124
13125 After the returned progress object reports that the operation has
13126 successfully completed, the medium state will be set to <link
13127 to="MediumState_Created"/>, the medium will be remembered by this
13128 VirtualBox installation and may be attached to virtual machines.
13129
13130 <result name="VBOX_E_NOT_SUPPORTED">
13131 The variant of storage creation operation is not supported. See <link
13132 to="IMediumFormat::capabilities"/>.
13133 </result>
13134 </desc>
13135 <param name="logicalSize" type="long long" dir="in">
13136 <desc>Maximum logical size of the medium in bytes.</desc>
13137 </param>
13138 <param name="variant" type="unsigned long" dir="in">
13139 <desc>Exact image variant which should be created (as a combination of
13140 <link to="MediumVariant" /> flags).</desc>
13141 </param>
13142 <param name="progress" type="IProgress" dir="return">
13143 <desc>Progress object to track the operation completion.</desc>
13144 </param>
13145 </method>
13146
13147 <method name="deleteStorage">
13148 <desc>
13149 Starts deleting the storage unit of this medium.
13150
13151 The medium must not be attached to any known virtual machine and must
13152 not have any known child media, otherwise the operation will fail.
13153 It will also fail if there is no storage unit to delete or if deletion
13154 is already in progress, or if the medium is being in use (locked for
13155 read or for write) or inaccessible. Therefore, the only valid state for
13156 this operation to succeed is <link to="MediumState_Created"/>.
13157
13158 Before the operation starts, the medium is placed in
13159 <link to="MediumState_Deleting"/> state and gets removed from the list
13160 of remembered hard disks (media registry). If the delete operation
13161 fails, the medium will be remembered again and placed back to
13162 <link to="MediumState_Created"/> state.
13163
13164 After the returned progress object reports that the operation is
13165 complete, the medium state will be set to
13166 <link to="MediumState_NotCreated"/> and you will be able to use one of
13167 the storage creation methods to create it again.
13168
13169 <see><link to="#close"/></see>
13170
13171 <result name="VBOX_E_OBJECT_IN_USE">
13172 Medium is attached to a virtual machine.
13173 </result>
13174 <result name="VBOX_E_NOT_SUPPORTED">
13175 Storage deletion is not allowed because neither of storage creation
13176 operations are supported. See
13177 <link to="IMediumFormat::capabilities"/>.
13178 </result>
13179
13180 <note>
13181 If the deletion operation fails, it is not guaranteed that the storage
13182 unit still exists. You may check the <link to="IMedium::state"/> value
13183 to answer this question.
13184 </note>
13185 </desc>
13186 <param name="progress" type="IProgress" dir="return">
13187 <desc>Progress object to track the operation completion.</desc>
13188 </param>
13189 </method>
13190
13191 <!-- diff methods -->
13192
13193 <method name="createDiffStorage">
13194 <desc>
13195 Starts creating an empty differencing storage unit based on this
13196 medium in the format and at the location defined by the @a target
13197 argument.
13198
13199 The target medium must be in <link to="MediumState_NotCreated"/>
13200 state (i.e. must not have an existing storage unit). Upon successful
13201 completion, this operation will set the type of the target medium to
13202 <link to="MediumType_Normal"/> and create a storage unit necessary to
13203 represent the differencing medium data in the given format (according
13204 to the storage format of the target object).
13205
13206 After the returned progress object reports that the operation is
13207 successfully complete, the target medium gets remembered by this
13208 VirtualBox installation and may be attached to virtual machines.
13209
13210 <note>
13211 The medium will be set to <link to="MediumState_LockedRead"/>
13212 state for the duration of this operation.
13213 </note>
13214 <result name="VBOX_E_OBJECT_IN_USE">
13215 Medium not in @c NotCreated state.
13216 </result>
13217 </desc>
13218 <param name="target" type="IMedium" dir="in">
13219 <desc>Target medium.</desc>
13220 </param>
13221 <param name="variant" type="unsigned long" dir="in">
13222 <desc>Exact image variant which should be created (as a combination of
13223 <link to="MediumVariant" /> flags).</desc>
13224 </param>
13225 <param name="progress" type="IProgress" dir="return">
13226 <desc>Progress object to track the operation completion.</desc>
13227 </param>
13228 </method>
13229
13230 <method name="mergeTo">
13231 <desc>
13232 Starts merging the contents of this medium and all intermediate
13233 differencing media in the chain to the given target medium.
13234
13235 The target medium must be either a descendant of this medium or
13236 its ancestor (otherwise this method will immediately return a failure).
13237 It follows that there are two logical directions of the merge operation:
13238 from ancestor to descendant (<i>forward merge</i>) and from descendant to
13239 ancestor (<i>backward merge</i>). Let us consider the following medium
13240 chain:
13241
13242 <pre>Base &lt;- Diff_1 &lt;- Diff_2</pre>
13243
13244 Here, calling this method on the <tt>Base</tt> medium object with
13245 <tt>Diff_2</tt> as an argument will be a forward merge; calling it on
13246 <tt>Diff_2</tt> with <tt>Base</tt> as an argument will be a backward
13247 merge. Note that in both cases the contents of the resulting medium
13248 will be the same, the only difference is the medium object that takes
13249 the result of the merge operation. In case of the forward merge in the
13250 above example, the result will be written to <tt>Diff_2</tt>; in case of
13251 the backward merge, the result will be written to <tt>Base</tt>. In
13252 other words, the result of the operation is always stored in the target
13253 medium.
13254
13255 Upon successful operation completion, the storage units of all media in
13256 the chain between this (source) medium and the target medium, including
13257 the source medium itself, will be automatically deleted and the
13258 relevant medium objects (including this medium) will become
13259 uninitialized. This means that any attempt to call any of
13260 their methods or attributes will fail with the
13261 <tt>"Object not ready" (E_ACCESSDENIED)</tt> error. Applied to the above
13262 example, the forward merge of <tt>Base</tt> to <tt>Diff_2</tt> will
13263 delete and uninitialize both <tt>Base</tt> and <tt>Diff_1</tt> media.
13264 Note that <tt>Diff_2</tt> in this case will become a base medium
13265 itself since it will no longer be based on any other medium.
13266
13267 Considering the above, all of the following conditions must be met in
13268 order for the merge operation to succeed:
13269 <ul>
13270 <li>
13271 Neither this (source) medium nor any intermediate
13272 differencing medium in the chain between it and the target
13273 medium is attached to any virtual machine.
13274 </li>
13275 <li>
13276 Neither the source medium nor the target medium is an
13277 <link to="MediumType_Immutable"/> medium.
13278 </li>
13279 <li>
13280 The part of the medium tree from the source medium to the
13281 target medium is a linear chain, i.e. all medium in this
13282 chain have exactly one child which is the next medium in this
13283 chain. The only exception from this rule is the target medium in
13284 the forward merge operation; it is allowed to have any number of
13285 child media because the merge operation will not change its
13286 logical contents (as it is seen by the guest OS or by children).
13287 </li>
13288 <li>
13289 None of the involved media are in
13290 <link to="MediumState_LockedRead"/> or
13291 <link to="MediumState_LockedWrite"/> state.
13292 </li>
13293 </ul>
13294
13295 <note>
13296 This (source) medium and all intermediates will be placed to <link
13297 to="MediumState_Deleting"/> state and the target medium will be
13298 placed to <link to="MediumState_LockedWrite"/> state and for the
13299 duration of this operation.
13300 </note>
13301 </desc>
13302 <param name="target" type="IMedium" dir="in">
13303 <desc>Target medium.</desc>
13304 </param>
13305 <param name="progress" type="IProgress" dir="return">
13306 <desc>Progress object to track the operation completion.</desc>
13307 </param>
13308 </method>
13309
13310 <!-- clone method -->
13311
13312 <method name="cloneTo">
13313 <desc>
13314 Starts creating a clone of this medium in the format and at the
13315 location defined by the @a target argument.
13316
13317 The target medium must be either in <link to="MediumState_NotCreated"/>
13318 state (i.e. must not have an existing storage unit) or in
13319 <link to="MediumState_Created"/> state (i.e. created and not locked, and
13320 big enough to hold the data or else the copy will be partial). Upon
13321 successful completion, the cloned medium will contain exactly the
13322 same sector data as the medium being cloned, except that in the
13323 first case a new UUID for the clone will be randomly generated, and in
13324 the second case the UUID will remain unchanged.
13325
13326 The @a parent argument defines which medium will be the parent
13327 of the clone. Passing a @c null reference indicates that the clone will
13328 be a base image, i.e. completely independent. It is possible to specify
13329 an arbitrary medium for this parameter, including the parent of the
13330 medium which is being cloned. Even cloning to a child of the source
13331 medium is possible. Note that when cloning to an existing image, the
13332 @a parent argument is ignored.
13333
13334 After the returned progress object reports that the operation is
13335 successfully complete, the target medium gets remembered by this
13336 VirtualBox installation and may be attached to virtual machines.
13337
13338 <note>
13339 This medium will be placed to <link to="MediumState_LockedRead"/>
13340 state for the duration of this operation.
13341 </note>
13342 <result name="E_NOTIMPL">
13343 The specified cloning variant is not supported at the moment.
13344 </result>
13345 </desc>
13346 <param name="target" type="IMedium" dir="in">
13347 <desc>Target medium.</desc>
13348 </param>
13349 <param name="variant" type="unsigned long" dir="in">
13350 <desc>Exact image variant which should be created (as a combination of
13351 <link to="MediumVariant" /> flags).</desc>
13352 </param>
13353 <param name="parent" type="IMedium" dir="in">
13354 <desc>Parent of the cloned medium.</desc>
13355 </param>
13356 <param name="progress" type="IProgress" dir="return">
13357 <desc>Progress object to track the operation completion.</desc>
13358 </param>
13359 </method>
13360
13361 <!-- other methods -->
13362
13363 <method name="compact">
13364 <desc>
13365 Starts compacting of this medium. This means that the medium is
13366 transformed into a possibly more compact storage representation.
13367 This potentially creates temporary images, which can require a
13368 substantial amount of additional disk space.
13369
13370 This medium will be placed to <link to="MediumState_LockedWrite"/>
13371 state and all its parent media (if any) will be placed to
13372 <link to="MediumState_LockedRead"/> state for the duration of this
13373 operation.
13374
13375 Please note that the results can be either returned straight away,
13376 or later as the result of the background operation via the object
13377 returned via the @a progress parameter.
13378
13379 <result name="VBOX_E_NOT_SUPPORTED">
13380 Medium format does not support compacting (but potentially
13381 needs it).
13382 </result>
13383 </desc>
13384 <param name="progress" type="IProgress" dir="return">
13385 <desc>Progress object to track the operation completion.</desc>
13386 </param>
13387 </method>
13388
13389 <method name="resize">
13390 <desc>
13391 Starts resizing this medium. This means that the nominal size of the
13392 medium is set to the new value. Both increasing and decreasing the
13393 size is possible, and there are no safety checks, since VirtualBox
13394 does not make any assumptions about the medium contents.
13395
13396 Resizing usually needs additional disk space, and possibly also
13397 some temporary disk space. Note that resize does not create a full
13398 temporary copy of the medium, so the additional disk space requirement
13399 is usually much lower than using the clone operation.
13400
13401 This medium will be placed to <link to="MediumState_LockedWrite"/>
13402 state for the duration of this operation.
13403
13404 Please note that the results can be either returned straight away,
13405 or later as the result of the background operation via the object
13406 returned via the @a progress parameter.
13407
13408 <result name="VBOX_E_NOT_SUPPORTED">
13409 Medium format does not support resizing.
13410 </result>
13411 </desc>
13412 <param name="logicalSize" type="long long" dir="in">
13413 <desc>New nominal capacity of the medium in bytes.</desc>
13414 </param>
13415 <param name="progress" type="IProgress" dir="return">
13416 <desc>Progress object to track the operation completion.</desc>
13417 </param>
13418 </method>
13419
13420 <method name="reset">
13421 <desc>
13422 Starts erasing the contents of this differencing medium.
13423
13424 This operation will reset the differencing medium to its initial
13425 state when it does not contain any sector data and any read operation is
13426 redirected to its parent medium. This automatically gets called
13427 during VM power-up for every medium whose <link to="#autoReset" />
13428 attribute is @c true.
13429
13430 The medium will be write-locked for the duration of this operation (see
13431 <link to="#lockWrite" />).
13432
13433 <result name="VBOX_E_NOT_SUPPORTED">
13434 This is not a differencing medium.
13435 </result>
13436 <result name="VBOX_E_INVALID_OBJECT_STATE">
13437 Medium is not in <link to="MediumState_Created"/> or
13438 <link to="MediumState_Inaccessible"/> state.
13439 </result>
13440 </desc>
13441 <param name="progress" type="IProgress" dir="return">
13442 <desc>Progress object to track the operation completion.</desc>
13443 </param>
13444 </method>
13445
13446 </interface>
13447
13448
13449 <!--
13450 // IMediumFormat
13451 /////////////////////////////////////////////////////////////////////////
13452 -->
13453
13454 <enum
13455 name="DataType"
13456 uuid="d90ea51e-a3f1-4a01-beb1-c1723c0d3ba7"
13457 >
13458 <const name="Int32" value="0"/>
13459 <const name="Int8" value="1"/>
13460 <const name="String" value="2"/>
13461 </enum>
13462
13463 <enum
13464 name="DataFlags"
13465 uuid="86884dcf-1d6b-4f1b-b4bf-f5aa44959d60"
13466 >
13467 <const name="None" value="0x00"/>
13468 <const name="Mandatory" value="0x01"/>
13469 <const name="Expert" value="0x02"/>
13470 <const name="Array" value="0x04"/>
13471 <const name="FlagMask" value="0x07"/>
13472 </enum>
13473
13474 <enum
13475 name="MediumFormatCapabilities"
13476 uuid="7342ba79-7ce0-4d94-8f86-5ed5a185d9bd"
13477 >
13478 <desc>
13479 Medium format capability flags.
13480 </desc>
13481
13482 <const name="Uuid" value="0x01">
13483 <desc>
13484 Supports UUIDs as expected by VirtualBox code.
13485 </desc>
13486 </const>
13487
13488 <const name="CreateFixed" value="0x02">
13489 <desc>
13490 Supports creating fixed size images, allocating all space instantly.
13491 </desc>
13492 </const>
13493
13494 <const name="CreateDynamic" value="0x04">
13495 <desc>
13496 Supports creating dynamically growing images, allocating space on
13497 demand.
13498 </desc>
13499 </const>
13500
13501 <const name="CreateSplit2G" value="0x08">
13502 <desc>
13503 Supports creating images split in chunks of a bit less than 2 GBytes.
13504 </desc>
13505 </const>
13506
13507 <const name="Differencing" value="0x10">
13508 <desc>
13509 Supports being used as a format for differencing media (see <link
13510 to="IMedium::createDiffStorage"/>).
13511 </desc>
13512 </const>
13513
13514 <const name="Asynchronous" value="0x20">
13515 <desc>
13516 Supports asynchronous I/O operations for at least some configurations.
13517 </desc>
13518 </const>
13519
13520 <const name="File" value="0x40">
13521 <desc>
13522 The format backend operates on files (the <link to="IMedium::location"/>
13523 attribute of the medium specifies a file used to store medium
13524 data; for a list of supported file extensions see
13525 <link to="IMediumFormat::describeFileExtensions"/>).
13526 </desc>
13527 </const>
13528
13529 <const name="Properties" value="0x80">
13530 <desc>
13531 The format backend uses the property interface to configure the storage
13532 location and properties (the <link to="IMediumFormat::describeProperties"/>
13533 method is used to get access to properties supported by the given medium format).
13534 </desc>
13535 </const>
13536
13537 <const name="TcpNetworking" value="0x100">
13538 <desc>
13539 The format backend uses the TCP networking interface for network access.
13540 </desc>
13541 </const>
13542
13543 <const name="VFS" value="0x200">
13544 <desc>
13545 The format backend supports virtual filesystem functionality.
13546 </desc>
13547 </const>
13548
13549 <const name="CapabilityMask" value="0x3FF"/>
13550 </enum>
13551
13552 <interface
13553 name="IMediumFormat" extends="$unknown"
13554 uuid="9bd5b655-ea47-4637-99f3-aad0948be35b"
13555 wsmap="managed"
13556 >
13557 <desc>
13558 The IMediumFormat interface represents a medium format.
13559
13560 Each medium format has an associated backend which is used to handle
13561 media stored in this format. This interface provides information
13562 about the properties of the associated backend.
13563
13564 Each medium format is identified by a string represented by the
13565 <link to="#id"/> attribute. This string is used in calls like
13566 <link to="IVirtualBox::createHardDisk"/> to specify the desired
13567 format.
13568
13569 The list of all supported medium formats can be obtained using
13570 <link to="ISystemProperties::mediumFormats"/>.
13571
13572 <see><link to="IMedium"/></see>
13573 </desc>
13574
13575 <attribute name="id" type="wstring" readonly="yes">
13576 <desc>
13577 Identifier of this format.
13578
13579 The format identifier is a non-@c null non-empty ASCII string. Note that
13580 this string is case-insensitive. This means that, for example, all of
13581 the following strings:
13582 <pre>
13583 "VDI"
13584 "vdi"
13585 "VdI"</pre>
13586 refer to the same medium format.
13587
13588 This string is used in methods of other interfaces where it is necessary
13589 to specify a medium format, such as
13590 <link to="IVirtualBox::createHardDisk"/>.
13591 </desc>
13592 </attribute>
13593
13594 <attribute name="name" type="wstring" readonly="yes">
13595 <desc>
13596 Human readable description of this format.
13597
13598 Mainly for use in file open dialogs.
13599 </desc>
13600 </attribute>
13601
13602 <attribute name="capabilities" type="unsigned long" readonly="yes">
13603 <desc>
13604 Capabilities of the format as a set of bit flags.
13605
13606 For the meaning of individual capability flags see
13607 <link to="MediumFormatCapabilities"/>.
13608 </desc>
13609 </attribute>
13610
13611 <method name="describeFileExtensions">
13612 <desc>
13613 Returns two arrays describing the supported file extensions.
13614
13615 The first array contains the supported extensions and the seconds one
13616 the type each extension supports. Both have the same size.
13617
13618 Note that some backends do not work on files, so this array may be
13619 empty.
13620
13621 <see><link to="IMediumFormat::capabilities"/></see>
13622 </desc>
13623 <param name="extensions" type="wstring" safearray="yes" dir="out">
13624 <desc>The array of supported extensions.</desc>
13625 </param>
13626 <param name="type" type="DeviceType" safearray="yes" dir="out">
13627 <desc>The array which indicates the device type for every given extension.</desc>
13628 </param>
13629 </method>
13630
13631 <method name="describeProperties" const="yes">
13632 <desc>
13633 Returns several arrays describing the properties supported by this
13634 format.
13635
13636 An element with the given index in each array describes one
13637 property. Thus, the number of elements in each returned array is the
13638 same and corresponds to the number of supported properties.
13639
13640 The returned arrays are filled in only if the
13641 <link to="MediumFormatCapabilities_Properties"/> flag is set.
13642 All arguments must be non-@c null.
13643
13644 <see><link to="DataType"/>, <link to="DataFlags"/></see>
13645 </desc>
13646
13647 <param name="names" type="wstring" safearray="yes" dir="out">
13648 <desc>Array of property names.</desc>
13649 </param>
13650 <param name="description" type="wstring" safearray="yes" dir="out">
13651 <desc>Array of property descriptions.</desc>
13652 </param>
13653 <param name="types" type="DataType" safearray="yes" dir="out">
13654 <desc>Array of property types.</desc>
13655 </param>
13656 <param name="flags" type="unsigned long" safearray="yes" dir="out">
13657 <desc>Array of property flags.</desc>
13658 </param>
13659 <param name="defaults" type="wstring" safearray="yes" dir="out">
13660 <desc>Array of default property values.</desc>
13661 </param>
13662 </method>
13663
13664 </interface>
13665
13666
13667 <!--
13668 // IKeyboard
13669 /////////////////////////////////////////////////////////////////////////
13670 -->
13671
13672 <interface
13673 name="IKeyboard" extends="$unknown"
13674 uuid="f6916ec5-a881-4237-898f-7de58cf88672"
13675 wsmap="managed"
13676 >
13677 <desc>
13678 The IKeyboard interface represents the virtual machine's keyboard. Used
13679 in <link to="IConsole::keyboard"/>.
13680
13681 Use this interface to send keystrokes or the Ctrl-Alt-Del sequence
13682 to the virtual machine.
13683
13684 </desc>
13685 <method name="putScancode">
13686 <desc>Sends a scancode to the keyboard.
13687
13688 <result name="VBOX_E_IPRT_ERROR">
13689 Could not send scan code to virtual keyboard.
13690 </result>
13691
13692 </desc>
13693 <param name="scancode" type="long" dir="in"/>
13694 </method>
13695
13696 <method name="putScancodes">
13697 <desc>Sends an array of scancodes to the keyboard.
13698
13699 <result name="VBOX_E_IPRT_ERROR">
13700 Could not send all scan codes to virtual keyboard.
13701 </result>
13702
13703 </desc>
13704 <param name="scancodes" type="long" dir="in" safearray="yes"/>
13705 <param name="codesStored" type="unsigned long" dir="return"/>
13706 </method>
13707
13708 <method name="putCAD">
13709 <desc>Sends the Ctrl-Alt-Del sequence to the keyboard. This
13710 function is nothing special, it is just a convenience function
13711 calling <link to="IKeyboard::putScancodes"/> with the proper scancodes.
13712
13713 <result name="VBOX_E_IPRT_ERROR">
13714 Could not send all scan codes to virtual keyboard.
13715 </result>
13716
13717 </desc>
13718 </method>
13719
13720 <attribute name="eventSource" type="IEventSource" readonly="yes">
13721 <desc>
13722 Event source for keyboard events.
13723 </desc>
13724 </attribute>
13725
13726 </interface>
13727
13728
13729 <!--
13730 // IMouse
13731 /////////////////////////////////////////////////////////////////////////
13732 -->
13733
13734 <enum
13735 name="MouseButtonState"
13736 uuid="9ee094b8-b28a-4d56-a166-973cb588d7f8"
13737 >
13738 <desc>
13739 Mouse button state.
13740 </desc>
13741
13742 <const name="LeftButton" value="0x01"/>
13743 <const name="RightButton" value="0x02"/>
13744 <const name="MiddleButton" value="0x04"/>
13745 <const name="WheelUp" value="0x08"/>
13746 <const name="WheelDown" value="0x10"/>
13747 <const name="XButton1" value="0x20"/>
13748 <const name="XButton2" value="0x40"/>
13749 <const name="MouseStateMask" value="0x7F"/>
13750 </enum>
13751
13752 <interface
13753 name="IMouse" extends="$unknown"
13754 uuid="05044a52-7811-4f00-ae3a-0ab7ff707b10"
13755 wsmap="managed"
13756 >
13757 <desc>
13758 The IMouse interface represents the virtual machine's mouse. Used in
13759 <link to="IConsole::mouse"/>.
13760
13761 Through this interface, the virtual machine's virtual mouse can be
13762 controlled.
13763 </desc>
13764
13765 <attribute name="absoluteSupported" type="boolean" readonly="yes">
13766 <desc>
13767 Whether the guest OS supports absolute mouse pointer positioning
13768 or not.
13769 <note>
13770 You can use the <link to="IMouseCapabilityChangedEvent"/>
13771 event to be instantly informed about changes of this attribute
13772 during virtual machine execution.
13773 </note>
13774 <see><link to="#putMouseEventAbsolute"/></see>
13775 </desc>
13776 </attribute>
13777
13778 <attribute name="relativeSupported" type="boolean" readonly="yes">
13779 <desc>
13780 Whether the guest OS supports relative mouse pointer positioning
13781 or not.
13782 <note>
13783 You can use the <link to="IMouseCapabilityChangedEvent"/>
13784 event to be instantly informed about changes of this attribute
13785 during virtual machine execution.
13786 </note>
13787 <see><link to="#putMouseEvent"/></see>
13788 </desc>
13789 </attribute>
13790
13791 <attribute name="needsHostCursor" type="boolean" readonly="yes">
13792 <desc>
13793 Whether the guest OS can currently switch to drawing it's own mouse
13794 cursor on demand.
13795 <note>
13796 You can use the <link to="IMouseCapabilityChangedEvent"/>
13797 event to be instantly informed about changes of this attribute
13798 during virtual machine execution.
13799 </note>
13800 <see><link to="#putMouseEvent"/></see>
13801 </desc>
13802 </attribute>
13803
13804 <method name="putMouseEvent">
13805 <desc>
13806 Initiates a mouse event using relative pointer movements
13807 along x and y axis.
13808
13809 <result name="E_ACCESSDENIED">
13810 Console not powered up.
13811 </result>
13812 <result name="VBOX_E_IPRT_ERROR">
13813 Could not send mouse event to virtual mouse.
13814 </result>
13815
13816 </desc>
13817
13818 <param name="dx" type="long" dir="in">
13819 <desc>
13820 Amount of pixels the mouse should move to the right.
13821 Negative values move the mouse to the left.
13822 </desc>
13823 </param>
13824 <param name="dy" type="long" dir="in">
13825 <desc>
13826 Amount of pixels the mouse should move downwards.
13827 Negative values move the mouse upwards.
13828 </desc>
13829 </param>
13830 <param name="dz" type="long" dir="in">
13831 <desc>
13832 Amount of mouse wheel moves.
13833 Positive values describe clockwise wheel rotations,
13834 negative values describe counterclockwise rotations.
13835 </desc>
13836 </param>
13837 <param name="dw" type="long" dir="in">
13838 <desc>
13839 Amount of horizontal mouse wheel moves.
13840 Positive values describe a movement to the left,
13841 negative values describe a movement to the right.
13842 </desc>
13843 </param>
13844 <param name="buttonState" type="long" dir="in">
13845 <desc>
13846 The current state of mouse buttons. Every bit represents
13847 a mouse button as follows:
13848 <table>
13849 <tr><td>Bit 0 (<tt>0x01</tt>)</td><td>left mouse button</td></tr>
13850 <tr><td>Bit 1 (<tt>0x02</tt>)</td><td>right mouse button</td></tr>
13851 <tr><td>Bit 2 (<tt>0x04</tt>)</td><td>middle mouse button</td></tr>
13852 </table>
13853 A value of <tt>1</tt> means the corresponding button is pressed.
13854 otherwise it is released.
13855 </desc>
13856 </param>
13857 </method>
13858
13859 <method name="putMouseEventAbsolute">
13860 <desc>
13861 Positions the mouse pointer using absolute x and y coordinates.
13862 These coordinates are expressed in pixels and
13863 start from <tt>[1,1]</tt> which corresponds to the top left
13864 corner of the virtual display.
13865
13866 <result name="E_ACCESSDENIED">
13867 Console not powered up.
13868 </result>
13869 <result name="VBOX_E_IPRT_ERROR">
13870 Could not send mouse event to virtual mouse.
13871 </result>
13872
13873 <note>
13874 This method will have effect only if absolute mouse
13875 positioning is supported by the guest OS.
13876 </note>
13877
13878 <see><link to="#absoluteSupported"/></see>
13879 </desc>
13880
13881 <param name="x" type="long" dir="in">
13882 <desc>
13883 X coordinate of the pointer in pixels, starting from @c 1.
13884 </desc>
13885 </param>
13886 <param name="y" type="long" dir="in">
13887 <desc>
13888 Y coordinate of the pointer in pixels, starting from @c 1.
13889 </desc>
13890 </param>
13891 <param name="dz" type="long" dir="in">
13892 <desc>
13893 Amount of mouse wheel moves.
13894 Positive values describe clockwise wheel rotations,
13895 negative values describe counterclockwise rotations.
13896 </desc>
13897 </param>
13898 <param name="dw" type="long" dir="in">
13899 <desc>
13900 Amount of horizontal mouse wheel moves.
13901 Positive values describe a movement to the left,
13902 negative values describe a movement to the right.
13903 </desc>
13904 </param>
13905 <param name="buttonState" type="long" dir="in">
13906 <desc>
13907 The current state of mouse buttons. Every bit represents
13908 a mouse button as follows:
13909 <table>
13910 <tr><td>Bit 0 (<tt>0x01</tt>)</td><td>left mouse button</td></tr>
13911 <tr><td>Bit 1 (<tt>0x02</tt>)</td><td>right mouse button</td></tr>
13912 <tr><td>Bit 2 (<tt>0x04</tt>)</td><td>middle mouse button</td></tr>
13913 </table>
13914 A value of @c 1 means the corresponding button is pressed.
13915 otherwise it is released.
13916 </desc>
13917 </param>
13918 </method>
13919
13920 <attribute name="eventSource" type="IEventSource" readonly="yes">
13921 <desc>
13922 Event source for mouse events.
13923 </desc>
13924 </attribute>
13925
13926 </interface>
13927
13928 <!--
13929 // IDisplay
13930 /////////////////////////////////////////////////////////////////////////
13931 -->
13932
13933 <enum
13934 name="FramebufferPixelFormat"
13935 uuid="7acfd5ed-29e3-45e3-8136-73c9224f3d2d"
13936 >
13937 <desc>
13938 Format of the video memory buffer. Constants represented by this enum can
13939 be used to test for particular values of <link
13940 to="IFramebuffer::pixelFormat"/>. See also <link
13941 to="IFramebuffer::requestResize"/>.
13942
13943 See also www.fourcc.org for more information about FOURCC pixel formats.
13944 </desc>
13945
13946 <const name="Opaque" value="0">
13947 <desc>
13948 Unknown buffer format (the user may not assume any particular format of
13949 the buffer).
13950 </desc>
13951 </const>
13952 <const name="FOURCC_RGB" value="0x32424752">
13953 <desc>
13954 Basic RGB format (<link to="IFramebuffer::bitsPerPixel"/> determines the
13955 bit layout).
13956 </desc>
13957 </const>
13958 </enum>
13959
13960 <interface
13961 name="IFramebuffer" extends="$unknown"
13962 uuid="b7ed347a-5765-40a0-ae1c-f543eb4ddeaf"
13963 wsmap="suppress"
13964 >
13965 <attribute name="address" type="octet" mod="ptr" readonly="yes">
13966 <desc>Address of the start byte of the frame buffer.</desc>
13967 </attribute>
13968
13969 <attribute name="width" type="unsigned long" readonly="yes">
13970 <desc>Frame buffer width, in pixels.</desc>
13971 </attribute>
13972
13973 <attribute name="height" type="unsigned long" readonly="yes">
13974 <desc>Frame buffer height, in pixels.</desc>
13975 </attribute>
13976
13977 <attribute name="bitsPerPixel" type="unsigned long" readonly="yes">
13978 <desc>
13979 Color depth, in bits per pixel. When <link to="#pixelFormat"/> is <link
13980 to="FramebufferPixelFormat_FOURCC_RGB">FOURCC_RGB</link>, valid values
13981 are: 8, 15, 16, 24 and 32.
13982 </desc>
13983 </attribute>
13984
13985 <attribute name="bytesPerLine" type="unsigned long" readonly="yes">
13986 <desc>
13987 Scan line size, in bytes. When <link to="#pixelFormat"/> is <link
13988 to="FramebufferPixelFormat_FOURCC_RGB">FOURCC_RGB</link>, the
13989 size of the scan line must be aligned to 32 bits.
13990 </desc>
13991 </attribute>
13992
13993 <attribute name="pixelFormat" type="unsigned long" readonly="yes">
13994 <desc>
13995 Frame buffer pixel format. It's either one of the values defined by <link
13996 to="FramebufferPixelFormat"/> or a raw FOURCC code.
13997 <note>
13998 This attribute must never return <link
13999 to="FramebufferPixelFormat_Opaque"/> -- the format of the buffer
14000 <link to="#address"/> points to must be always known.
14001 </note>
14002 </desc>
14003 </attribute>
14004
14005 <attribute name="usesGuestVRAM" type="boolean" readonly="yes">
14006 <desc>
14007 Defines whether this frame buffer uses the virtual video card's memory
14008 buffer (guest VRAM) directly or not. See <link
14009 to="IFramebuffer::requestResize"/> for more information.
14010 </desc>
14011 </attribute>
14012
14013 <attribute name="heightReduction" type="unsigned long" readonly="yes">
14014 <desc>
14015 Hint from the frame buffer about how much of the standard
14016 screen height it wants to use for itself. This information is
14017 exposed to the guest through the VESA BIOS and VMMDev interface
14018 so that it can use it for determining its video mode table. It
14019 is not guaranteed that the guest respects the value.
14020 </desc>
14021 </attribute>
14022
14023 <attribute name="overlay" type="IFramebufferOverlay" readonly="yes">
14024 <desc>
14025 An alpha-blended overlay which is superposed over the frame buffer.
14026 The initial purpose is to allow the display of icons providing
14027 information about the VM state, including disk activity, in front
14028 ends which do not have other means of doing that. The overlay is
14029 designed to controlled exclusively by IDisplay. It has no locking
14030 of its own, and any changes made to it are not guaranteed to be
14031 visible until the affected portion of IFramebuffer is updated. The
14032 overlay can be created lazily the first time it is requested. This
14033 attribute can also return @c null to signal that the overlay is not
14034 implemented.
14035 </desc>
14036 </attribute>
14037
14038 <attribute name="winId" type="long long" readonly="yes">
14039 <desc>
14040 Platform-dependent identifier of the window where context of this
14041 frame buffer is drawn, or zero if there's no such window.
14042 </desc>
14043 </attribute>
14044
14045 <method name="lock">
14046 <desc>
14047 Locks the frame buffer.
14048 Gets called by the IDisplay object where this frame buffer is
14049 bound to.
14050 </desc>
14051 </method>
14052
14053 <method name="unlock">
14054 <desc>
14055 Unlocks the frame buffer.
14056 Gets called by the IDisplay object where this frame buffer is
14057 bound to.
14058 </desc>
14059 </method>
14060
14061 <method name="notifyUpdate">
14062 <desc>
14063 Informs about an update.
14064 Gets called by the display object where this buffer is
14065 registered.
14066 </desc>
14067 <param name="x" type="unsigned long" dir="in"/>
14068 <param name="y" type="unsigned long" dir="in"/>
14069 <param name="width" type="unsigned long" dir="in"/>
14070 <param name="height" type="unsigned long" dir="in"/>
14071 </method>
14072
14073 <method name="requestResize">
14074 <desc>
14075 Requests a size and pixel format change.
14076
14077 There are two modes of working with the video buffer of the virtual
14078 machine. The <i>indirect</i> mode implies that the IFramebuffer
14079 implementation allocates a memory buffer for the requested display mode
14080 and provides it to the virtual machine. In <i>direct</i> mode, the
14081 IFramebuffer implementation uses the memory buffer allocated and owned
14082 by the virtual machine. This buffer represents the video memory of the
14083 emulated video adapter (so called <i>guest VRAM</i>). The direct mode is
14084 usually faster because the implementation gets a raw pointer to the
14085 guest VRAM buffer which it can directly use for visualizing the contents
14086 of the virtual display, as opposed to the indirect mode where the
14087 contents of guest VRAM are copied to the memory buffer provided by
14088 the implementation every time a display update occurs.
14089
14090 It is important to note that the direct mode is really fast only when
14091 the implementation uses the given guest VRAM buffer directly, for
14092 example, by blitting it to the window representing the virtual machine's
14093 display, which saves at least one copy operation comparing to the
14094 indirect mode. However, using the guest VRAM buffer directly is not
14095 always possible: the format and the color depth of this buffer may be
14096 not supported by the target window, or it may be unknown (opaque) as in
14097 case of text or non-linear multi-plane VGA video modes. In this case,
14098 the indirect mode (that is always available) should be used as a
14099 fallback: when the guest VRAM contents are copied to the
14100 implementation-provided memory buffer, color and format conversion is
14101 done automatically by the underlying code.
14102
14103 The @a pixelFormat parameter defines whether the direct mode is
14104 available or not. If @a pixelFormat is <link
14105 to="FramebufferPixelFormat_Opaque"/> then direct access to the guest
14106 VRAM buffer is not available -- the @a VRAM, @a bitsPerPixel and
14107 @a bytesPerLine parameters must be ignored and the implementation must use
14108 the indirect mode (where it provides its own buffer in one of the
14109 supported formats). In all other cases, @a pixelFormat together with
14110 @a bitsPerPixel and @a bytesPerLine define the format of the video memory
14111 buffer pointed to by the @a VRAM parameter and the implementation is
14112 free to choose which mode to use. To indicate that this frame buffer uses
14113 the direct mode, the implementation of the <link to="#usesGuestVRAM"/>
14114 attribute must return @c true and <link to="#address"/> must
14115 return exactly the same address that is passed in the @a VRAM parameter
14116 of this method; otherwise it is assumed that the indirect strategy is
14117 chosen.
14118
14119 The @a width and @a height parameters represent the size of the
14120 requested display mode in both modes. In case of indirect mode, the
14121 provided memory buffer should be big enough to store data of the given
14122 display mode. In case of direct mode, it is guaranteed that the given
14123 @a VRAM buffer contains enough space to represent the display mode of the
14124 given size. Note that this frame buffer's <link to="#width"/> and <link
14125 to="#height"/> attributes must return exactly the same values as
14126 passed to this method after the resize is completed (see below).
14127
14128 The @a finished output parameter determines if the implementation has
14129 finished resizing the frame buffer or not. If, for some reason, the
14130 resize cannot be finished immediately during this call, @a finished
14131 must be set to @c false, and the implementation must call
14132 <link to="IDisplay::resizeCompleted"/> after it has returned from
14133 this method as soon as possible. If @a finished is @c false, the
14134 machine will not call any frame buffer methods until
14135 <link to="IDisplay::resizeCompleted"/> is called.
14136
14137 Note that if the direct mode is chosen, the <link to="#bitsPerPixel"/>,
14138 <link to="#bytesPerLine"/> and <link to="#pixelFormat"/> attributes of
14139 this frame buffer must return exactly the same values as specified in the
14140 parameters of this method, after the resize is completed. If the
14141 indirect mode is chosen, these attributes must return values describing
14142 the format of the implementation's own memory buffer <link
14143 to="#address"/> points to. Note also that the <link to="#bitsPerPixel"/>
14144 value must always correlate with <link to="#pixelFormat"/>. Note that
14145 the <link to="#pixelFormat"/> attribute must never return <link
14146 to="FramebufferPixelFormat_Opaque"/> regardless of the selected mode.
14147
14148 <note>
14149 This method is called by the IDisplay object under the
14150 <link to="#lock"/> provided by this IFramebuffer
14151 implementation. If this method returns @c false in @a finished, then
14152 this lock is not released until
14153 <link to="IDisplay::resizeCompleted"/> is called.
14154 </note>
14155 </desc>
14156 <param name="screenId" type="unsigned long" dir="in">
14157 <desc>
14158 Logical screen number. Must be used in the corresponding call to
14159 <link to="IDisplay::resizeCompleted"/> if this call is made.
14160 </desc>
14161 </param>
14162 <param name="pixelFormat" type="unsigned long" dir="in">
14163 <desc>
14164 Pixel format of the memory buffer pointed to by @a VRAM.
14165 See also <link to="FramebufferPixelFormat"/>.
14166 </desc>
14167 </param>
14168 <param name="VRAM" type="octet" mod="ptr" dir="in">
14169 <desc>Pointer to the virtual video card's VRAM (may be @c null).</desc>
14170 </param>
14171 <param name="bitsPerPixel" type="unsigned long" dir="in">
14172 <desc>Color depth, bits per pixel.</desc>
14173 </param>
14174 <param name="bytesPerLine" type="unsigned long" dir="in">
14175 <desc>Size of one scan line, in bytes.</desc>
14176 </param>
14177 <param name="width" type="unsigned long" dir="in">
14178 <desc>Width of the guest display, in pixels.</desc>
14179 </param>
14180 <param name="height" type="unsigned long" dir="in">
14181 <desc>Height of the guest display, in pixels.</desc>
14182 </param>
14183 <param name="finished" type="boolean" dir="return">
14184 <desc>
14185 Can the VM start using the new frame buffer immediately
14186 after this method returns or it should wait for
14187 <link to="IDisplay::resizeCompleted"/>.
14188 </desc>
14189 </param>
14190 </method>
14191
14192 <method name="videoModeSupported">
14193 <desc>
14194 Returns whether the frame buffer implementation is willing to
14195 support a given video mode. In case it is not able to render
14196 the video mode (or for some reason not willing), it should
14197 return @c false. Usually this method is called when the guest
14198 asks the VMM device whether a given video mode is supported
14199 so the information returned is directly exposed to the guest.
14200 It is important that this method returns very quickly.
14201 </desc>
14202 <param name="width" type="unsigned long" dir="in"/>
14203 <param name="height" type="unsigned long" dir="in"/>
14204 <param name="bpp" type="unsigned long" dir="in"/>
14205 <param name="supported" type="boolean" dir="return"/>
14206 </method>
14207
14208 <method name="getVisibleRegion">
14209 <desc>
14210 Returns the visible region of this frame buffer.
14211
14212 If the @a rectangles parameter is @c null then the value of the
14213 @a count parameter is ignored and the number of elements necessary to
14214 describe the current visible region is returned in @a countCopied.
14215
14216 If @a rectangles is not @c null but @a count is less
14217 than the required number of elements to store region data, the method
14218 will report a failure. If @a count is equal or greater than the
14219 required number of elements, then the actual number of elements copied
14220 to the provided array will be returned in @a countCopied.
14221
14222 <note>
14223 The address of the provided array must be in the process space of
14224 this IFramebuffer object.
14225 </note>
14226 <note>
14227 Method not yet implemented.
14228 </note>
14229 </desc>
14230 <param name="rectangles" type="octet" mod="ptr" dir="in">
14231 <desc>Pointer to the @c RTRECT array to receive region data.</desc>
14232 </param>
14233 <param name="count" type="unsigned long" dir="in">
14234 <desc>Number of @c RTRECT elements in the @a rectangles array.</desc>
14235 </param>
14236 <param name="countCopied" type="unsigned long" dir="return">
14237 <desc>Number of elements copied to the @a rectangles array.</desc>
14238 </param>
14239 </method>
14240
14241 <method name="setVisibleRegion">
14242 <desc>
14243 Suggests a new visible region to this frame buffer. This region
14244 represents the area of the VM display which is a union of regions of
14245 all top-level windows of the guest operating system running inside the
14246 VM (if the Guest Additions for this system support this
14247 functionality). This information may be used by the frontends to
14248 implement the seamless desktop integration feature.
14249
14250 <note>
14251 The address of the provided array must be in the process space of
14252 this IFramebuffer object.
14253 </note>
14254 <note>
14255 The IFramebuffer implementation must make a copy of the provided
14256 array of rectangles.
14257 </note>
14258 <note>
14259 Method not yet implemented.
14260 </note>
14261 </desc>
14262 <param name="rectangles" type="octet" mod="ptr" dir="in">
14263 <desc>Pointer to the @c RTRECT array.</desc>
14264 </param>
14265 <param name="count" type="unsigned long" dir="in">
14266 <desc>Number of @c RTRECT elements in the @a rectangles array.</desc>
14267 </param>
14268 </method>
14269
14270 <method name="processVHWACommand">
14271 <desc>
14272 Posts a Video HW Acceleration Command to the frame buffer for processing.
14273 The commands used for 2D video acceleration (DDraw surface creation/destroying, blitting, scaling, color conversion, overlaying, etc.)
14274 are posted from quest to the host to be processed by the host hardware.
14275
14276 <note>
14277 The address of the provided command must be in the process space of
14278 this IFramebuffer object.
14279 </note>
14280 </desc>
14281
14282 <param name="command" type="octet" mod="ptr" dir="in">
14283 <desc>Pointer to VBOXVHWACMD containing the command to execute.</desc>
14284 </param>
14285 </method>
14286
14287 </interface>
14288
14289 <interface
14290 name="IFramebufferOverlay" extends="IFramebuffer"
14291 uuid="0bcc1c7e-e415-47d2-bfdb-e4c705fb0f47"
14292 wsmap="suppress"
14293 >
14294 <desc>
14295 The IFramebufferOverlay interface represents an alpha blended overlay
14296 for displaying status icons above an IFramebuffer. It is always created
14297 not visible, so that it must be explicitly shown. It only covers a
14298 portion of the IFramebuffer, determined by its width, height and
14299 co-ordinates. It is always in packed pixel little-endian 32bit ARGB (in
14300 that order) format, and may be written to directly. Do re-read the
14301 width though, after setting it, as it may be adjusted (increased) to
14302 make it more suitable for the front end.
14303 </desc>
14304 <attribute name="x" type="unsigned long" readonly="yes">
14305 <desc>X position of the overlay, relative to the frame buffer.</desc>
14306 </attribute>
14307
14308 <attribute name="y" type="unsigned long" readonly="yes">
14309 <desc>Y position of the overlay, relative to the frame buffer.</desc>
14310 </attribute>
14311
14312 <attribute name="visible" type="boolean" readonly="no">
14313 <desc>
14314 Whether the overlay is currently visible.
14315 </desc>
14316 </attribute>
14317
14318 <attribute name="alpha" type="unsigned long" readonly="no">
14319 <desc>
14320 The global alpha value for the overlay. This may or may not be
14321 supported by a given front end.
14322 </desc>
14323 </attribute>
14324
14325 <method name="move">
14326 <desc>
14327 Changes the overlay's position relative to the IFramebuffer.
14328 </desc>
14329 <param name="x" type="unsigned long" dir="in"/>
14330 <param name="y" type="unsigned long" dir="in"/>
14331 </method>
14332
14333 </interface>
14334
14335 <interface
14336 name="IDisplay" extends="$unknown"
14337 uuid="b83ee395-8679-40ca-8d60-1a0cbe724930"
14338 wsmap="managed"
14339 >
14340 <desc>
14341 The IDisplay interface represents the virtual machine's display.
14342
14343 The object implementing this interface is contained in each
14344 <link to="IConsole::display"/> attribute and represents the visual
14345 output of the virtual machine.
14346
14347 The virtual display supports pluggable output targets represented by the
14348 IFramebuffer interface. Examples of the output target are a window on
14349 the host computer or an RDP session's display on a remote computer.
14350 </desc>
14351 <method name="getScreenResolution">
14352 <desc>Queries display width, height and color depth for given screen.</desc>
14353 <param name="screenId" type="unsigned long" dir="in"/>
14354 <param name="width" type="unsigned long" dir="out"/>
14355 <param name="height" type="unsigned long" dir="out"/>
14356 <param name="bitsPerPixel" type="unsigned long" dir="out"/>
14357 </method>
14358
14359 <method name="setFramebuffer">
14360 <desc>
14361 Sets the framebuffer for given screen.
14362 </desc>
14363 <param name="screenId" type="unsigned long" dir="in"/>
14364 <param name="framebuffer" type="IFramebuffer" dir="in"/>
14365 </method>
14366
14367 <method name="getFramebuffer">
14368 <desc>
14369 Queries the framebuffer for given screen.
14370 </desc>
14371 <param name="screenId" type="unsigned long" dir="in"/>
14372 <param name="framebuffer" type="IFramebuffer" dir="out"/>
14373 <param name="xOrigin" type="long" dir="out"/>
14374 <param name="yOrigin" type="long" dir="out"/>
14375 </method>
14376
14377 <method name="setVideoModeHint">
14378 <desc>
14379 Asks VirtualBox to request the given video mode from
14380 the guest. This is just a hint and it cannot be guaranteed
14381 that the requested resolution will be used. Guest Additions
14382 are required for the request to be seen by guests. The caller
14383 should issue the request and wait for a resolution change and
14384 after a timeout retry.
14385
14386 Specifying @c 0 for either @a width, @a height or @a bitsPerPixel
14387 parameters means that the corresponding values should be taken from the
14388 current video mode (i.e. left unchanged).
14389
14390 If the guest OS supports multi-monitor configuration then the @a display
14391 parameter specifies the number of the guest display to send the hint to:
14392 @c 0 is the primary display, @c 1 is the first secondary and
14393 so on. If the multi-monitor configuration is not supported, @a display
14394 must be @c 0.
14395
14396 <result name="E_INVALIDARG">
14397 The @a display is not associated with any monitor.
14398 </result>
14399
14400 </desc>
14401 <param name="display" type="unsigned long" dir="in">
14402 <desc>
14403 The number of the guest display to send the hint to.
14404 </desc>
14405 </param>
14406 <param name="enabled" type="boolean" dir="in">
14407 <desc>
14408 @c True, if this guest screen is enabled,
14409 @c False otherwise.
14410 </desc>
14411 </param>
14412 <param name="changeOrigin" type="boolean" dir="in">
14413 <desc>
14414 @c True, if the origin of the guest screen should be changed,
14415 @c False otherwise.
14416 </desc>
14417 </param>
14418 <param name="originX" type="long" dir="in">
14419 <desc>
14420 The X origin of the guest screen.
14421 </desc>
14422 </param>
14423 <param name="originY" type="long" dir="in">
14424 <desc>
14425 The Y origin of the guest screen.
14426 </desc>
14427 </param>
14428 <param name="width" type="unsigned long" dir="in"/>
14429 <param name="height" type="unsigned long" dir="in"/>
14430 <param name="bitsPerPixel" type="unsigned long" dir="in"/>
14431 </method>
14432
14433 <method name="setSeamlessMode">
14434 <desc>
14435 Enables or disables seamless guest display rendering (seamless desktop
14436 integration) mode.
14437 <note>
14438 Calling this method has no effect if <link
14439 to="IGuest::getFacilityStatus"/> with facility @c Seamless
14440 does not return @c Active.
14441 </note>
14442 </desc>
14443 <param name="enabled" type="boolean" dir="in"/>
14444 </method>
14445
14446 <method name="takeScreenShot">
14447 <desc>
14448 Takes a screen shot of the requested size and copies it to the
14449 32-bpp buffer allocated by the caller and pointed to by @a address.
14450 A pixel consists of 4 bytes in order: B, G, R, 0.
14451
14452 <note>This API can be used only locally by a VM process through the
14453 COM/XPCOM C++ API as it requires pointer support. It is not
14454 available for scripting langages, Java or any webservice clients.
14455 Unless you are writing a new VM frontend use
14456 <link to="#takeScreenShotToArray" />.
14457 </note>
14458
14459 <result name="E_NOTIMPL">
14460 Feature not implemented.
14461 </result>
14462 <result name="VBOX_E_IPRT_ERROR">
14463 Could not take a screenshot.
14464 </result>
14465
14466 </desc>
14467 <param name="screenId" type="unsigned long" dir="in"/>
14468 <param name="address" type="octet" mod="ptr" dir="in"/>
14469 <param name="width" type="unsigned long" dir="in"/>
14470 <param name="height" type="unsigned long" dir="in"/>
14471 </method>
14472
14473 <method name="takeScreenShotToArray">
14474 <desc>
14475 Takes a guest screen shot of the requested size and returns it as
14476 an array of bytes in uncompressed 32-bit RGBA format.
14477 A pixel consists of 4 bytes in order: R, G, B, 0xFF.
14478
14479 This API is slow, but could be the only option to get guest screenshot
14480 for scriptable languages not allowed to manipulate with addresses
14481 directly.
14482
14483 <result name="E_NOTIMPL">
14484 Feature not implemented.
14485 </result>
14486 <result name="VBOX_E_IPRT_ERROR">
14487 Could not take a screenshot.
14488 </result>
14489 </desc>
14490 <param name="screenId" type="unsigned long" dir="in">
14491 <desc>
14492 Monitor to take screenshot from.
14493 </desc>
14494 </param>
14495 <param name="width" type="unsigned long" dir="in">
14496 <desc>
14497 Desired image width.
14498 </desc>
14499 </param>
14500 <param name="height" type="unsigned long" dir="in">
14501 <desc>
14502 Desired image height.
14503 </desc>
14504 </param>
14505 <param name="screenData" type="octet" dir="return" safearray="yes">
14506 <desc>
14507 Array with resulting screen data.
14508 </desc>
14509 </param>
14510 </method>
14511
14512 <method name="takeScreenShotPNGToArray">
14513 <desc>
14514 Takes a guest screen shot of the requested size and returns it as
14515 PNG image in array.
14516
14517 <result name="E_NOTIMPL">
14518 Feature not implemented.
14519 </result>
14520 <result name="VBOX_E_IPRT_ERROR">
14521 Could not take a screenshot.
14522 </result>
14523 </desc>
14524 <param name="screenId" type="unsigned long" dir="in">
14525 <desc>
14526 Monitor to take the screenshot from.
14527 </desc>
14528 </param>
14529 <param name="width" type="unsigned long" dir="in">
14530 <desc>
14531 Desired image width.
14532 </desc>
14533 </param>
14534 <param name="height" type="unsigned long" dir="in">
14535 <desc>
14536 Desired image height.
14537 </desc>
14538 </param>
14539 <param name="screenData" type="octet" dir="return" safearray="yes">
14540 <desc>
14541 Array with resulting screen data.
14542 </desc>
14543 </param>
14544 </method>
14545
14546 <method name="drawToScreen">
14547 <desc>
14548 Draws a 32-bpp image of the specified size from the given buffer
14549 to the given point on the VM display.
14550
14551 <result name="E_NOTIMPL">
14552 Feature not implemented.
14553 </result>
14554 <result name="VBOX_E_IPRT_ERROR">
14555 Could not draw to screen.
14556 </result>
14557
14558 </desc>
14559 <param name="screenId" type="unsigned long" dir="in">
14560 <desc>
14561 Monitor to take the screenshot from.
14562 </desc>
14563 </param>
14564 <param name="address" type="octet" mod="ptr" dir="in">
14565 <desc>
14566 Address to store the screenshot to
14567 </desc>
14568 </param>
14569 <param name="x" type="unsigned long" dir="in">
14570 <desc>
14571 Relative to the screen top left corner.
14572 </desc>
14573 </param>
14574 <param name="y" type="unsigned long" dir="in">
14575 <desc>
14576 Relative to the screen top left corner.
14577 </desc>
14578 </param>
14579 <param name="width" type="unsigned long" dir="in">
14580 <desc>
14581 Desired image width.
14582 </desc>
14583 </param>
14584 <param name="height" type="unsigned long" dir="in">
14585 <desc>
14586 Desired image height.
14587 </desc>
14588 </param>
14589 </method>
14590
14591 <method name="invalidateAndUpdate">
14592 <desc>
14593 Does a full invalidation of the VM display and instructs the VM
14594 to update it.
14595
14596 <result name="VBOX_E_IPRT_ERROR">
14597 Could not invalidate and update screen.
14598 </result>
14599
14600 </desc>
14601 </method>
14602
14603 <method name="resizeCompleted">
14604 <desc>
14605 Signals that a framebuffer has completed the resize operation.
14606
14607 <result name="VBOX_E_NOT_SUPPORTED">
14608 Operation only valid for external frame buffers.
14609 </result>
14610
14611 </desc>
14612 <param name="screenId" type="unsigned long" dir="in"/>
14613 </method>
14614
14615 <method name="completeVHWACommand">
14616 <desc>
14617 Signals that the Video HW Acceleration command has completed.
14618 </desc>
14619
14620 <param name="command" type="octet" mod="ptr" dir="in">
14621 <desc>Pointer to VBOXVHWACMD containing the completed command.</desc>
14622 </param>
14623 </method>
14624
14625 <method name="viewportChanged">
14626 <desc>
14627 Signals that framebuffer window viewport has changed.
14628
14629 <result name="E_INVALIDARG">
14630 The specified viewport data is invalid.
14631 </result>
14632
14633 </desc>
14634
14635 <param name="screenId" type="unsigned long" dir="in">
14636 <desc>
14637 Monitor to take the screenshot from.
14638 </desc>
14639 </param>
14640 <param name="x" type="unsigned long" dir="in">
14641 <desc>
14642 Framebuffer x offset.
14643 </desc>
14644 </param>
14645 <param name="y" type="unsigned long" dir="in">
14646 <desc>
14647 Framebuffer y offset.
14648 </desc>
14649 </param>
14650 <param name="width" type="unsigned long" dir="in">
14651 <desc>
14652 Viewport width.
14653 </desc>
14654 </param>
14655 <param name="height" type="unsigned long" dir="in">
14656 <desc>
14657 Viewport height.
14658 </desc>
14659 </param>
14660 </method>
14661 </interface>
14662
14663 <!--
14664 // INetworkAdapter
14665 /////////////////////////////////////////////////////////////////////////
14666 -->
14667
14668 <enum
14669 name="NetworkAttachmentType"
14670 uuid="2ac4bc71-6b82-417a-acd1-f7426d2570d6"
14671 >
14672 <desc>
14673 Network attachment type.
14674 </desc>
14675
14676 <const name="Null" value="0">
14677 <desc>Null value, also means "not attached".</desc>
14678 </const>
14679 <const name="NAT" value="1"/>
14680 <const name="Bridged" value="2"/>
14681 <const name="Internal" value="3"/>
14682 <const name="HostOnly" value="4"/>
14683 <const name="Generic" value="5"/>
14684 </enum>
14685
14686 <enum
14687 name="NetworkAdapterType"
14688 uuid="3c2281e4-d952-4e87-8c7d-24379cb6a81c"
14689 >
14690 <desc>
14691 Network adapter type.
14692 </desc>
14693
14694 <const name="Null" value="0">
14695 <desc>Null value (never used by the API).</desc>
14696 </const>
14697 <const name="Am79C970A" value="1">
14698 <desc>AMD PCNet-PCI II network card (Am79C970A).</desc>
14699 </const>
14700 <const name="Am79C973" value="2">
14701 <desc>AMD PCNet-FAST III network card (Am79C973).</desc>
14702 </const>
14703 <const name="I82540EM" value="3">
14704 <desc>Intel PRO/1000 MT Desktop network card (82540EM).</desc>
14705 </const>
14706 <const name="I82543GC" value="4">
14707 <desc>Intel PRO/1000 T Server network card (82543GC).</desc>
14708 </const>
14709 <const name="I82545EM" value="5">
14710 <desc>Intel PRO/1000 MT Server network card (82545EM).</desc>
14711 </const>
14712 <const name="Virtio" value="6">
14713 <desc>Virtio network device.</desc>
14714 </const>
14715 </enum>
14716
14717 <enum
14718 name="NetworkAdapterPromiscModePolicy"
14719 uuid="c963768a-376f-4c85-8d84-d8ced4b7269e"
14720 >
14721 <desc>
14722 The promiscuous mode policy of an interface.
14723 </desc>
14724
14725 <const name="Deny" value="1">
14726 <desc>Deny promiscuous mode requests.</desc>
14727 </const>
14728 <const name="AllowNetwork" value="2">
14729 <desc>
14730 Allow promicuous mode, but restrict the scope it to the internal
14731 network so that it only applies to other VMs.
14732 </desc>
14733 </const>
14734 <const name="AllowAll" value="3">
14735 <desc>
14736 Allow promicuous mode, include unrelated traffic going over the wire
14737 and internally on the host.
14738 </desc>
14739 </const>
14740 </enum>
14741
14742 <interface
14743 name="INetworkAdapter" extends="$unknown"
14744 uuid="8b2e705c-0547-4008-b7bc-788757346092"
14745 wsmap="managed"
14746 >
14747 <desc>
14748 Represents a virtual network adapter that is attached to a virtual machine.
14749 Each virtual machine has a fixed number of network adapter slots with one
14750 instance of this attached to each of them. Call
14751 <link to="IMachine::getNetworkAdapter" /> to get the network adapter that
14752 is attached to a given slot in a given machine.
14753
14754 Each network adapter can be in one of five attachment modes, which are
14755 represented by the <link to="NetworkAttachmentType" /> enumeration;
14756 see the <link to="#attachmentType" /> attribute.
14757 </desc>
14758
14759 <attribute name="adapterType" type="NetworkAdapterType">
14760 <desc>
14761 Type of the virtual network adapter. Depending on this value,
14762 VirtualBox will provide a different virtual network hardware
14763 to the guest.
14764 </desc>
14765 </attribute>
14766
14767 <attribute name="slot" type="unsigned long" readonly="yes">
14768 <desc>
14769 Slot number this adapter is plugged into. Corresponds to
14770 the value you pass to <link to="IMachine::getNetworkAdapter"/>
14771 to obtain this instance.
14772 </desc>
14773 </attribute>
14774
14775 <attribute name="enabled" type="boolean">
14776 <desc>
14777 Flag whether the network adapter is present in the
14778 guest system. If disabled, the virtual guest hardware will
14779 not contain this network adapter. Can only be changed when
14780 the VM is not running.
14781 </desc>
14782 </attribute>
14783
14784 <attribute name="MACAddress" type="wstring">
14785 <desc>
14786 Ethernet MAC address of the adapter, 12 hexadecimal characters. When setting
14787 it to @c null or an empty string, VirtualBox will generate a unique MAC address.
14788 </desc>
14789 </attribute>
14790
14791 <attribute name="attachmentType" type="NetworkAttachmentType">
14792 <desc>
14793 Sets/Gets network attachment type of this network adapter.
14794 </desc>
14795 </attribute>
14796
14797 <attribute name="bridgedInterface" type="wstring">
14798 <desc>
14799 Name of the network interface the VM should be bridged to.
14800 </desc>
14801 </attribute>
14802
14803 <attribute name="hostOnlyInterface" type="wstring">
14804 <desc>
14805 Name of the host only network interface the VM is attached to.
14806 </desc>
14807 </attribute>
14808
14809 <attribute name="internalNetwork" type="wstring">
14810 <desc>
14811 Name of the internal network the VM is attached to.
14812 </desc>
14813 </attribute>
14814
14815 <attribute name="NATNetwork" type="wstring">
14816 <desc>
14817 Name of the NAT network the VM is attached to.
14818 </desc>
14819 </attribute>
14820
14821 <attribute name="genericDriver" type="wstring">
14822 <desc>
14823 Name of the driver to use for the "Generic" network attachment type.
14824 </desc>
14825 </attribute>
14826
14827 <attribute name="cableConnected" type="boolean">
14828 <desc>
14829 Flag whether the adapter reports the cable as connected or not.
14830 It can be used to report offline situations to a VM.
14831 </desc>
14832 </attribute>
14833
14834 <attribute name="lineSpeed" type="unsigned long">
14835 <desc>
14836 Line speed reported by custom drivers, in units of 1 kbps.
14837 </desc>
14838 </attribute>
14839
14840 <attribute name="promiscModePolicy" type="NetworkAdapterPromiscModePolicy">
14841 <desc>
14842 The promiscuous mode policy of the network adapter when attached to an
14843 internal network, host only network or a bridge.
14844 </desc>
14845 </attribute>
14846
14847 <attribute name="traceEnabled" type="boolean">
14848 <desc>
14849 Flag whether network traffic from/to the network card should be traced.
14850 Can only be toggled when the VM is turned off.
14851 </desc>
14852 </attribute>
14853
14854 <attribute name="traceFile" type="wstring">
14855 <desc>
14856 Filename where a network trace will be stored. If not set, VBox-pid.pcap
14857 will be used.
14858 </desc>
14859 </attribute>
14860
14861 <attribute name="natDriver" type="INATEngine" readonly="yes">
14862 <desc>
14863 Points to the NAT engine which handles the network address translation
14864 for this interface. This is active only when the interface actually uses
14865 NAT.
14866 </desc>
14867 </attribute>
14868
14869 <attribute name="bootPriority" type="unsigned long">
14870 <desc>
14871 Network boot priority of the adapter. Priority 1 is highest. If not set,
14872 the priority is considered to be at the lowest possible setting.
14873 </desc>
14874 </attribute>
14875
14876 <attribute name="bandwidthGroup" type="IBandwidthGroup">
14877 <desc>The bandwidth group this network adapter is assigned to.</desc>
14878 </attribute>
14879
14880 <!-- property methods -->
14881
14882 <method name="getProperty" const="yes">
14883 <desc>
14884 Returns the value of the network attachment property with the given name.
14885
14886 If the requested data @a key does not exist, this function will
14887 succeed and return an empty string in the @a value argument.
14888
14889 <result name="E_INVALIDARG">@a name is @c null or empty.</result>
14890 </desc>
14891 <param name="key" type="wstring" dir="in">
14892 <desc>Name of the property to get.</desc>
14893 </param>
14894 <param name="value" type="wstring" dir="return">
14895 <desc>Current property value.</desc>
14896 </param>
14897 </method>
14898
14899 <method name="setProperty">
14900 <desc>
14901 Sets the value of the network attachment property with the given name.
14902
14903 Setting the property value to @c null or an empty string is equivalent
14904 to deleting the existing value.
14905
14906 <result name="E_INVALIDARG">@a name is @c null or empty.</result>
14907 </desc>
14908 <param name="key" type="wstring" dir="in">
14909 <desc>Name of the property to set.</desc>
14910 </param>
14911 <param name="value" type="wstring" dir="in">
14912 <desc>Property value to set.</desc>
14913 </param>
14914 </method>
14915
14916 <method name="getProperties" const="yes">
14917 <desc>
14918 Returns values for a group of properties in one call.
14919
14920 The names of the properties to get are specified using the @a names
14921 argument which is a list of comma-separated property names or
14922 an empty string if all properties are to be returned.
14923 <note>Currently the value of this argument is ignored and the method
14924 always returns all existing properties.</note>
14925
14926 The method returns two arrays, the array of property names corresponding
14927 to the @a names argument and the current values of these properties.
14928 Both arrays have the same number of elements with each element at the
14929 given index in the first array corresponds to an element at the same
14930 index in the second array.
14931 </desc>
14932 <param name="names" type="wstring" dir="in">
14933 <desc>
14934 Names of properties to get.
14935 </desc>
14936 </param>
14937 <param name="returnNames" type="wstring" safearray="yes" dir="out">
14938 <desc>Names of returned properties.</desc>
14939 </param>
14940 <param name="returnValues" type="wstring" safearray="yes" dir="return">
14941 <desc>Values of returned properties.</desc>
14942 </param>
14943 </method>
14944
14945 </interface>
14946
14947
14948 <!--
14949 // ISerialPort
14950 /////////////////////////////////////////////////////////////////////////
14951 -->
14952
14953 <enum
14954 name="PortMode"
14955 uuid="533b5fe3-0185-4197-86a7-17e37dd39d76"
14956 >
14957 <desc>
14958 The PortMode enumeration represents possible communication modes for
14959 the virtual serial port device.
14960 </desc>
14961
14962 <const name="Disconnected" value="0">
14963 <desc>Virtual device is not attached to any real host device.</desc>
14964 </const>
14965 <const name="HostPipe" value="1">
14966 <desc>Virtual device is attached to a host pipe.</desc>
14967 </const>
14968 <const name="HostDevice" value="2">
14969 <desc>Virtual device is attached to a host device.</desc>
14970 </const>
14971 <const name="RawFile" value="3">
14972 <desc>Virtual device is attached to a raw file.</desc>
14973 </const>
14974 </enum>
14975
14976 <interface
14977 name="ISerialPort" extends="$unknown"
14978 uuid="937f6970-5103-4745-b78e-d28dcf1479a8"
14979 wsmap="managed"
14980 >
14981
14982 <desc>
14983 The ISerialPort interface represents the virtual serial port device.
14984
14985 The virtual serial port device acts like an ordinary serial port
14986 inside the virtual machine. This device communicates to the real
14987 serial port hardware in one of two modes: host pipe or host device.
14988
14989 In host pipe mode, the #path attribute specifies the path to the pipe on
14990 the host computer that represents a serial port. The #server attribute
14991 determines if this pipe is created by the virtual machine process at
14992 machine startup or it must already exist before starting machine
14993 execution.
14994
14995 In host device mode, the #path attribute specifies the name of the
14996 serial port device on the host computer.
14997
14998 There is also a third communication mode: the disconnected mode. In this
14999 mode, the guest OS running inside the virtual machine will be able to
15000 detect the serial port, but all port write operations will be discarded
15001 and all port read operations will return no data.
15002
15003 <see><link to="IMachine::getSerialPort"/></see>
15004 </desc>
15005
15006 <attribute name="slot" type="unsigned long" readonly="yes">
15007 <desc>
15008 Slot number this serial port is plugged into. Corresponds to
15009 the value you pass to <link to="IMachine::getSerialPort"/>
15010 to obtain this instance.
15011 </desc>
15012 </attribute>
15013
15014 <attribute name="enabled" type="boolean">
15015 <desc>
15016 Flag whether the serial port is enabled. If disabled,
15017 the serial port will not be reported to the guest OS.
15018 </desc>
15019 </attribute>
15020
15021 <attribute name="IOBase" type="unsigned long">
15022 <desc>Base I/O address of the serial port.</desc>
15023 </attribute>
15024
15025 <attribute name="IRQ" type="unsigned long">
15026 <desc>IRQ number of the serial port.</desc>
15027 </attribute>
15028
15029 <attribute name="hostMode" type="PortMode">
15030 <desc>
15031 How is this port connected to the host.
15032 <note>
15033 Changing this attribute may fail if the conditions for
15034 <link to="#path"/> are not met.
15035 </note>
15036 </desc>
15037 </attribute>
15038
15039 <attribute name="server" type="boolean">
15040 <desc>
15041 Flag whether this serial port acts as a server (creates a new pipe on
15042 the host) or as a client (uses the existing pipe). This attribute is
15043 used only when <link to="#hostMode"/> is PortMode_HostPipe.
15044 </desc>
15045 </attribute>
15046
15047 <attribute name="path" type="wstring">
15048 <desc>
15049 Path to the serial port's pipe on the host when <link to="ISerialPort::hostMode"/> is
15050 PortMode_HostPipe, or the host serial device name when
15051 <link to="ISerialPort::hostMode"/> is PortMode_HostDevice. For both
15052 cases, setting a @c null or empty string as the attribute's value
15053 is an error. Otherwise, the value of this property is ignored.
15054 </desc>
15055 </attribute>
15056
15057 </interface>
15058
15059 <!--
15060 // IParallelPort
15061 /////////////////////////////////////////////////////////////////////////
15062 -->
15063
15064 <interface
15065 name="IParallelPort" extends="$unknown"
15066 uuid="0c925f06-dd10-4b77-8de8-294d738c3214"
15067 wsmap="managed"
15068 >
15069
15070 <desc>
15071 The IParallelPort interface represents the virtual parallel port device.
15072
15073 The virtual parallel port device acts like an ordinary parallel port
15074 inside the virtual machine. This device communicates to the real
15075 parallel port hardware using the name of the parallel device on the host
15076 computer specified in the #path attribute.
15077
15078 Each virtual parallel port device is assigned a base I/O address and an
15079 IRQ number that will be reported to the guest operating system and used
15080 to operate the given parallel port from within the virtual machine.
15081
15082 <see><link to="IMachine::getParallelPort"/></see>
15083 </desc>
15084
15085 <attribute name="slot" type="unsigned long" readonly="yes">
15086 <desc>
15087 Slot number this parallel port is plugged into. Corresponds to
15088 the value you pass to <link to="IMachine::getParallelPort"/>
15089 to obtain this instance.
15090 </desc>
15091 </attribute>
15092
15093 <attribute name="enabled" type="boolean">
15094 <desc>
15095 Flag whether the parallel port is enabled. If disabled,
15096 the parallel port will not be reported to the guest OS.
15097 </desc>
15098 </attribute>
15099
15100 <attribute name="IOBase" type="unsigned long">
15101 <desc>Base I/O address of the parallel port.</desc>
15102 </attribute>
15103
15104 <attribute name="IRQ" type="unsigned long">
15105 <desc>IRQ number of the parallel port.</desc>
15106 </attribute>
15107
15108 <attribute name="path" type="wstring">
15109 <desc>
15110 Host parallel device name. If this parallel port is enabled, setting a
15111 @c null or an empty string as this attribute's value will result in
15112 an error.
15113 </desc>
15114 </attribute>
15115
15116 </interface>
15117
15118
15119 <!--
15120 // IMachineDebugger
15121 /////////////////////////////////////////////////////////////////////////
15122 -->
15123
15124 <interface
15125 name="IMachineDebugger" extends="$unknown"
15126 uuid="a9abbb7c-d678-43b2-bed2-19ec0e32303d"
15127 wsmap="suppress"
15128 >
15129 <method name="dumpGuestCore">
15130 <desc>
15131 Takes a core dump of the guest.
15132
15133 See include/VBox/dbgfcorefmt.h for details on the file format.
15134 </desc>
15135 <param name="filename" type="wstring" dir="in">
15136 <desc>
15137 The name of the output file. The file must not exist.
15138 </desc>
15139 </param>
15140 <param name="compression" type="wstring" dir="in">
15141 <desc>
15142 Reserved for future compression method indicator.
15143 </desc>
15144 </param>
15145 </method>
15146
15147 <method name="dumpHostProcessCore">
15148 <desc>
15149 Takes a core dump of the VM process on the host.
15150
15151 This feature is not implemented in the 4.0.0 release but it may show up
15152 in a dot release.
15153 </desc>
15154 <param name="filename" type="wstring" dir="in">
15155 <desc>
15156 The name of the output file. The file must not exist.
15157 </desc>
15158 </param>
15159 <param name="compression" type="wstring" dir="in">
15160 <desc>
15161 Reserved for future compression method indicator.
15162 </desc>
15163 </param>
15164 </method>
15165
15166 <method name="info">
15167 <desc>
15168 Interfaces with the info dumpers (DBGFInfo).
15169
15170 This feature is not implemented in the 4.0.0 release but it may show up
15171 in a dot release.
15172 </desc>
15173 <param name="name" type="wstring" dir="in">
15174 <desc>
15175 The name of the info item.
15176 </desc>
15177 </param>
15178 <param name="args" type="wstring" dir="in">
15179 <desc>
15180 Arguments to the info dumper.
15181 </desc>
15182 </param>
15183 <param name="info" type="wstring" dir="return">
15184 <desc>
15185 The into string.
15186 </desc>
15187 </param>
15188 </method>
15189
15190 <method name="injectNMI">
15191 <desc>
15192 Inject an NMI into a running VT-x/AMD-V VM.
15193 </desc>
15194 </method>
15195
15196 <method name="modifyLogGroups">
15197 <desc>
15198 Modifies the group settings of the debug or release logger.
15199 </desc>
15200 <param name="settings" type="wstring" dir="in">
15201 <desc>
15202 The group settings string. See iprt/log.h for details. To target the
15203 release logger, prefix the string with "release:".
15204 </desc>
15205 </param>
15206 </method>
15207
15208 <method name="modifyLogFlags">
15209 <desc>
15210 Modifies the debug or release logger flags.
15211 </desc>
15212 <param name="settings" type="wstring" dir="in">
15213 <desc>
15214 The flags settings string. See iprt/log.h for details. To target the
15215 release logger, prefix the string with "release:".
15216 </desc>
15217 </param>
15218 </method>
15219
15220 <method name="modifyLogDestinations">
15221 <desc>
15222 Modifies the debug or release logger destinations.
15223 </desc>
15224 <param name="settings" type="wstring" dir="in">
15225 <desc>
15226 The destination settings string. See iprt/log.h for details. To target the
15227 release logger, prefix the string with "release:".
15228 </desc>
15229 </param>
15230 </method>
15231
15232 <method name="readPhysicalMemory">
15233 <desc>
15234 Reads guest physical memory, no side effects (MMIO++).
15235
15236 This feature is not implemented in the 4.0.0 release but may show up
15237 in a dot release.
15238 </desc>
15239 <param name="address" type="long long" dir="in">
15240 <desc>The guest physical address.</desc>
15241 </param>
15242 <param name="size" type="unsigned long" dir="in">
15243 <desc>The number of bytes to read.</desc>
15244 </param>
15245 <param name="bytes" type="octet" safearray="yes" dir="return">
15246 <desc>The bytes read.</desc>
15247 </param>
15248 </method>
15249
15250 <method name="writePhysicalMemory">
15251 <desc>
15252 Writes guest physical memory, access handles (MMIO++) are ignored.
15253
15254 This feature is not implemented in the 4.0.0 release but may show up
15255 in a dot release.
15256 </desc>
15257 <param name="address" type="long long" dir="in">
15258 <desc>The guest physical address.</desc>
15259 </param>
15260 <param name="size" type="unsigned long" dir="in">
15261 <desc>The number of bytes to read.</desc>
15262 </param>
15263 <param name="bytes" type="octet" safearray="yes" dir="in">
15264 <desc>The bytes to write.</desc>
15265 </param>
15266 </method>
15267
15268 <method name="readVirtualMemory">
15269 <desc>
15270 Reads guest virtual memory, no side effects (MMIO++).
15271
15272 This feature is not implemented in the 4.0.0 release but may show up
15273 in a dot release.
15274 </desc>
15275 <param name="cpuId" type="unsigned long" dir="in">
15276 <desc>The identifier of the Virtual CPU.</desc>
15277 </param>
15278 <param name="address" type="long long" dir="in">
15279 <desc>The guest virtual address.</desc>
15280 </param>
15281 <param name="size" type="unsigned long" dir="in">
15282 <desc>The number of bytes to read.</desc>
15283 </param>
15284 <param name="bytes" type="octet" safearray="yes" dir="return">
15285 <desc>The bytes read.</desc>
15286 </param>
15287 </method>
15288
15289 <method name="writeVirtualMemory">
15290 <desc>
15291 Writes guest virtual memory, access handles (MMIO++) are ignored.
15292
15293 This feature is not implemented in the 4.0.0 release but may show up
15294 in a dot release.
15295 </desc>
15296 <param name="cpuId" type="unsigned long" dir="in">
15297 <desc>The identifier of the Virtual CPU.</desc>
15298 </param>
15299 <param name="address" type="long long" dir="in">
15300 <desc>The guest virtual address.</desc>
15301 </param>
15302 <param name="size" type="unsigned long" dir="in">
15303 <desc>The number of bytes to read.</desc>
15304 </param>
15305 <param name="bytes" type="octet" safearray="yes" dir="in">
15306 <desc>The bytes to write.</desc>
15307 </param>
15308 </method>
15309
15310 <method name="detectOS">
15311 <desc>
15312 Tries to (re-)detect the guest OS kernel.
15313
15314 This feature is not implemented in the 4.0.0 release but may show up
15315 in a dot release.
15316 </desc>
15317 <param name="os" type="wstring" dir="return">
15318 <desc>
15319 The detected OS kernel on success.
15320 </desc>
15321 </param>
15322 </method>
15323
15324 <method name="getRegister">
15325 <desc>
15326 Gets one register.
15327
15328 This feature is not implemented in the 4.0.0 release but may show up
15329 in a dot release.
15330 </desc>
15331 <param name="cpuId" type="unsigned long" dir="in">
15332 <desc>The identifier of the Virtual CPU.</desc>
15333 </param>
15334 <param name="name" type="wstring" dir="in">
15335 <desc>The register name, case is ignored.</desc>
15336 </param>
15337 <param name="value" type="wstring" dir="return">
15338 <desc>
15339 The register value. This is usually a hex value (always 0x prefixed)
15340 but other format may be used for floating point registers (TBD).
15341 </desc>
15342 </param>
15343 </method>
15344
15345 <method name="getRegisters">
15346 <desc>
15347 Gets all the registers for the given CPU.
15348
15349 This feature is not implemented in the 4.0.0 release but may show up
15350 in a dot release.
15351 </desc>
15352 <param name="cpuId" type="unsigned long" dir="in">
15353 <desc>The identifier of the Virtual CPU.</desc>
15354 </param>
15355 <param name="names" type="wstring" dir="out" safearray="yes">
15356 <desc>Array containing the lowercase register names.</desc>
15357 </param>
15358 <param name="values" type="wstring" dir="out" safearray="yes">
15359 <desc>
15360 Array paralell to the names holding the register values as if the
15361 register was returned by <link to="IMachineDebugger::getRegister"/>.
15362 </desc>
15363 </param>
15364 </method>
15365
15366 <method name="setRegister">
15367 <desc>
15368 Gets one register.
15369
15370 This feature is not implemented in the 4.0.0 release but may show up
15371 in a dot release.
15372 </desc>
15373 <param name="cpuId" type="unsigned long" dir="in">
15374 <desc>The identifier of the Virtual CPU.</desc>
15375 </param>
15376 <param name="name" type="wstring" dir="in">
15377 <desc>The register name, case is ignored.</desc>
15378 </param>
15379 <param name="value" type="wstring" dir="in">
15380 <desc>
15381 The new register value. Hexadecimal, decimal and octal formattings
15382 are supported in addition to any special formattings returned by
15383 the getters.
15384 </desc>
15385 </param>
15386 </method>
15387
15388 <method name="setRegisters">
15389 <desc>
15390 Sets zero or more registers atomically.
15391
15392 This feature is not implemented in the 4.0.0 release but may show up
15393 in a dot release.
15394 </desc>
15395 <param name="cpuId" type="unsigned long" dir="in">
15396 <desc>The identifier of the Virtual CPU.</desc>
15397 </param>
15398 <param name="names" type="wstring" dir="in" safearray="yes">
15399 <desc>Array containing the register names, case ignored.</desc>
15400 </param>
15401 <param name="values" type="wstring" dir="in" safearray="yes">
15402 <desc>
15403 Array paralell to the names holding the register values. See
15404 <link to="IMachineDebugger::setRegister"/> for formatting
15405 guidelines.
15406 </desc>
15407 </param>
15408 </method>
15409
15410 <method name="dumpGuestStack">
15411 <desc>
15412 Produce a simple stack dump using the current guest state.
15413
15414 This feature is not implemented in the 4.0.0 release but may show up
15415 in a dot release.
15416 </desc>
15417 <param name="cpuId" type="unsigned long" dir="in">
15418 <desc>The identifier of the Virtual CPU.</desc>
15419 </param>
15420 <param name="stack" type="wstring" dir="return">
15421 <desc>String containing the formatted stack dump.</desc>
15422 </param>
15423 </method>
15424
15425 <method name="resetStats">
15426 <desc>
15427 Reset VM statistics.
15428 </desc>
15429 <param name="pattern" type="wstring" dir="in">
15430 <desc>The selection pattern. A bit similar to filename globbing.</desc>
15431 </param>
15432 </method>
15433
15434 <method name="dumpStats">
15435 <desc>
15436 Dumps VM statistics.
15437 </desc>
15438 <param name="pattern" type="wstring" dir="in">
15439 <desc>The selection pattern. A bit similar to filename globbing.</desc>
15440 </param>
15441 </method>
15442
15443 <method name="getStats">
15444 <desc>
15445 Get the VM statistics in a XMLish format.
15446 </desc>
15447 <param name="pattern" type="wstring" dir="in">
15448 <desc>The selection pattern. A bit similar to filename globbing.</desc>
15449 </param>
15450 <param name="withDescriptions" type="boolean" dir="in">
15451 <desc>Whether to include the descriptions.</desc>
15452 </param>
15453 <param name="stats" type="wstring" dir="out">
15454 <desc>The XML document containing the statistics.</desc>
15455 </param>
15456 </method>
15457
15458 <attribute name="singleStep" type="boolean">
15459 <desc>Switch for enabling single-stepping.</desc>
15460 </attribute>
15461
15462 <attribute name="recompileUser" type="boolean">
15463 <desc>Switch for forcing code recompilation for user mode code.</desc>
15464 </attribute>
15465
15466 <attribute name="recompileSupervisor" type="boolean">
15467 <desc>Switch for forcing code recompilation for supervisor mode code.</desc>
15468 </attribute>
15469
15470 <attribute name="PATMEnabled" type="boolean">
15471 <desc>Switch for enabling and disabling the PATM component.</desc>
15472 </attribute>
15473
15474 <attribute name="CSAMEnabled" type="boolean">
15475 <desc>Switch for enabling and disabling the CSAM component.</desc>
15476 </attribute>
15477
15478 <attribute name="logEnabled" type="boolean">
15479 <desc>Switch for enabling and disabling the debug logger.</desc>
15480 </attribute>
15481
15482 <attribute name="logDbgFlags" type="wstring" readonly="yes">
15483 <desc>The debug logger flags.</desc>
15484 </attribute>
15485
15486 <attribute name="logDbgGroups" type="wstring" readonly="yes">
15487 <desc>The debug logger's group settings.</desc>
15488 </attribute>
15489
15490 <attribute name="logDbgDestinations" type="wstring" readonly="yes">
15491 <desc>The debug logger's destination settings.</desc>
15492 </attribute>
15493
15494 <attribute name="logRelFlags" type="wstring" readonly="yes">
15495 <desc>The release logger flags.</desc>
15496 </attribute>
15497
15498 <attribute name="logRelGroups" type="wstring" readonly="yes">
15499 <desc>The release logger's group settings.</desc>
15500 </attribute>
15501
15502 <attribute name="logRelDestinations" type="wstring" readonly="yes">
15503 <desc>The relase logger's destination settings.</desc>
15504 </attribute>
15505
15506 <attribute name="HWVirtExEnabled" type="boolean" readonly="yes">
15507 <desc>
15508 Flag indicating whether the VM is currently making use of CPU hardware
15509 virtualization extensions.
15510 </desc>
15511 </attribute>
15512
15513 <attribute name="HWVirtExNestedPagingEnabled" type="boolean" readonly="yes">
15514 <desc>
15515 Flag indicating whether the VM is currently making use of the nested paging
15516 CPU hardware virtualization extension.
15517 </desc>
15518 </attribute>
15519
15520 <attribute name="HWVirtExVPIDEnabled" type="boolean" readonly="yes">
15521 <desc>
15522 Flag indicating whether the VM is currently making use of the VPID
15523 VT-x extension.
15524 </desc>
15525 </attribute>
15526
15527 <attribute name="OSName" type="wstring" readonly="yes">
15528 <desc>
15529 Query the guest OS kernel name as detected by the DBGF.
15530
15531 This feature is not implemented in the 4.0.0 release but may show up
15532 in a dot release.
15533 </desc>
15534 </attribute>
15535
15536 <attribute name="OSVersion" type="wstring" readonly="yes">
15537 <desc>
15538 Query the guest OS kernel version string as detected by the DBGF.
15539
15540 This feature is not implemented in the 4.0.0 release but may show up
15541 in a dot release.
15542 </desc>
15543 </attribute>
15544
15545 <attribute name="PAEEnabled" type="boolean" readonly="yes">
15546 <desc>
15547 Flag indicating whether the VM is currently making use of the Physical
15548 Address Extension CPU feature.
15549 </desc>
15550 </attribute>
15551
15552 <attribute name="virtualTimeRate" type="unsigned long">
15553 <desc>
15554 The rate at which the virtual time runs expressed as a percentage.
15555 The accepted range is 2% to 20000%.
15556 </desc>
15557 </attribute>
15558
15559 <attribute name="VM" type="long long" readonly="yes">
15560 <desc>
15561 Gets the VM handle. This is only for internal use while
15562 we carve the details of this interface.
15563 </desc>
15564 </attribute>
15565
15566 </interface>
15567
15568 <!--
15569 // IUSBController
15570 /////////////////////////////////////////////////////////////////////////
15571 -->
15572
15573 <interface
15574 name="IUSBController" extends="$unknown"
15575 uuid="6fdcccc5-abd3-4fec-9387-2ad3914fc4a8"
15576 wsmap="managed"
15577 >
15578 <attribute name="enabled" type="boolean">
15579 <desc>
15580 Flag whether the USB controller is present in the
15581 guest system. If disabled, the virtual guest hardware will
15582 not contain any USB controller. Can only be changed when
15583 the VM is powered off.
15584 </desc>
15585 </attribute>
15586
15587 <attribute name="enabledEhci" type="boolean">
15588 <desc>
15589 Flag whether the USB EHCI controller is present in the
15590 guest system. If disabled, the virtual guest hardware will
15591 not contain a USB EHCI controller. Can only be changed when
15592 the VM is powered off.
15593 </desc>
15594 </attribute>
15595
15596 <attribute name="proxyAvailable" type="boolean" readonly="yes">
15597 <desc>
15598 Flag whether there is an USB proxy available.
15599 </desc>
15600 </attribute>
15601
15602 <attribute name="USBStandard" type="unsigned short" readonly="yes">
15603 <desc>
15604 USB standard version which the controller implements.
15605 This is a BCD which means that the major version is in the
15606 high byte and minor version is in the low byte.
15607 </desc>
15608 </attribute>
15609
15610 <attribute name="deviceFilters" type="IUSBDeviceFilter" readonly="yes" safearray="yes">
15611 <desc>
15612 List of USB device filters associated with the machine.
15613
15614 If the machine is currently running, these filters are activated
15615 every time a new (supported) USB device is attached to the host
15616 computer that was not ignored by global filters
15617 (<link to="IHost::USBDeviceFilters"/>).
15618
15619 These filters are also activated when the machine is powered up.
15620 They are run against a list of all currently available USB
15621 devices (in states
15622 <link to="USBDeviceState_Available"/>,
15623 <link to="USBDeviceState_Busy"/>,
15624 <link to="USBDeviceState_Held"/>) that were not previously
15625 ignored by global filters.
15626
15627 If at least one filter matches the USB device in question, this
15628 device is automatically captured (attached to) the virtual USB
15629 controller of this machine.
15630
15631 <see><link to="IUSBDeviceFilter"/>, <link to="IUSBController"/></see>
15632 </desc>
15633 </attribute>
15634
15635 <method name="createDeviceFilter">
15636 <desc>
15637 Creates a new USB device filter. All attributes except
15638 the filter name are set to empty (any match),
15639 <i>active</i> is @c false (the filter is not active).
15640
15641 The created filter can then be added to the list of filters using
15642 <link to="#insertDeviceFilter"/>.
15643
15644 <result name="VBOX_E_INVALID_VM_STATE">
15645 The virtual machine is not mutable.
15646 </result>
15647
15648 <see><link to="#deviceFilters"/></see>
15649 </desc>
15650 <param name="name" type="wstring" dir="in">
15651 <desc>
15652 Filter name. See <link to="IUSBDeviceFilter::name"/>
15653 for more info.
15654 </desc>
15655 </param>
15656 <param name="filter" type="IUSBDeviceFilter" dir="return">
15657 <desc>Created filter object.</desc>
15658 </param>
15659 </method>
15660
15661 <method name="insertDeviceFilter">
15662 <desc>
15663 Inserts the given USB device to the specified position
15664 in the list of filters.
15665
15666 Positions are numbered starting from <tt>0</tt>. If the specified
15667 position is equal to or greater than the number of elements in
15668 the list, the filter is added to the end of the collection.
15669
15670 <note>
15671 Duplicates are not allowed, so an attempt to insert a
15672 filter that is already in the collection, will return an
15673 error.
15674 </note>
15675
15676 <result name="VBOX_E_INVALID_VM_STATE">
15677 Virtual machine is not mutable.
15678 </result>
15679 <result name="E_INVALIDARG">
15680 USB device filter not created within this VirtualBox instance.
15681 </result>
15682 <result name="VBOX_E_INVALID_OBJECT_STATE">
15683 USB device filter already in list.
15684 </result>
15685
15686 <see><link to="#deviceFilters"/></see>
15687 </desc>
15688 <param name="position" type="unsigned long" dir="in">
15689 <desc>Position to insert the filter to.</desc>
15690 </param>
15691 <param name="filter" type="IUSBDeviceFilter" dir="in">
15692 <desc>USB device filter to insert.</desc>
15693 </param>
15694 </method>
15695
15696 <method name="removeDeviceFilter">
15697 <desc>
15698 Removes a USB device filter from the specified position in the
15699 list of filters.
15700
15701 Positions are numbered starting from <tt>0</tt>. Specifying a
15702 position equal to or greater than the number of elements in
15703 the list will produce an error.
15704
15705 <see><link to="#deviceFilters"/></see>
15706
15707 <result name="VBOX_E_INVALID_VM_STATE">
15708 Virtual machine is not mutable.
15709 </result>
15710 <result name="E_INVALIDARG">
15711 USB device filter list empty or invalid @a position.
15712 </result>
15713
15714 </desc>
15715 <param name="position" type="unsigned long" dir="in">
15716 <desc>Position to remove the filter from.</desc>
15717 </param>
15718 <param name="filter" type="IUSBDeviceFilter" dir="return">
15719 <desc>Removed USB device filter.</desc>
15720 </param>
15721 </method>
15722
15723 </interface>
15724
15725
15726 <!--
15727 // IUSBDevice
15728 /////////////////////////////////////////////////////////////////////////
15729 -->
15730
15731 <interface
15732 name="IUSBDevice" extends="$unknown"
15733 uuid="f8967b0b-4483-400f-92b5-8b675d98a85b"
15734 wsmap="managed"
15735 >
15736 <desc>
15737 The IUSBDevice interface represents a virtual USB device attached to the
15738 virtual machine.
15739
15740 A collection of objects implementing this interface is stored in the
15741 <link to="IConsole::USBDevices"/> attribute which lists all USB devices
15742 attached to a running virtual machine's USB controller.
15743 </desc>
15744
15745 <attribute name="id" type="uuid" mod="string" readonly="yes">
15746 <desc>
15747 Unique USB device ID. This ID is built from #vendorId,
15748 #productId, #revision and #serialNumber.
15749 </desc>
15750 </attribute>
15751
15752 <attribute name="vendorId" type="unsigned short" readonly="yes">
15753 <desc>Vendor ID.</desc>
15754 </attribute>
15755
15756 <attribute name="productId" type="unsigned short" readonly="yes">
15757 <desc>Product ID.</desc>
15758 </attribute>
15759
15760 <attribute name="revision" type="unsigned short" readonly="yes">
15761 <desc>
15762 Product revision number. This is a packed BCD represented as
15763 unsigned short. The high byte is the integer part and the low
15764 byte is the decimal.
15765 </desc>
15766 </attribute>
15767
15768 <attribute name="manufacturer" type="wstring" readonly="yes">
15769 <desc>Manufacturer string.</desc>
15770 </attribute>
15771
15772 <attribute name="product" type="wstring" readonly="yes">
15773 <desc>Product string.</desc>
15774 </attribute>
15775
15776 <attribute name="serialNumber" type="wstring" readonly="yes">
15777 <desc>Serial number string.</desc>
15778 </attribute>
15779
15780 <attribute name="address" type="wstring" readonly="yes">
15781 <desc>Host specific address of the device.</desc>
15782 </attribute>
15783
15784 <attribute name="port" type="unsigned short" readonly="yes">
15785 <desc>
15786 Host USB port number the device is physically
15787 connected to.
15788 </desc>
15789 </attribute>
15790
15791 <attribute name="version" type="unsigned short" readonly="yes">
15792 <desc>
15793 The major USB version of the device - 1 or 2.
15794 </desc>
15795 </attribute>
15796
15797 <attribute name="portVersion" type="unsigned short" readonly="yes">
15798 <desc>
15799 The major USB version of the host USB port the device is
15800 physically connected to - 1 or 2. For devices not connected to
15801 anything this will have the same value as the version attribute.
15802 </desc>
15803 </attribute>
15804
15805 <attribute name="remote" type="boolean" readonly="yes">
15806 <desc>
15807 Whether the device is physically connected to a remote VRDE
15808 client or to a local host machine.
15809 </desc>
15810 </attribute>
15811
15812 </interface>
15813
15814
15815 <!--
15816 // IUSBDeviceFilter
15817 /////////////////////////////////////////////////////////////////////////
15818 -->
15819
15820 <interface
15821 name="IUSBDeviceFilter" extends="$unknown"
15822 uuid="d6831fb4-1a94-4c2c-96ef-8d0d6192066d"
15823 wsmap="managed"
15824 >
15825 <desc>
15826 The IUSBDeviceFilter interface represents an USB device filter used
15827 to perform actions on a group of USB devices.
15828
15829 This type of filters is used by running virtual machines to
15830 automatically capture selected USB devices once they are physically
15831 attached to the host computer.
15832
15833 A USB device is matched to the given device filter if and only if all
15834 attributes of the device match the corresponding attributes of the
15835 filter (that is, attributes are joined together using the logical AND
15836 operation). On the other hand, all together, filters in the list of
15837 filters carry the semantics of the logical OR operation. So if it is
15838 desirable to create a match like "this vendor id OR this product id",
15839 one needs to create two filters and specify "any match" (see below)
15840 for unused attributes.
15841
15842 All filter attributes used for matching are strings. Each string
15843 is an expression representing a set of values of the corresponding
15844 device attribute, that will match the given filter. Currently, the
15845 following filtering expressions are supported:
15846
15847 <ul>
15848 <li><i>Interval filters</i>. Used to specify valid intervals for
15849 integer device attributes (Vendor ID, Product ID and Revision).
15850 The format of the string is:
15851
15852 <tt>int:((m)|([m]-[n]))(,(m)|([m]-[n]))*</tt>
15853
15854 where <tt>m</tt> and <tt>n</tt> are integer numbers, either in octal
15855 (starting from <tt>0</tt>), hexadecimal (starting from <tt>0x</tt>)
15856 or decimal (otherwise) form, so that <tt>m &lt; n</tt>. If <tt>m</tt>
15857 is omitted before a dash (<tt>-</tt>), the minimum possible integer
15858 is assumed; if <tt>n</tt> is omitted after a dash, the maximum
15859 possible integer is assumed.
15860 </li>
15861 <li><i>Boolean filters</i>. Used to specify acceptable values for
15862 boolean device attributes. The format of the string is:
15863
15864 <tt>true|false|yes|no|0|1</tt>
15865
15866 </li>
15867 <li><i>Exact match</i>. Used to specify a single value for the given
15868 device attribute. Any string that doesn't start with <tt>int:</tt>
15869 represents the exact match. String device attributes are compared to
15870 this string including case of symbols. Integer attributes are first
15871 converted to a string (see individual filter attributes) and then
15872 compared ignoring case.
15873
15874 </li>
15875 <li><i>Any match</i>. Any value of the corresponding device attribute
15876 will match the given filter. An empty or @c null string is
15877 used to construct this type of filtering expressions.
15878
15879 </li>
15880 </ul>
15881
15882 <note>
15883 On the Windows host platform, interval filters are not currently
15884 available. Also all string filter attributes
15885 (<link to="#manufacturer"/>, <link to="#product"/>,
15886 <link to="#serialNumber"/>) are ignored, so they behave as
15887 <i>any match</i> no matter what string expression is specified.
15888 </note>
15889
15890 <see><link to="IUSBController::deviceFilters"/>,
15891 <link to="IHostUSBDeviceFilter"/></see>
15892 </desc>
15893
15894 <attribute name="name" type="wstring">
15895 <desc>
15896 Visible name for this filter.
15897 This name is used to visually distinguish one filter from another,
15898 so it can neither be @c null nor an empty string.
15899 </desc>
15900 </attribute>
15901
15902 <attribute name="active" type="boolean">
15903 <desc>Whether this filter active or has been temporarily disabled.</desc>
15904 </attribute>
15905
15906 <attribute name="vendorId" type="wstring">
15907 <desc>
15908 <link to="IUSBDevice::vendorId">Vendor ID</link> filter.
15909 The string representation for the <i>exact matching</i>
15910 has the form <tt>XXXX</tt>, where <tt>X</tt> is the hex digit
15911 (including leading zeroes).
15912 </desc>
15913 </attribute>
15914
15915 <attribute name="productId" type="wstring">
15916 <desc>
15917 <link to="IUSBDevice::productId">Product ID</link> filter.
15918 The string representation for the <i>exact matching</i>
15919 has the form <tt>XXXX</tt>, where <tt>X</tt> is the hex digit
15920 (including leading zeroes).
15921 </desc>
15922 </attribute>
15923
15924 <attribute name="revision" type="wstring">
15925 <desc>
15926 <link to="IUSBDevice::productId">Product revision number</link>
15927 filter. The string representation for the <i>exact matching</i>
15928 has the form <tt>IIFF</tt>, where <tt>I</tt> is the decimal digit
15929 of the integer part of the revision, and <tt>F</tt> is the
15930 decimal digit of its fractional part (including leading and
15931 trailing zeros).
15932 Note that for interval filters, it's best to use the hexadecimal
15933 form, because the revision is stored as a 16 bit packed BCD value;
15934 so the expression <tt>int:0x0100-0x0199</tt> will match any
15935 revision from <tt>1.0</tt> to <tt>1.99</tt>.
15936 </desc>
15937 </attribute>
15938
15939 <attribute name="manufacturer" type="wstring">
15940 <desc>
15941 <link to="IUSBDevice::manufacturer">Manufacturer</link> filter.
15942 </desc>
15943 </attribute>
15944
15945 <attribute name="product" type="wstring">
15946 <desc>
15947 <link to="IUSBDevice::product">Product</link> filter.
15948 </desc>
15949 </attribute>
15950
15951 <attribute name="serialNumber" type="wstring">
15952 <desc>
15953 <link to="IUSBDevice::serialNumber">Serial number</link> filter.
15954 </desc>
15955 </attribute>
15956
15957 <attribute name="port" type="wstring">
15958 <desc>
15959 <link to="IUSBDevice::port">Host USB port</link> filter.
15960 </desc>
15961 </attribute>
15962
15963 <attribute name="remote" type="wstring">
15964 <desc>
15965 <link to="IUSBDevice::remote">Remote state</link> filter.
15966 <note>
15967 This filter makes sense only for machine USB filters,
15968 i.e. it is ignored by IHostUSBDeviceFilter objects.
15969 </note>
15970 </desc>
15971 </attribute>
15972
15973 <attribute name="maskedInterfaces" type="unsigned long">
15974 <desc>
15975 This is an advanced option for hiding one or more USB interfaces
15976 from the guest. The value is a bit mask where the bits that are set
15977 means the corresponding USB interface should be hidden, masked off
15978 if you like.
15979 This feature only works on Linux hosts.
15980 </desc>
15981 </attribute>
15982
15983 </interface>
15984
15985
15986 <!--
15987 // IHostUSBDevice
15988 /////////////////////////////////////////////////////////////////////////
15989 -->
15990
15991 <enum
15992 name="USBDeviceState"
15993 uuid="b99a2e65-67fb-4882-82fd-f3e5e8193ab4"
15994 >
15995 <desc>
15996 USB device state. This enumeration represents all possible states
15997 of the USB device physically attached to the host computer regarding
15998 its state on the host computer and availability to guest computers
15999 (all currently running virtual machines).
16000
16001 Once a supported USB device is attached to the host, global USB
16002 filters (<link to="IHost::USBDeviceFilters"/>) are activated. They can
16003 either ignore the device, or put it to USBDeviceState_Held state, or do
16004 nothing. Unless the device is ignored by global filters, filters of all
16005 currently running guests (<link to="IUSBController::deviceFilters"/>) are
16006 activated that can put it to USBDeviceState_Captured state.
16007
16008 If the device was ignored by global filters, or didn't match
16009 any filters at all (including guest ones), it is handled by the host
16010 in a normal way. In this case, the device state is determined by
16011 the host and can be one of USBDeviceState_Unavailable, USBDeviceState_Busy
16012 or USBDeviceState_Available, depending on the current device usage.
16013
16014 Besides auto-capturing based on filters, the device can be manually
16015 captured by guests (<link to="IConsole::attachUSBDevice"/>) if its
16016 state is USBDeviceState_Busy, USBDeviceState_Available or
16017 USBDeviceState_Held.
16018
16019 <note>
16020 Due to differences in USB stack implementations in Linux and Win32,
16021 states USBDeviceState_Busy and USBDeviceState_Unavailable are applicable
16022 only to the Linux version of the product. This also means that (<link
16023 to="IConsole::attachUSBDevice"/>) can only succeed on Win32 if the
16024 device state is USBDeviceState_Held.
16025 </note>
16026
16027 <see><link to="IHostUSBDevice"/>, <link to="IHostUSBDeviceFilter"/></see>
16028 </desc>
16029
16030 <const name="NotSupported" value="0">
16031 <desc>
16032 Not supported by the VirtualBox server, not available to guests.
16033 </desc>
16034 </const>
16035 <const name="Unavailable" value="1">
16036 <desc>
16037 Being used by the host computer exclusively,
16038 not available to guests.
16039 </desc>
16040 </const>
16041 <const name="Busy" value="2">
16042 <desc>
16043 Being used by the host computer, potentially available to guests.
16044 </desc>
16045 </const>
16046 <const name="Available" value="3">
16047 <desc>
16048 Not used by the host computer, available to guests (the host computer
16049 can also start using the device at any time).
16050 </desc>
16051 </const>
16052 <const name="Held" value="4">
16053 <desc>
16054 Held by the VirtualBox server (ignored by the host computer),
16055 available to guests.
16056 </desc>
16057 </const>
16058 <const name="Captured" value="5">
16059 <desc>
16060 Captured by one of the guest computers, not available
16061 to anybody else.
16062 </desc>
16063 </const>
16064 </enum>
16065
16066 <interface
16067 name="IHostUSBDevice" extends="IUSBDevice"
16068 uuid="173b4b44-d268-4334-a00d-b6521c9a740a"
16069 wsmap="managed"
16070 >
16071 <desc>
16072 The IHostUSBDevice interface represents a physical USB device attached
16073 to the host computer.
16074
16075 Besides properties inherited from IUSBDevice, this interface adds the
16076 <link to="#state"/> property that holds the current state of the USB
16077 device.
16078
16079 <see><link to="IHost::USBDevices"/>,
16080 <link to="IHost::USBDeviceFilters"/></see>
16081 </desc>
16082
16083 <attribute name="state" type="USBDeviceState" readonly="yes">
16084 <desc>
16085 Current state of the device.
16086 </desc>
16087 </attribute>
16088
16089 <!-- @todo add class, subclass, bandwidth, configs, interfaces endpoints and such later. -->
16090
16091 </interface>
16092
16093
16094 <!--
16095 // IHostUSBDeviceFilter
16096 /////////////////////////////////////////////////////////////////////////
16097 -->
16098
16099 <enum
16100 name="USBDeviceFilterAction"
16101 uuid="cbc30a49-2f4e-43b5-9da6-121320475933"
16102 >
16103 <desc>
16104 Actions for host USB device filters.
16105 <see><link to="IHostUSBDeviceFilter"/>, <link to="USBDeviceState"/></see>
16106 </desc>
16107
16108 <const name="Null" value="0">
16109 <desc>Null value (never used by the API).</desc>
16110 </const>
16111 <const name="Ignore" value="1">
16112 <desc>Ignore the matched USB device.</desc>
16113 </const>
16114 <const name="Hold" value="2">
16115 <desc>Hold the matched USB device.</desc>
16116 </const>
16117 </enum>
16118
16119 <interface
16120 name="IHostUSBDeviceFilter" extends="IUSBDeviceFilter"
16121 uuid="4cc70246-d74a-400f-8222-3900489c0374"
16122 wsmap="managed"
16123 >
16124 <desc>
16125 The IHostUSBDeviceFilter interface represents a global filter for a
16126 physical USB device used by the host computer. Used indirectly in
16127 <link to="IHost::USBDeviceFilters"/>.
16128
16129 Using filters of this type, the host computer determines the initial
16130 state of the USB device after it is physically attached to the
16131 host's USB controller.
16132
16133 <note>
16134 The <link to="IUSBDeviceFilter::remote"/> attribute is ignored by this type of
16135 filters, because it makes sense only for
16136 <link to="IUSBController::deviceFilters">machine USB filters</link>.
16137 </note>
16138
16139 <see><link to="IHost::USBDeviceFilters"/></see>
16140 </desc>
16141
16142 <attribute name="action" type="USBDeviceFilterAction">
16143 <desc>
16144 Action performed by the host when an attached USB device
16145 matches this filter.
16146 </desc>
16147 </attribute>
16148
16149 </interface>
16150
16151 <!--
16152 // IAudioAdapter
16153 /////////////////////////////////////////////////////////////////////////
16154 -->
16155
16156 <enum
16157 name="AudioDriverType"
16158 uuid="4bcc3d73-c2fe-40db-b72f-0c2ca9d68496"
16159 >
16160 <desc>
16161 Host audio driver type.
16162 </desc>
16163
16164 <const name="Null" value="0">
16165 <desc>Null value, also means "dummy audio driver".</desc>
16166 </const>
16167 <const name="WinMM" value="1">
16168 <desc>Windows multimedia (Windows hosts only).</desc>
16169 </const>
16170 <const name="OSS" value="2">
16171 <desc>Open Sound System (Linux hosts only).</desc>
16172 </const>
16173 <const name="ALSA" value="3">
16174 <desc>Advanced Linux Sound Architecture (Linux hosts only).</desc>
16175 </const>
16176 <const name="DirectSound" value="4">
16177 <desc>DirectSound (Windows hosts only).</desc>
16178 </const>
16179 <const name="CoreAudio" value="5">
16180 <desc>CoreAudio (Mac hosts only).</desc>
16181 </const>
16182 <const name="MMPM" value="6">
16183 <desc>Reserved for historical reasons.</desc>
16184 </const>
16185 <const name="Pulse" value="7">
16186 <desc>PulseAudio (Linux hosts only).</desc>
16187 </const>
16188 <const name="SolAudio" value="8">
16189 <desc>Solaris audio (Solaris hosts only).</desc>
16190 </const>
16191 </enum>
16192
16193 <enum
16194 name="AudioControllerType"
16195 uuid="7afd395c-42c3-444e-8788-3ce80292f36c"
16196 >
16197 <desc>
16198 Virtual audio controller type.
16199 </desc>
16200
16201 <const name="AC97" value="0"/>
16202 <const name="SB16" value="1"/>
16203 <const name="HDA" value="2"/>
16204 </enum>
16205
16206 <interface
16207 name="IAudioAdapter" extends="$unknown"
16208 uuid="921873db-5f3f-4b69-91f9-7be9e535a2cb"
16209 wsmap="managed"
16210 >
16211 <desc>
16212 The IAudioAdapter interface represents the virtual audio adapter of
16213 the virtual machine. Used in <link to="IMachine::audioAdapter"/>.
16214 </desc>
16215 <attribute name="enabled" type="boolean">
16216 <desc>
16217 Flag whether the audio adapter is present in the
16218 guest system. If disabled, the virtual guest hardware will
16219 not contain any audio adapter. Can only be changed when
16220 the VM is not running.
16221 </desc>
16222 </attribute>
16223 <attribute name="audioController" type="AudioControllerType">
16224 <desc>
16225 The audio hardware we emulate.
16226 </desc>
16227 </attribute>
16228 <attribute name="audioDriver" type="AudioDriverType">
16229 <desc>
16230 Audio driver the adapter is connected to. This setting
16231 can only be changed when the VM is not running.
16232 </desc>
16233 </attribute>
16234 </interface>
16235
16236 <enum
16237 name="AuthType"
16238 uuid="7eef6ef6-98c2-4dc2-ab35-10d2b292028d"
16239 >
16240 <desc>
16241 VirtualBox authentication type.
16242 </desc>
16243
16244 <const name="Null" value="0">
16245 <desc>Null value, also means "no authentication".</desc>
16246 </const>
16247 <const name="External" value="1"/>
16248 <const name="Guest" value="2"/>
16249 </enum>
16250
16251 <!--
16252 // IVRDEServer
16253 /////////////////////////////////////////////////////////////////////////
16254 -->
16255
16256 <interface
16257 name="IVRDEServer" extends="$unknown"
16258 uuid="d38de40a-c2c1-4e95-b5a4-167b05f5694c"
16259 wsmap="managed"
16260 >
16261 <attribute name="enabled" type="boolean">
16262 <desc>VRDE server status.</desc>
16263 </attribute>
16264
16265 <attribute name="authType" type="AuthType">
16266 <desc>VRDE authentication method.</desc>
16267 </attribute>
16268
16269 <attribute name="authTimeout" type="unsigned long">
16270 <desc>Timeout for guest authentication. Milliseconds.</desc>
16271 </attribute>
16272
16273 <attribute name="allowMultiConnection" type="boolean">
16274 <desc>
16275 Flag whether multiple simultaneous connections to the VM are permitted.
16276 Note that this will be replaced by a more powerful mechanism in the future.
16277 </desc>
16278 </attribute>
16279
16280 <attribute name="reuseSingleConnection" type="boolean">
16281 <desc>
16282 Flag whether the existing connection must be dropped and a new connection
16283 must be established by the VRDE server, when a new client connects in single
16284 connection mode.
16285 </desc>
16286 </attribute>
16287
16288 <attribute name="VRDEExtPack" type="wstring">
16289 <desc>
16290 The name of Extension Pack providing VRDE for this VM. Overrides
16291 <link to="ISystemProperties::defaultVRDEExtPack"/>.
16292 </desc>
16293 </attribute>
16294
16295 <attribute name="authLibrary" type="wstring">
16296 <desc>
16297 Library used for authentication of RDP clients by this VM. Overrides
16298 <link to="ISystemProperties::VRDEAuthLibrary"/>.
16299 </desc>
16300 </attribute>
16301
16302 <attribute name="VRDEProperties" type="wstring" readonly="yes" safearray="yes">
16303 <desc>
16304 Array of names of properties, which are supported by this VRDE server.
16305 </desc>
16306 </attribute>
16307
16308 <method name="setVRDEProperty">
16309 <desc>
16310 Sets a VRDE specific property string.
16311
16312 If you pass @c null or empty string as a key @a value, the given @a key
16313 will be deleted.
16314
16315 </desc>
16316 <param name="key" type="wstring" dir="in">
16317 <desc>Name of the key to set.</desc>
16318 </param>
16319 <param name="value" type="wstring" dir="in">
16320 <desc>Value to assign to the key.</desc>
16321 </param>
16322 </method>
16323
16324 <method name="getVRDEProperty" const="yes">
16325 <desc>
16326 Returns a VRDE specific property string.
16327
16328 If the requested data @a key does not exist, this function will
16329 succeed and return an empty string in the @a value argument.
16330
16331 </desc>
16332 <param name="key" type="wstring" dir="in">
16333 <desc>Name of the key to get.</desc>
16334 </param>
16335 <param name="value" type="wstring" dir="return">
16336 <desc>Value of the requested key.</desc>
16337 </param>
16338 </method>
16339
16340 </interface>
16341
16342
16343 <!--
16344 // ISharedFolder
16345 /////////////////////////////////////////////////////////////////////////
16346 -->
16347
16348 <interface
16349 name="ISharedFolder" extends="$unknown"
16350 uuid="8388da11-b559-4574-a5b7-2bd7acd5cef8"
16351 wsmap="struct"
16352 >
16353 <desc>
16354 The ISharedFolder interface represents a folder in the host computer's
16355 file system accessible from the guest OS running inside a virtual
16356 machine using an associated logical name.
16357
16358 There are three types of shared folders:
16359 <ul>
16360 <li><i>Global</i> (<link to="IVirtualBox::sharedFolders"/>), shared
16361 folders available to all virtual machines.</li>
16362 <li><i>Permanent</i> (<link to="IMachine::sharedFolders"/>),
16363 VM-specific shared folders available to the given virtual machine at
16364 startup.</li>
16365 <li><i>Transient</i> (<link to="IConsole::sharedFolders"/>),
16366 VM-specific shared folders created in the session context (for
16367 example, when the virtual machine is running) and automatically
16368 discarded when the session is closed (the VM is powered off).</li>
16369 </ul>
16370
16371 Logical names of shared folders must be unique within the given scope
16372 (global, permanent or transient). However, they do not need to be unique
16373 across scopes. In this case, the definition of the shared folder in a
16374 more specific scope takes precedence over definitions in all other
16375 scopes. The order of precedence is (more specific to more general):
16376 <ol>
16377 <li>Transient definitions</li>
16378 <li>Permanent definitions</li>
16379 <li>Global definitions</li>
16380 </ol>
16381
16382 For example, if MyMachine has a shared folder named
16383 <tt>C_DRIVE</tt> (that points to <tt>C:\\</tt>), then creating a
16384 transient shared folder named <tt>C_DRIVE</tt> (that points
16385 to <tt>C:\\\\WINDOWS</tt>) will change the definition
16386 of <tt>C_DRIVE</tt> in the guest OS so
16387 that <tt>\\\\VBOXSVR\\C_DRIVE</tt> will give access
16388 to <tt>C:\\WINDOWS</tt> instead of <tt>C:\\</tt> on the host
16389 PC. Removing the transient shared folder <tt>C_DRIVE</tt> will restore
16390 the previous (permanent) definition of <tt>C_DRIVE</tt> that points
16391 to <tt>C:\\</tt> if it still exists.
16392
16393 Note that permanent and transient shared folders of different machines
16394 are in different name spaces, so they don't overlap and don't need to
16395 have unique logical names.
16396
16397 <note>
16398 Global shared folders are not implemented in the current version of the
16399 product.
16400 </note>
16401 </desc>
16402
16403 <attribute name="name" type="wstring" readonly="yes">
16404 <desc>Logical name of the shared folder.</desc>
16405 </attribute>
16406
16407 <attribute name="hostPath" type="wstring" readonly="yes">
16408 <desc>Full path to the shared folder in the host file system.</desc>
16409 </attribute>
16410
16411 <attribute name="accessible" type="boolean" readonly="yes">
16412 <desc>
16413 Whether the folder defined by the host path is currently
16414 accessible or not.
16415 For example, the folder can be inaccessible if it is placed
16416 on the network share that is not available by the time
16417 this property is read.
16418 </desc>
16419 </attribute>
16420
16421 <attribute name="writable" type="boolean" readonly="yes">
16422 <desc>
16423 Whether the folder defined by the host path is writable or
16424 not.
16425 </desc>
16426 </attribute>
16427
16428 <attribute name="autoMount" type="boolean" readonly="yes">
16429 <desc>
16430 Whether the folder gets automatically mounted by the guest or not.
16431 </desc>
16432 </attribute>
16433
16434 <attribute name="lastAccessError" type="wstring" readonly="yes">
16435 <desc>
16436 Text message that represents the result of the last accessibility
16437 check.
16438
16439 Accessibility checks are performed each time the <link to="#accessible"/>
16440 attribute is read. An empty string is returned if the last
16441 accessibility check was successful. A non-empty string indicates a
16442 failure and should normally describe a reason of the failure (for
16443 example, a file read error).
16444 </desc>
16445 </attribute>
16446
16447 </interface>
16448
16449 <!--
16450 // ISession
16451 /////////////////////////////////////////////////////////////////////////
16452 -->
16453
16454 <interface
16455 name="IInternalSessionControl" extends="$unknown"
16456 uuid="3e83963a-1c3b-400d-8c5f-f2d077b0a597"
16457 internal="yes"
16458 wsmap="suppress"
16459 >
16460 <method name="getPID">
16461 <desc>PID of the process that has created this Session object.
16462 </desc>
16463 <param name="pid" type="unsigned long" dir="return"/>
16464 </method>
16465
16466 <method name="getRemoteConsole">
16467 <desc>
16468 Returns the console object suitable for remote control.
16469
16470 <result name="VBOX_E_INVALID_VM_STATE">
16471 Session state prevents operation.
16472 </result>
16473 <result name="VBOX_E_INVALID_OBJECT_STATE">
16474 Session type prevents operation.
16475 </result>
16476
16477 </desc>
16478 <param name="console" type="IConsole" dir="return"/>
16479 </method>
16480
16481 <method name="assignMachine">
16482 <desc>
16483 Assigns the machine object associated with this direct-type
16484 session or informs the session that it will be a remote one
16485 (if @a machine == @c null).
16486
16487 <result name="VBOX_E_INVALID_VM_STATE">
16488 Session state prevents operation.
16489 </result>
16490 <result name="VBOX_E_INVALID_OBJECT_STATE">
16491 Session type prevents operation.
16492 </result>
16493
16494 </desc>
16495 <param name="machine" type="IMachine" dir="in"/>
16496 <param name="lockType" type="LockType" dir="in"/>
16497 </method>
16498
16499 <method name="assignRemoteMachine">
16500 <desc>
16501 Assigns the machine and the (remote) console object associated with
16502 this remote-type session.
16503
16504 <result name="VBOX_E_INVALID_VM_STATE">
16505 Session state prevents operation.
16506 </result>
16507
16508 </desc>
16509 <param name="machine" type="IMachine" dir="in"/>
16510 <param name="console" type="IConsole" dir="in"/>
16511 </method>
16512
16513 <method name="updateMachineState">
16514 <desc>
16515 Updates the machine state in the VM process.
16516 Must be called only in certain cases
16517 (see the method implementation).
16518
16519 <result name="VBOX_E_INVALID_VM_STATE">
16520 Session state prevents operation.
16521 </result>
16522 <result name="VBOX_E_INVALID_OBJECT_STATE">
16523 Session type prevents operation.
16524 </result>
16525
16526 </desc>
16527 <param name="aMachineState" type="MachineState" dir="in"/>
16528 </method>
16529
16530 <method name="uninitialize">
16531 <desc>
16532 Uninitializes (closes) this session. Used by VirtualBox to close
16533 the corresponding remote session when the direct session dies
16534 or gets closed.
16535
16536 <result name="VBOX_E_INVALID_VM_STATE">
16537 Session state prevents operation.
16538 </result>
16539
16540 </desc>
16541 </method>
16542
16543 <method name="onNetworkAdapterChange">
16544 <desc>
16545 Triggered when settings of a network adapter of the
16546 associated virtual machine have changed.
16547
16548 <result name="VBOX_E_INVALID_VM_STATE">
16549 Session state prevents operation.
16550 </result>
16551 <result name="VBOX_E_INVALID_OBJECT_STATE">
16552 Session type prevents operation.
16553 </result>
16554
16555 </desc>
16556 <param name="networkAdapter" type="INetworkAdapter" dir="in"/>
16557 <param name="changeAdapter" type="boolean" dir="in"/>
16558 </method>
16559
16560 <method name="onSerialPortChange">
16561 <desc>
16562 Triggered when settings of a serial port of the
16563 associated virtual machine have changed.
16564
16565 <result name="VBOX_E_INVALID_VM_STATE">
16566 Session state prevents operation.
16567 </result>
16568 <result name="VBOX_E_INVALID_OBJECT_STATE">
16569 Session type prevents operation.
16570 </result>
16571
16572 </desc>
16573 <param name="serialPort" type="ISerialPort" dir="in"/>
16574 </method>
16575
16576 <method name="onParallelPortChange">
16577 <desc>
16578 Triggered when settings of a parallel port of the
16579 associated virtual machine have changed.
16580
16581 <result name="VBOX_E_INVALID_VM_STATE">
16582 Session state prevents operation.
16583 </result>
16584 <result name="VBOX_E_INVALID_OBJECT_STATE">
16585 Session type prevents operation.
16586 </result>
16587
16588 </desc>
16589 <param name="parallelPort" type="IParallelPort" dir="in"/>
16590 </method>
16591
16592 <method name="onStorageControllerChange">
16593 <desc>
16594 Triggered when settings of a storage controller of the
16595 associated virtual machine have changed.
16596
16597 <result name="VBOX_E_INVALID_VM_STATE">
16598 Session state prevents operation.
16599 </result>
16600 <result name="VBOX_E_INVALID_OBJECT_STATE">
16601 Session type prevents operation.
16602 </result>
16603
16604 </desc>
16605 </method>
16606
16607 <method name="onMediumChange">
16608 <desc>
16609 Triggered when attached media of the
16610 associated virtual machine have changed.
16611
16612 <result name="VBOX_E_INVALID_VM_STATE">
16613 Session state prevents operation.
16614 </result>
16615 <result name="VBOX_E_INVALID_OBJECT_STATE">
16616 Session type prevents operation.
16617 </result>
16618
16619 </desc>
16620
16621 <param name="mediumAttachment" type="IMediumAttachment" dir="in">
16622 <desc>The medium attachment which changed.</desc>
16623 </param>
16624 <param name="force" type="boolean" dir="in">
16625 <desc>If the medium change was forced.</desc>
16626 </param>
16627 </method>
16628
16629 <method name="onStorageDeviceChange">
16630 <desc>
16631 Triggered when attached storage devices of the
16632 associated virtual machine have changed.
16633
16634 <result name="VBOX_E_INVALID_VM_STATE">
16635 Session state prevents operation.
16636 </result>
16637 <result name="VBOX_E_INVALID_OBJECT_STATE">
16638 Session type prevents operation.
16639 </result>
16640
16641 </desc>
16642
16643 <param name="mediumAttachment" type="IMediumAttachment" dir="in">
16644 <desc>The medium attachment which changed.</desc>
16645 </param>
16646 <param name="remove" type="boolean" dir="in">
16647 <desc>TRUE if the device is removed, FALSE if it was added.</desc>
16648 </param>
16649 </method>
16650
16651 <method name="onClipboardModeChange">
16652 <desc>
16653 Notification when the shared clipboard mode changes.
16654 </desc>
16655 <param name="clipboardMode" type="ClipboardMode" dir="in">
16656 <desc>The new shared clipboard mode.</desc>
16657 </param>
16658 </method>
16659
16660 <method name="onDragAndDropModeChange">
16661 <desc>
16662 Notification when the drag'n'drop mode changes.
16663 </desc>
16664 <param name="dragAndDropMode" type="DragAndDropMode" dir="in">
16665 <desc>The new mode for drag'n'drop.</desc>
16666 </param>
16667 </method>
16668
16669 <method name="onCPUChange">
16670 <desc>
16671 Notification when a CPU changes.
16672 </desc>
16673 <param name="cpu" type="unsigned long" dir="in">
16674 <desc>The CPU which changed</desc>
16675 </param>
16676 <param name="add" type="boolean" dir="in">
16677 <desc>Flag whether the CPU was added or removed</desc>
16678 </param>
16679 </method>
16680
16681 <method name="onCPUExecutionCapChange">
16682 <desc>
16683 Notification when the CPU execution cap changes.
16684 </desc>
16685 <param name="executionCap" type="unsigned long" dir="in">
16686 <desc>The new CPU execution cap value. (1-100)</desc>
16687 </param>
16688 </method>
16689
16690 <method name="onVRDEServerChange">
16691 <desc>
16692 Triggered when settings of the VRDE server object of the
16693 associated virtual machine have changed.
16694
16695 <result name="VBOX_E_INVALID_VM_STATE">
16696 Session state prevents operation.
16697 </result>
16698 <result name="VBOX_E_INVALID_OBJECT_STATE">
16699 Session type prevents operation.
16700 </result>
16701
16702 </desc>
16703 <param name="restart" type="boolean" dir="in">
16704 <desc>Flag whether the server must be restarted</desc>
16705 </param>
16706 </method>
16707
16708 <method name="onUSBControllerChange">
16709 <desc>
16710 Triggered when settings of the USB controller object of the
16711 associated virtual machine have changed.
16712
16713 <result name="VBOX_E_INVALID_VM_STATE">
16714 Session state prevents operation.
16715 </result>
16716 <result name="VBOX_E_INVALID_OBJECT_STATE">
16717 Session type prevents operation.
16718 </result>
16719
16720 </desc>
16721 </method>
16722
16723 <method name="onSharedFolderChange">
16724 <desc>
16725 Triggered when a permanent (global or machine) shared folder has been
16726 created or removed.
16727 <note>
16728 We don't pass shared folder parameters in this notification because
16729 the order in which parallel notifications are delivered is not defined,
16730 therefore it could happen that these parameters were outdated by the
16731 time of processing this notification.
16732 </note>
16733
16734 <result name="VBOX_E_INVALID_VM_STATE">
16735 Session state prevents operation.
16736 </result>
16737 <result name="VBOX_E_INVALID_OBJECT_STATE">
16738 Session type prevents operation.
16739 </result>
16740
16741 </desc>
16742 <param name="global" type="boolean" dir="in"/>
16743 </method>
16744
16745 <method name="onUSBDeviceAttach">
16746 <desc>
16747 Triggered when a request to capture a USB device (as a result
16748 of matched USB filters or direct call to
16749 <link to="IConsole::attachUSBDevice"/>) has completed.
16750 A @c null @a error object means success, otherwise it
16751 describes a failure.
16752
16753 <result name="VBOX_E_INVALID_VM_STATE">
16754 Session state prevents operation.
16755 </result>
16756 <result name="VBOX_E_INVALID_OBJECT_STATE">
16757 Session type prevents operation.
16758 </result>
16759
16760 </desc>
16761 <param name="device" type="IUSBDevice" dir="in"/>
16762 <param name="error" type="IVirtualBoxErrorInfo" dir="in"/>
16763 <param name="maskedInterfaces" type="unsigned long" dir="in"/>
16764 </method>
16765
16766 <method name="onUSBDeviceDetach">
16767 <desc>
16768 Triggered when a request to release the USB device (as a result
16769 of machine termination or direct call to
16770 <link to="IConsole::detachUSBDevice"/>) has completed.
16771 A @c null @a error object means success, otherwise it
16772 describes a failure.
16773
16774 <result name="VBOX_E_INVALID_VM_STATE">
16775 Session state prevents operation.
16776 </result>
16777 <result name="VBOX_E_INVALID_OBJECT_STATE">
16778 Session type prevents operation.
16779 </result>
16780
16781 </desc>
16782 <param name="id" type="uuid" mod="string" dir="in"/>
16783 <param name="error" type="IVirtualBoxErrorInfo" dir="in"/>
16784 </method>
16785
16786 <method name="onShowWindow">
16787 <desc>
16788 Called by <link to="IMachine::canShowConsoleWindow"/> and by
16789 <link to="IMachine::showConsoleWindow"/> in order to notify
16790 console listeners
16791 <link to="ICanShowWindowEvent"/>
16792 and <link to="IShowWindowEvent"/>.
16793
16794 <result name="VBOX_E_INVALID_OBJECT_STATE">
16795 Session type prevents operation.
16796 </result>
16797
16798 </desc>
16799 <param name="check" type="boolean" dir="in"/>
16800 <param name="canShow" type="boolean" dir="out"/>
16801 <param name="winId" type="long long" dir="out"/>
16802 </method>
16803
16804 <method name="onBandwidthGroupChange">
16805 <desc>
16806 Notification when one of the bandwidth groups change.
16807 </desc>
16808 <param name="bandwidthGroup" type="IBandwidthGroup" dir="in">
16809 <desc>The bandwidth group which changed.</desc>
16810 </param>
16811 </method>
16812
16813 <method name="accessGuestProperty">
16814 <desc>
16815 Called by <link to="IMachine::getGuestProperty"/> and by
16816 <link to="IMachine::setGuestProperty"/> in order to read and
16817 modify guest properties.
16818
16819 <result name="VBOX_E_INVALID_VM_STATE">
16820 Machine session is not open.
16821 </result>
16822 <result name="VBOX_E_INVALID_OBJECT_STATE">
16823 Session type is not direct.
16824 </result>
16825
16826 </desc>
16827 <param name="name" type="wstring" dir="in"/>
16828 <param name="value" type="wstring" dir="in"/>
16829 <param name="flags" type="wstring" dir="in"/>
16830 <param name="isSetter" type="boolean" dir="in"/>
16831 <param name="retValue" type="wstring" dir="out"/>
16832 <param name="retTimestamp" type="long long" dir="out"/>
16833 <param name="retFlags" type="wstring" dir="out"/>
16834 </method>
16835
16836 <method name="enumerateGuestProperties" const="yes">
16837 <desc>
16838 Return a list of the guest properties matching a set of patterns along
16839 with their values, time stamps and flags.
16840
16841 <result name="VBOX_E_INVALID_VM_STATE">
16842 Machine session is not open.
16843 </result>
16844 <result name="VBOX_E_INVALID_OBJECT_STATE">
16845 Session type is not direct.
16846 </result>
16847
16848 </desc>
16849 <param name="patterns" type="wstring" dir="in">
16850 <desc>
16851 The patterns to match the properties against as a comma-separated
16852 string. If this is empty, all properties currently set will be
16853 returned.
16854 </desc>
16855 </param>
16856 <param name="key" type="wstring" dir="out" safearray="yes">
16857 <desc>
16858 The key names of the properties returned.
16859 </desc>
16860 </param>
16861 <param name="value" type="wstring" dir="out" safearray="yes">
16862 <desc>
16863 The values of the properties returned. The array entries match the
16864 corresponding entries in the @a key array.
16865 </desc>
16866 </param>
16867 <param name="timestamp" type="long long" dir="out" safearray="yes">
16868 <desc>
16869 The time stamps of the properties returned. The array entries match
16870 the corresponding entries in the @a key array.
16871 </desc>
16872 </param>
16873 <param name="flags" type="wstring" dir="out" safearray="yes">
16874 <desc>
16875 The flags of the properties returned. The array entries match the
16876 corresponding entries in the @a key array.
16877 </desc>
16878 </param>
16879 </method>
16880
16881 <method name="onlineMergeMedium">
16882 <desc>
16883 Triggers online merging of a hard disk. Used internally when deleting
16884 a snapshot while a VM referring to the same hard disk chain is running.
16885
16886 <result name="VBOX_E_INVALID_VM_STATE">
16887 Machine session is not open.
16888 </result>
16889 <result name="VBOX_E_INVALID_OBJECT_STATE">
16890 Session type is not direct.
16891 </result>
16892
16893 </desc>
16894 <param name="mediumAttachment" type="IMediumAttachment" dir="in">
16895 <desc>The medium attachment to identify the medium chain.</desc>
16896 </param>
16897 <param name="sourceIdx" type="unsigned long" dir="in">
16898 <desc>The index of the source image in the chain.
16899 Redundant, but drastically reduces IPC.</desc>
16900 </param>
16901 <param name="targetIdx" type="unsigned long" dir="in">
16902 <desc>The index of the target image in the chain.
16903 Redundant, but drastically reduces IPC.</desc>
16904 </param>
16905 <param name="source" type="IMedium" dir="in">
16906 <desc>Merge source medium.</desc>
16907 </param>
16908 <param name="target" type="IMedium" dir="in">
16909 <desc>Merge target medium.</desc>
16910 </param>
16911 <param name="mergeForward" type="boolean" dir="in">
16912 <desc>Merge direction.</desc>
16913 </param>
16914 <param name="parentForTarget" type="IMedium" dir="in">
16915 <desc>For forward merges: new parent for target medium.</desc>
16916 </param>
16917 <param name="childrenToReparent" type="IMedium" safearray="yes" dir="in">
16918 <desc>For backward merges: list of media which need their parent UUID
16919 updated.</desc>
16920 </param>
16921 <param name="progress" type="IProgress" dir="in">
16922 <desc>
16923 Progress object for this operation.
16924 </desc>
16925 </param>
16926 </method>
16927
16928 <method name="enableVMMStatistics">
16929 <desc>
16930 Enables or disables collection of VMM RAM statistics.
16931
16932 <result name="VBOX_E_INVALID_VM_STATE">
16933 Machine session is not open.
16934 </result>
16935 <result name="VBOX_E_INVALID_OBJECT_STATE">
16936 Session type is not direct.
16937 </result>
16938
16939 </desc>
16940 <param name="enable" type="boolean" dir="in">
16941 <desc>True enables statistics collection.</desc>
16942 </param>
16943 </method>
16944
16945 </interface>
16946
16947 <interface
16948 name="ISession" extends="$unknown"
16949 uuid="12F4DCDB-12B2-4EC1-B7CD-DDD9F6C5BF4D"
16950 wsmap="managed"
16951 >
16952 <desc>
16953 The ISession interface represents a client process and allows for locking
16954 virtual machines (represented by IMachine objects) to prevent conflicting
16955 changes to the machine.
16956
16957 Any caller wishing to manipulate a virtual machine needs to create a session
16958 object first, which lives in its own process space. Such session objects are
16959 then associated with <link to="IMachine" /> objects living in the VirtualBox
16960 server process to coordinate such changes.
16961
16962 There are two typical scenarios in which sessions are used:
16963
16964 <ul>
16965 <li>To alter machine settings or control a running virtual machine, one
16966 needs to lock a machine for a given session (client process) by calling
16967 <link to="IMachine::lockMachine"/>.
16968
16969 Whereas multiple sessions may control a running virtual machine, only
16970 one process can obtain a write lock on the machine to prevent conflicting
16971 changes. A write lock is also needed if a process wants to actually run a
16972 virtual machine in its own context, such as the VirtualBox GUI or
16973 VBoxHeadless front-ends. They must also lock a machine for their own
16974 sessions before they are allowed to power up the virtual machine.
16975
16976 As a result, no machine settings can be altered while another process is
16977 already using it, either because that process is modifying machine settings
16978 or because the machine is running.
16979 </li>
16980 <li>
16981 To start a VM using one of the existing VirtualBox front-ends (e.g. the
16982 VirtualBox GUI or VBoxHeadless), one would use
16983 <link to="IMachine::launchVMProcess"/>, which also takes a session object
16984 as its first parameter. This session then identifies the caller and lets the
16985 caller control the started machine (for example, pause machine execution or
16986 power it down) as well as be notified about machine execution state changes.
16987 </li>
16988 </ul>
16989
16990 How sessions objects are created in a client process depends on whether you use
16991 the Main API via COM or via the webservice:
16992
16993 <ul>
16994 <li>When using the COM API directly, an object of the Session class from the
16995 VirtualBox type library needs to be created. In regular COM C++ client code,
16996 this can be done by calling <tt>createLocalObject()</tt>, a standard COM API.
16997 This object will then act as a local session object in further calls to open
16998 a session.
16999 </li>
17000
17001 <li>In the webservice, the session manager (IWebsessionManager) instead creates
17002 a session object automatically whenever <link to="IWebsessionManager::logon" />
17003 is called. A managed object reference to that session object can be retrieved by
17004 calling <link to="IWebsessionManager::getSessionObject" />.
17005 </li>
17006 </ul>
17007 </desc>
17008
17009 <attribute name="state" type="SessionState" readonly="yes">
17010 <desc>Current state of this session.</desc>
17011 </attribute>
17012
17013 <attribute name="type" type="SessionType" readonly="yes">
17014 <desc>
17015 Type of this session. The value of this attribute is valid only
17016 if the session currently has a machine locked (i.e. its
17017 <link to="#state" /> is Locked), otherwise an error will be returned.
17018 </desc>
17019 </attribute>
17020
17021 <attribute name="machine" type="IMachine" readonly="yes">
17022 <desc>Machine object associated with this session.</desc>
17023 </attribute>
17024
17025 <attribute name="console" type="IConsole" readonly="yes">
17026 <desc>Console object associated with this session.</desc>
17027 </attribute>
17028
17029 <method name="unlockMachine">
17030 <desc>
17031 Unlocks a machine that was previously locked for the current session.
17032
17033 Calling this method is required every time a machine has been locked
17034 for a particular session using the <link to="IMachine::launchVMProcess" />
17035 or <link to="IMachine::lockMachine" /> calls. Otherwise the state of
17036 the machine will be set to <link to="MachineState_Aborted" /> on the
17037 server, and changes made to the machine settings will be lost.
17038
17039 Generally, it is recommended to unlock all machines explicitly
17040 before terminating the application (regardless of the reason for
17041 the termination).
17042
17043 <note>
17044 Do not expect the session state (<link to="ISession::state" />
17045 to return to "Unlocked" immediately after you invoke this method,
17046 particularly if you have started a new VM process. The session
17047 state will automatically return to "Unlocked" once the VM is no
17048 longer executing, which can of course take a very long time.
17049 </note>
17050
17051 <result name="E_UNEXPECTED">
17052 Session is not locked.
17053 </result>
17054
17055 </desc>
17056 </method>
17057
17058 </interface>
17059
17060 <!--
17061 // IStorageController
17062 /////////////////////////////////////////////////////////////////////////
17063 -->
17064
17065 <enum
17066 name="StorageBus"
17067 uuid="eee67ab3-668d-4ef5-91e0-7025fe4a0d7a"
17068 >
17069 <desc>
17070 The bus type of the storage controller (IDE, SATA, SCSI, SAS or Floppy);
17071 see <link to="IStorageController::bus" />.
17072 </desc>
17073 <const name="Null" value="0">
17074 <desc>@c null value. Never used by the API.</desc>
17075 </const>
17076 <const name="IDE" value="1"/>
17077 <const name="SATA" value="2"/>
17078 <const name="SCSI" value="3"/>
17079 <const name="Floppy" value="4"/>
17080 <const name="SAS" value="5"/>
17081 </enum>
17082
17083 <enum
17084 name="StorageControllerType"
17085 uuid="8a412b8a-f43e-4456-bd37-b474f0879a58"
17086 >
17087 <desc>
17088 The exact variant of storage controller hardware presented
17089 to the guest; see <link to="IStorageController::controllerType" />.
17090 </desc>
17091
17092 <const name="Null" value="0">
17093 <desc>@c null value. Never used by the API.</desc>
17094 </const>
17095 <const name="LsiLogic" value="1">
17096 <desc>A SCSI controller of the LsiLogic variant.</desc>
17097 </const>
17098 <const name="BusLogic" value="2">
17099 <desc>A SCSI controller of the BusLogic variant.</desc>
17100 </const>
17101 <const name="IntelAhci" value="3">
17102 <desc>An Intel AHCI SATA controller; this is the only variant for SATA.</desc>
17103 </const>
17104 <const name="PIIX3" value="4">
17105 <desc>An IDE controller of the PIIX3 variant.</desc>
17106 </const>
17107 <const name="PIIX4" value="5">
17108 <desc>An IDE controller of the PIIX4 variant.</desc>
17109 </const>
17110 <const name="ICH6" value="6">
17111 <desc>An IDE controller of the ICH6 variant.</desc>
17112 </const>
17113 <const name="I82078" value="7">
17114 <desc>A floppy disk controller; this is the only variant for floppy drives.</desc>
17115 </const>
17116 <const name="LsiLogicSas" value="8">
17117 <desc>A variant of the LsiLogic controller using SAS.</desc>
17118 </const>
17119 </enum>
17120
17121 <enum
17122 name="ChipsetType"
17123 uuid="8b4096a8-a7c3-4d3b-bbb1-05a0a51ec394"
17124 >
17125 <desc>
17126 Type of emulated chipset (mostly southbridge).
17127 </desc>
17128
17129 <const name="Null" value="0">
17130 <desc>@c null value. Never used by the API.</desc>
17131 </const>
17132 <const name="PIIX3" value="1">
17133 <desc>A PIIX3 (PCI IDE ISA Xcelerator) chipset.</desc>
17134 </const>
17135 <const name="ICH9" value="2">
17136 <desc>A ICH9 (I/O Controller Hub) chipset.</desc>
17137 </const>
17138 </enum>
17139
17140 <interface
17141 name="IStorageController" extends="$unknown"
17142 uuid="a1556333-09b6-46d9-bfb7-fc239b7fbe1e"
17143 wsmap="managed"
17144 >
17145 <desc>
17146 Represents a storage controller that is attached to a virtual machine
17147 (<link to="IMachine" />). Just as drives (hard disks, DVDs, FDs) are
17148 attached to storage controllers in a real computer, virtual drives
17149 (represented by <link to="IMediumAttachment" />) are attached to virtual
17150 storage controllers, represented by this interface.
17151
17152 As opposed to physical hardware, VirtualBox has a very generic concept
17153 of a storage controller, and for purposes of the Main API, all virtual
17154 storage is attached to virtual machines via instances of this interface.
17155 There are five types of such virtual storage controllers: IDE, SCSI, SATA,
17156 SAS and Floppy (see <link to="#bus" />). Depending on which of these four
17157 is used, certain sub-types may be available and can be selected in
17158 <link to="#controllerType" />.
17159
17160 Depending on these settings, the guest operating system might see
17161 significantly different virtual hardware.
17162 </desc>
17163
17164 <attribute name="name" type="wstring" readonly="yes">
17165 <desc>
17166 Name of the storage controller, as originally specified with
17167 <link to="IMachine::addStorageController" />. This then uniquely
17168 identifies this controller with other method calls such as
17169 <link to="IMachine::attachDevice" /> and <link to="IMachine::mountMedium" />.
17170 </desc>
17171 </attribute>
17172
17173 <attribute name="maxDevicesPerPortCount" type="unsigned long" readonly="yes">
17174 <desc>
17175 Maximum number of devices which can be attached to one port.
17176 </desc>
17177 </attribute>
17178
17179 <attribute name="minPortCount" type="unsigned long" readonly="yes">
17180 <desc>
17181 Minimum number of ports that <link to="IStorageController::portCount"/> can be set to.
17182 </desc>
17183 </attribute>
17184
17185 <attribute name="maxPortCount" type="unsigned long" readonly="yes">
17186 <desc>
17187 Maximum number of ports that <link to="IStorageController::portCount"/> can be set to.
17188 </desc>
17189 </attribute>
17190
17191 <attribute name="instance" type="unsigned long">
17192 <desc>
17193 The instance number of the device in the running VM.
17194 </desc>
17195 </attribute>
17196
17197 <attribute name="portCount" type="unsigned long">
17198 <desc>
17199 The number of currently usable ports on the controller.
17200 The minimum and maximum number of ports for one controller are
17201 stored in <link to="IStorageController::minPortCount"/>
17202 and <link to="IStorageController::maxPortCount"/>.
17203 </desc>
17204 </attribute>
17205
17206 <attribute name="bus" type="StorageBus" readonly="yes">
17207 <desc>
17208 The bus type of the storage controller (IDE, SATA, SCSI, SAS or Floppy).
17209 </desc>
17210 </attribute>
17211
17212 <attribute name="controllerType" type="StorageControllerType">
17213 <desc>
17214 The exact variant of storage controller hardware presented
17215 to the guest.
17216 Depending on this value, VirtualBox will provide a different
17217 virtual storage controller hardware to the guest.
17218 For SATA, SAS and floppy controllers, only one variant is
17219 available, but for IDE and SCSI, there are several.
17220
17221 For SCSI controllers, the default type is LsiLogic.
17222 </desc>
17223 </attribute>
17224
17225 <attribute name="useHostIOCache" type="boolean">
17226 <desc>
17227 If true, the storage controller emulation will use a dedicated I/O thread, enable the host I/O
17228 caches and use synchronous file APIs on the host. This was the only option in the API before
17229 VirtualBox 3.2 and is still the default for IDE controllers.
17230
17231 If false, the host I/O cache will be disabled for image files attached to this storage controller.
17232 Instead, the storage controller emulation will use asynchronous I/O APIs on the host. This makes
17233 it possible to turn off the host I/O caches because the emulation can handle unaligned access to
17234 the file. This should be used on OS X and Linux hosts if a high I/O load is expected or many
17235 virtual machines are running at the same time to prevent I/O cache related hangs.
17236 This option new with the API of VirtualBox 3.2 and is now the default for non-IDE storage controllers.
17237 </desc>
17238 </attribute>
17239
17240 <attribute name="bootable" type="boolean" readonly="yes">
17241 <desc>
17242 Returns whether it is possible to boot from disks attached to this controller.
17243 </desc>
17244 </attribute>
17245
17246 <method name="getIDEEmulationPort">
17247 <desc>
17248 Gets the corresponding port number which is emulated as an IDE device.
17249 Works only with SATA controllers.
17250
17251 <result name="E_INVALIDARG">
17252 The @a devicePosition is not in the range 0 to 3.
17253 </result>
17254 <result name="E_NOTIMPL">
17255 The storage controller type is not SATAIntelAhci.
17256 </result>
17257
17258 </desc>
17259 <param name="devicePosition" type="long" dir="in"/>
17260 <param name="portNumber" type="long" dir="return"/>
17261 </method>
17262
17263 <method name="setIDEEmulationPort">
17264 <desc>
17265 Sets the port number which is emulated as an IDE device.
17266 Works only with SATA controllers.
17267
17268 <result name="E_INVALIDARG">
17269 The @a devicePosition is not in the range 0 to 3 or the
17270 @a portNumber is not in the range 0 to 29.
17271 </result>
17272 <result name="E_NOTIMPL">
17273 The storage controller type is not SATAIntelAhci.
17274 </result>
17275
17276 </desc>
17277 <param name="devicePosition" type="long" dir="in"/>
17278 <param name="portNumber" type="long" dir="in"/>
17279 </method>
17280
17281 </interface>
17282
17283<if target="wsdl">
17284
17285 <!--
17286 // IManagedObjectRef
17287 /////////////////////////////////////////////////////////////////////////
17288 -->
17289
17290 <interface
17291 name="IManagedObjectRef" extends="$unknown"
17292 uuid="9474d09d-2313-46de-b568-a42b8718e8ed"
17293 internal="yes"
17294 wsmap="managed"
17295 wscpp="hardcoded"
17296 >
17297 <desc>
17298 Managed object reference.
17299
17300 Only within the webservice, a managed object reference (which is really
17301 an opaque number) allows a webservice client to address an object
17302 that lives in the address space of the webservice server.
17303
17304 Behind each managed object reference, there is a COM object that lives
17305 in the webservice server's address space. The COM object is not freed
17306 until the managed object reference is released, either by an explicit
17307 call to <link to="IManagedObjectRef::release" /> or by logging off from
17308 the webservice (<link to="IWebsessionManager::logoff" />), which releases
17309 all objects created during the webservice session.
17310
17311 Whenever a method call of the VirtualBox API returns a COM object, the
17312 webservice representation of that method will instead return a
17313 managed object reference, which can then be used to invoke methods
17314 on that object.
17315 </desc>
17316
17317 <method name="getInterfaceName">
17318 <desc>
17319 Returns the name of the interface that this managed object represents,
17320 for example, "IMachine", as a string.
17321 </desc>
17322 <param name="return" type="wstring" dir="return"/>
17323 </method>
17324
17325 <method name="release">
17326 <desc>
17327 Releases this managed object reference and frees the resources that
17328 were allocated for it in the webservice server process. After calling
17329 this method, the identifier of the reference can no longer be used.
17330 </desc>
17331 </method>
17332
17333 </interface>
17334
17335 <!--
17336 // IWebsessionManager
17337 /////////////////////////////////////////////////////////////////////////
17338 -->
17339
17340 <interface
17341 name="IWebsessionManager" extends="$unknown"
17342 uuid="dea1b4c7-2de3-418a-850d-7868617f7733"
17343 internal="yes"
17344 wsmap="global"
17345 wscpp="hardcoded"
17346 >
17347 <desc>
17348 Websession manager. This provides essential services
17349 to webservice clients.
17350 </desc>
17351 <method name="logon">
17352 <desc>
17353 Logs a new client onto the webservice and returns a managed object reference to
17354 the IVirtualBox instance, which the client can then use as a basis to further
17355 queries, since all calls to the VirtualBox API are based on the IVirtualBox
17356 interface, in one way or the other.
17357 </desc>
17358 <param name="username" type="wstring" dir="in"/>
17359 <param name="password" type="wstring" dir="in"/>
17360 <param name="return" type="IVirtualBox" dir="return"/>
17361 </method>
17362
17363 <method name="getSessionObject">
17364 <desc>
17365 Returns a managed object reference to the internal ISession object that was created
17366 for this web service session when the client logged on.
17367
17368 <see><link to="ISession"/></see>
17369 </desc>
17370 <param name="refIVirtualBox" type="IVirtualBox" dir="in"/>
17371 <param name="return" type="ISession" dir="return"/>
17372 </method>
17373
17374 <method name="logoff">
17375 <desc>
17376 Logs off the client who has previously logged on with <link to="IWebsessionManager::logon" />
17377 and destroys all resources associated with the session (most importantly, all
17378 managed objects created in the server while the session was active).
17379 </desc>
17380 <param name="refIVirtualBox" type="IVirtualBox" dir="in"/>
17381 </method>
17382
17383 </interface>
17384
17385</if>
17386
17387 <!--
17388 // IPerformanceCollector & friends
17389 /////////////////////////////////////////////////////////////////////////
17390 -->
17391
17392 <interface
17393 name="IPerformanceMetric" extends="$unknown"
17394 uuid="2a1a60ae-9345-4019-ad53-d34ba41cbfe9" wsmap="managed"
17395 >
17396 <desc>
17397 The IPerformanceMetric interface represents parameters of the given
17398 performance metric.
17399 </desc>
17400
17401 <attribute name="metricName" type="wstring" readonly="yes">
17402 <desc>
17403 Name of the metric.
17404 </desc>
17405 </attribute>
17406
17407 <attribute name="object" type="$unknown" readonly="yes">
17408 <desc>
17409 Object this metric belongs to.
17410 </desc>
17411 </attribute>
17412
17413 <attribute name="description" type="wstring" readonly="yes">
17414 <desc>
17415 Textual description of the metric.
17416 </desc>
17417 </attribute>
17418
17419 <attribute name="period" type="unsigned long" readonly="yes">
17420 <desc>
17421 Time interval between samples, measured in seconds.
17422 </desc>
17423 </attribute>
17424
17425 <attribute name="count" type="unsigned long" readonly="yes">
17426 <desc>
17427 Number of recent samples retained by the performance collector for this
17428 metric.
17429
17430 When the collected sample count exceeds this number, older samples
17431 are discarded.
17432 </desc>
17433 </attribute>
17434
17435 <attribute name="unit" type="wstring" readonly="yes">
17436 <desc>
17437 Unit of measurement.
17438 </desc>
17439 </attribute>
17440
17441 <attribute name="minimumValue" type="long" readonly="yes">
17442 <desc>
17443 Minimum possible value of this metric.
17444 </desc>
17445 </attribute>
17446
17447 <attribute name="maximumValue" type="long" readonly="yes">
17448 <desc>
17449 Maximum possible value of this metric.
17450 </desc>
17451 </attribute>
17452 </interface>
17453
17454 <interface
17455 name="IPerformanceCollector" extends="$unknown"
17456 uuid="e22e1acb-ac4a-43bb-a31c-17321659b0c6"
17457 wsmap="managed"
17458 >
17459 <desc>
17460 The IPerformanceCollector interface represents a service that collects
17461 and stores performance metrics data.
17462
17463 Performance metrics are associated with objects of interfaces like IHost
17464 and IMachine. Each object has a distinct set of performance metrics. The
17465 set can be obtained with <link to="IPerformanceCollector::getMetrics"/>.
17466
17467 Metric data is collected at the specified intervals and is retained
17468 internally. The interval and the number of retained samples can be set
17469 with <link to="IPerformanceCollector::setupMetrics" />. Both metric data
17470 and collection settings are not persistent, they are discarded as soon as
17471 VBoxSVC process terminates. Moreover, metric settings and data associated
17472 with a particular VM only exist while VM is running. They disappear as
17473 soon as VM shuts down. It is not possible to set up metrics for machines
17474 that are powered off. One needs to start VM first, then set up metric
17475 collection parameters.
17476
17477 Metrics are organized hierarchically, with each level separated by a
17478 slash (/) character. Generally, the scheme for metric names is like this:
17479
17480 <tt>Category/Metric[/SubMetric][:aggregation]</tt>
17481
17482 "Category/Metric" together form the base metric name. A base metric is
17483 the smallest unit for which a sampling interval and the number of
17484 retained samples can be set. Only base metrics can be enabled and
17485 disabled. All sub-metrics are collected when their base metric is
17486 collected. Collected values for any set of sub-metrics can be queried
17487 with <link to="IPerformanceCollector::queryMetricsData" />.
17488
17489 For example "CPU/Load/User:avg" metric name stands for the "CPU"
17490 category, "Load" metric, "User" submetric, "average" aggregate. An
17491 aggregate function is computed over all retained data. Valid aggregate
17492 functions are:
17493
17494 <ul>
17495 <li>avg -- average</li>
17496 <li>min -- minimum</li>
17497 <li>max -- maximum</li>
17498 </ul>
17499
17500 When setting up metric parameters, querying metric data, enabling or
17501 disabling metrics wildcards can be used in metric names to specify a
17502 subset of metrics. For example, to select all CPU-related metrics
17503 use <tt>CPU/*</tt>, all averages can be queried using <tt>*:avg</tt> and
17504 so on. To query metric values without aggregates <tt>*:</tt> can be used.
17505
17506 The valid names for base metrics are:
17507
17508 <ul>
17509 <li>CPU/Load</li>
17510 <li>CPU/MHz</li>
17511 <li>RAM/Usage</li>
17512 <li>RAM/VMM</li>
17513 </ul>
17514
17515 The general sequence for collecting and retrieving the metrics is:
17516 <ul>
17517 <li>
17518 Obtain an instance of IPerformanceCollector with
17519 <link to="IVirtualBox::performanceCollector" />
17520 </li>
17521 <li>
17522 Allocate and populate an array with references to objects the metrics
17523 will be collected for. Use references to IHost and IMachine objects.
17524 </li>
17525 <li>
17526 Allocate and populate an array with base metric names the data will
17527 be collected for.
17528 </li>
17529 <li>
17530 Call <link to="IPerformanceCollector::setupMetrics" />. From now on
17531 the metric data will be collected and stored.
17532 </li>
17533 <li>
17534 Wait for the data to get collected.
17535 </li>
17536 <li>
17537 Allocate and populate an array with references to objects the metric
17538 values will be queried for. You can re-use the object array used for
17539 setting base metrics.
17540 </li>
17541 <li>
17542 Allocate and populate an array with metric names the data will be
17543 collected for. Note that metric names differ from base metric names.
17544 </li>
17545 <li>
17546 Call <link to="IPerformanceCollector::queryMetricsData" />. The data
17547 that have been collected so far are returned. Note that the values
17548 are still retained internally and data collection continues.
17549 </li>
17550 </ul>
17551
17552 For an example of usage refer to the following files in VirtualBox SDK:
17553 <ul>
17554 <li>
17555 Java: <tt>bindings/webservice/java/jax-ws/samples/metrictest.java</tt>
17556 </li>
17557 <li>
17558 Python: <tt>bindings/xpcom/python/sample/shellcommon.py</tt>
17559 </li>
17560 </ul>
17561 </desc>
17562
17563 <attribute name="metricNames" type="wstring" readonly="yes" safearray="yes">
17564 <desc>
17565 Array of unique names of metrics.
17566
17567 This array represents all metrics supported by the performance
17568 collector. Individual objects do not necessarily support all of them.
17569 <link to="IPerformanceCollector::getMetrics"/> can be used to get the
17570 list of supported metrics for a particular object.
17571 </desc>
17572 </attribute>
17573
17574 <method name="getMetrics">
17575 <desc>
17576 Returns parameters of specified metrics for a set of objects.
17577 <note>
17578 @c Null metrics array means all metrics. @c Null object array means
17579 all existing objects.
17580 </note>
17581 </desc>
17582 <param name="metricNames" type="wstring" dir="in" safearray="yes">
17583 <desc>
17584 Metric name filter. Currently, only a comma-separated list of metrics
17585 is supported.
17586 </desc>
17587 </param>
17588 <param name="objects" type="$unknown" dir="in" safearray="yes">
17589 <desc>
17590 Set of objects to return metric parameters for.
17591 </desc>
17592 </param>
17593 <param name="metrics" type="IPerformanceMetric" dir="return" safearray="yes">
17594 <desc>
17595 Array of returned metric parameters.
17596 </desc>
17597 </param>
17598 </method>
17599
17600 <method name="setupMetrics">
17601 <desc>
17602 Sets parameters of specified base metrics for a set of objects. Returns
17603 an array of <link to="IPerformanceMetric" /> describing the metrics
17604 have been affected.
17605 <note>
17606 @c Null or empty metric name array means all metrics. @c Null or
17607 empty object array means all existing objects. If metric name array
17608 contains a single element and object array contains many, the single
17609 metric name array element is applied to each object array element to
17610 form metric/object pairs.
17611 </note>
17612 </desc>
17613 <param name="metricNames" type="wstring" dir="in" safearray="yes">
17614 <desc>
17615 Metric name filter. Comma-separated list of metrics with wildcard
17616 support.
17617 </desc>
17618 </param>
17619 <param name="objects" type="$unknown" dir="in" safearray="yes">
17620 <desc>
17621 Set of objects to setup metric parameters for.
17622 </desc>
17623 </param>
17624 <param name="period" type="unsigned long" dir="in">
17625 <desc>
17626 Time interval in seconds between two consecutive samples of
17627 performance data.
17628 </desc>
17629 </param>
17630 <param name="count" type="unsigned long" dir="in">
17631 <desc>
17632 Number of samples to retain in performance data history. Older
17633 samples get discarded.
17634 </desc>
17635 </param>
17636 <param name="affectedMetrics" type="IPerformanceMetric" dir="return" safearray="yes">
17637 <desc>
17638 Array of metrics that have been modified by the call to this method.
17639 </desc>
17640 </param>
17641 </method>
17642
17643 <method name="enableMetrics">
17644 <desc>
17645 Turns on collecting specified base metrics. Returns an array of
17646 <link to="IPerformanceMetric" /> describing the metrics have been
17647 affected.
17648 <note>
17649 @c Null or empty metric name array means all metrics. @c Null or
17650 empty object array means all existing objects. If metric name array
17651 contains a single element and object array contains many, the single
17652 metric name array element is applied to each object array element to
17653 form metric/object pairs.
17654 </note>
17655 </desc>
17656 <param name="metricNames" type="wstring" dir="in" safearray="yes">
17657 <desc>
17658 Metric name filter. Comma-separated list of metrics with wildcard
17659 support.
17660 </desc>
17661 </param>
17662 <param name="objects" type="$unknown" dir="in" safearray="yes">
17663 <desc>
17664 Set of objects to enable metrics for.
17665 </desc>
17666 </param>
17667 <param name="affectedMetrics" type="IPerformanceMetric" dir="return" safearray="yes">
17668 <desc>
17669 Array of metrics that have been modified by the call to this method.
17670 </desc>
17671 </param>
17672 </method>
17673
17674 <method name="disableMetrics">
17675 <desc>
17676 Turns off collecting specified base metrics. Returns an array of
17677 <link to="IPerformanceMetric" /> describing the metrics have been
17678 affected.
17679 <note>
17680 @c Null or empty metric name array means all metrics. @c Null or
17681 empty object array means all existing objects. If metric name array
17682 contains a single element and object array contains many, the single
17683 metric name array element is applied to each object array element to
17684 form metric/object pairs.
17685 </note>
17686 </desc>
17687 <param name="metricNames" type="wstring" dir="in" safearray="yes">
17688 <desc>
17689 Metric name filter. Comma-separated list of metrics with wildcard
17690 support.
17691 </desc>
17692 </param>
17693 <param name="objects" type="$unknown" dir="in" safearray="yes">
17694 <desc>
17695 Set of objects to disable metrics for.
17696 </desc>
17697 </param>
17698 <param name="affectedMetrics" type="IPerformanceMetric" dir="return" safearray="yes">
17699 <desc>
17700 Array of metrics that have been modified by the call to this method.
17701 </desc>
17702 </param>
17703 </method>
17704
17705 <method name="queryMetricsData">
17706 <desc>
17707 Queries collected metrics data for a set of objects.
17708
17709 The data itself and related metric information are returned in seven
17710 parallel and one flattened array of arrays. Elements of
17711 <tt>returnMetricNames, returnObjects, returnUnits, returnScales,
17712 returnSequenceNumbers, returnDataIndices and returnDataLengths</tt> with
17713 the same index describe one set of values corresponding to a single
17714 metric.
17715
17716 The <tt>returnData</tt> parameter is a flattened array of arrays. Each
17717 start and length of a sub-array is indicated by
17718 <tt>returnDataIndices</tt> and <tt>returnDataLengths</tt>. The first
17719 value for metric <tt>metricNames[i]</tt> is at
17720 <tt>returnData[returnIndices[i]]</tt>.
17721
17722 <note>
17723 @c Null or empty metric name array means all metrics. @c Null or
17724 empty object array means all existing objects. If metric name array
17725 contains a single element and object array contains many, the single
17726 metric name array element is applied to each object array element to
17727 form metric/object pairs.
17728 </note>
17729 <note>
17730 Data collection continues behind the scenes after call to @c
17731 queryMetricsData. The return data can be seen as the snapshot of the
17732 current state at the time of @c queryMetricsData call. The internally
17733 kept metric values are not cleared by the call. This makes possible
17734 querying different subsets of metrics or aggregates with subsequent
17735 calls. If periodic querying is needed it is highly suggested to query
17736 the values with @c interval*count period to avoid confusion. This way
17737 a completely new set of data values will be provided by each query.
17738 </note>
17739 </desc>
17740 <param name="metricNames" type="wstring" dir="in" safearray="yes">
17741 <desc>
17742 Metric name filter. Comma-separated list of metrics with wildcard
17743 support.
17744 </desc>
17745 </param>
17746 <param name="objects" type="$unknown" dir="in" safearray="yes">
17747 <desc>
17748 Set of objects to query metrics for.
17749 </desc>
17750 </param>
17751 <param name="returnMetricNames" type="wstring" dir="out" safearray="yes">
17752 <desc>
17753 Names of metrics returned in @c returnData.
17754 </desc>
17755 </param>
17756 <param name="returnObjects" type="$unknown" dir="out" safearray="yes">
17757 <desc>
17758 Objects associated with metrics returned in @c returnData.
17759 </desc>
17760 </param>
17761 <param name="returnUnits" type="wstring" dir="out" safearray="yes">
17762 <desc>
17763 Units of measurement for each returned metric.
17764 </desc>
17765 </param>
17766 <param name="returnScales" type="unsigned long" dir="out" safearray="yes">
17767 <desc>
17768 Divisor that should be applied to return values in order to get
17769 floating point values. For example:
17770 <tt>(double)returnData[returnDataIndices[0]+i] / returnScales[0]</tt>
17771 will retrieve the floating point value of i-th sample of the first
17772 metric.
17773 </desc>
17774 </param>
17775 <param name="returnSequenceNumbers" type="unsigned long" dir="out" safearray="yes">
17776 <desc>
17777 Sequence numbers of the first elements of value sequences of
17778 particular metrics returned in @c returnData. For aggregate metrics
17779 it is the sequence number of the sample the aggregate started
17780 calculation from.
17781 </desc>
17782 </param>
17783 <param name="returnDataIndices" type="unsigned long" dir="out" safearray="yes">
17784 <desc>
17785 Indices of the first elements of value sequences of particular
17786 metrics returned in @c returnData.
17787 </desc>
17788 </param>
17789 <param name="returnDataLengths" type="unsigned long" dir="out" safearray="yes">
17790 <desc>
17791 Lengths of value sequences of particular metrics.
17792 </desc>
17793 </param>
17794 <param name="returnData" type="long" dir="return" safearray="yes">
17795 <desc>
17796 Flattened array of all metric data containing sequences of values for
17797 each metric.
17798 </desc>
17799 </param>
17800 </method>
17801
17802 </interface>
17803
17804 <enum
17805 name="NATAliasMode"
17806 uuid="67772168-50d9-11df-9669-7fb714ee4fa1"
17807 >
17808 <desc></desc>
17809 <const name="AliasLog" value="0x1">
17810 <desc></desc>
17811 </const>
17812 <const name="AliasProxyOnly" value="0x02">
17813 <desc></desc>
17814 </const>
17815 <const name="AliasUseSamePorts" value="0x04">
17816 <desc></desc>
17817 </const>
17818 </enum>
17819
17820 <enum
17821 name="NATProtocol"
17822 uuid="e90164be-eb03-11de-94af-fff9b1c1b19f"
17823 >
17824 <desc>Protocol definitions used with NAT port-forwarding rules.</desc>
17825 <const name="UDP" value="0">
17826 <desc>Port-forwarding uses UDP protocol.</desc>
17827 </const>
17828 <const name="TCP" value="1">
17829 <desc>Port-forwarding uses TCP protocol.</desc>
17830 </const>
17831 </enum>
17832
17833 <interface
17834 name="INATEngine" extends="$unknown"
17835 uuid="4b286616-eb03-11de-b0fb-1701eca42246"
17836 wsmap="managed"
17837 >
17838 <desc>Interface for managing a NAT engine which is used with a virtual machine. This
17839 allows for changing NAT behavior such as port-forwarding rules. This interface is
17840 used in the <link to="INetworkAdapter::natDriver" /> attribute.</desc>
17841 <attribute name="network" type="wstring">
17842 <desc>The network attribute of the NAT engine (the same value is used with built-in
17843 DHCP server to fill corresponding fields of DHCP leases).</desc>
17844 </attribute>
17845 <attribute name="hostIP" type="wstring">
17846 <desc>IP of host interface to bind all opened sockets to.
17847 <note>Changing this does not change binding of port forwarding.</note>
17848 </desc>
17849 </attribute>
17850 <attribute name="tftpPrefix" type="wstring">
17851 <desc>TFTP prefix attribute which is used with the built-in DHCP server to fill
17852 the corresponding fields of DHCP leases.</desc>
17853 </attribute>
17854 <attribute name="tftpBootFile" type="wstring">
17855 <desc>TFTP boot file attribute which is used with the built-in DHCP server to fill
17856 the corresponding fields of DHCP leases.</desc>
17857 </attribute>
17858 <attribute name="tftpNextServer" type="wstring">
17859 <desc>TFTP server attribute which is used with the built-in DHCP server to fill
17860 the corresponding fields of DHCP leases.
17861 <note>The preferred form is IPv4 addresses.</note>
17862 </desc>
17863 </attribute>
17864 <attribute name="aliasMode" type="unsigned long">
17865 <desc></desc>
17866 </attribute>
17867 <attribute name="dnsPassDomain" type="boolean">
17868 <desc>Whether the DHCP server should pass the DNS domain used by the host.</desc>
17869 </attribute>
17870 <attribute name="dnsProxy" type="boolean">
17871 <desc>Whether the DHCP server (and the DNS traffic by NAT) should pass the address
17872 of the DNS proxy and process traffic using DNS servers registered on the host.</desc>
17873 </attribute>
17874 <attribute name="dnsUseHostResolver" type="boolean">
17875 <desc>Whether the DHCP server (and the DNS traffic by NAT) should pass the address
17876 of the DNS proxy and process traffic using the host resolver mechanism.</desc>
17877 </attribute>
17878 <attribute name="redirects" type="wstring" readonly="yes" safearray="yes">
17879 <desc>Array of NAT port-forwarding rules in string representation, in the following
17880 format: "name,protocol id,host ip,host port,guest ip,guest port".</desc>
17881 </attribute>
17882 <method name="setNetworkSettings">
17883 <desc>Sets network configuration of the NAT engine.</desc>
17884 <param name="mtu" type="unsigned long" dir="in">
17885 <desc>MTU (maximum transmission unit) of the NAT engine in bytes.</desc>
17886 </param>
17887 <param name="sockSnd" type="unsigned long" dir="in">
17888 <desc>Capacity of the socket send buffer in bytes when creating a new socket.</desc>
17889 </param>
17890 <param name="sockRcv" type="unsigned long" dir="in">
17891 <desc>Capacity of the socket receive buffer in bytes when creating a new socket.</desc>
17892 </param>
17893 <param name="TcpWndSnd" type="unsigned long" dir="in">
17894 <desc>Initial size of the NAT engine's sending TCP window in bytes when
17895 establishing a new TCP connection.</desc>
17896 </param>
17897 <param name="TcpWndRcv" type="unsigned long" dir="in">
17898 <desc>Initial size of the NAT engine's receiving TCP window in bytes when
17899 establishing a new TCP connection.</desc>
17900 </param>
17901 </method>
17902 <method name="getNetworkSettings">
17903 <desc>Returns network configuration of NAT engine. See <link to="#setNetworkSettings" />
17904 for parameter descriptions.</desc>
17905 <param name="mtu" type="unsigned long" dir="out" />
17906 <param name="sockSnd" type="unsigned long" dir="out" />
17907 <param name="sockRcv" type="unsigned long" dir="out" />
17908 <param name="TcpWndSnd" type="unsigned long" dir="out" />
17909 <param name="TcpWndRcv" type="unsigned long" dir="out" />
17910 </method>
17911 <method name="addRedirect">
17912 <desc>Adds a new NAT port-forwarding rule.</desc>
17913 <param name="name" type="wstring" dir="in">
17914 <desc>The name of the rule. An empty name is acceptable, in which case the NAT engine
17915 auto-generates one using the other parameters.</desc>
17916 </param>
17917 <param name="proto" type="NATProtocol" dir="in">
17918 <desc>Protocol handled with the rule.</desc>
17919 </param>
17920 <param name="hostIp" type="wstring" dir="in">
17921 <desc>IP of the host interface to which the rule should apply. An empty ip address is
17922 acceptable, in which case the NAT engine binds the handling socket to any interface.</desc>
17923 </param>
17924 <param name="hostPort" type="unsigned short" dir="in">
17925 <desc>The port number to listen on.</desc>
17926 </param>
17927 <param name="guestIp" type="wstring" dir="in">
17928 <desc>The IP address of the guest which the NAT engine will forward matching packets
17929 to. An empty IP address is acceptable, in which case the NAT engine will forward
17930 packets to the first DHCP lease (x.x.x.15).</desc>
17931 </param>
17932 <param name="guestPort" type="unsigned short" dir="in">
17933 <desc>The port number to forward.</desc>
17934 </param>
17935 </method>
17936 <method name="removeRedirect">
17937 <desc>Removes a port-forwarding rule that was previously registered.</desc>
17938 <param name="name" type="wstring" dir="in">
17939 <desc>The name of the rule to delete.</desc>
17940 </param>
17941 </method>
17942 </interface>
17943
17944 <!--
17945 // IExtPackManager
17946 /////////////////////////////////////////////////////////////////////////
17947 -->
17948
17949 <interface
17950 name="IExtPackPlugIn" extends="$unknown"
17951 uuid="58000040-e718-4746-bbce-4b86d96da461"
17952 wsmap="suppress"
17953 >
17954 <desc>
17955 Interface for keeping information about a plug-in that ships with an
17956 extension pack.
17957 </desc>
17958 <attribute name="name" type="wstring" readonly="yes">
17959 <desc>The plug-in name.</desc>
17960 </attribute>
17961 <attribute name="description" type="wstring" readonly="yes">
17962 <desc>The plug-in description.</desc>
17963 </attribute>
17964 <attribute name="frontend" type="wstring" readonly="yes">
17965 <desc>
17966 The name of the frontend or component name this plug-in plugs into.
17967 </desc>
17968 </attribute>
17969 <attribute name="modulePath" type="wstring" readonly="yes">
17970 <desc> The module path. </desc>
17971 </attribute>
17972 </interface>
17973
17974 <interface
17975 name="IExtPackBase" extends="$unknown"
17976 uuid="f79b75d8-2890-4f34-ffff-ffffa144e82c"
17977 wsmap="suppress"
17978 >
17979 <desc>
17980 Interface for querying information about an extension pack as well as
17981 accessing COM objects within it.
17982 </desc>
17983 <attribute name="name" type="wstring" readonly="yes">
17984 <desc>The extension pack name. This is unique.</desc>
17985 </attribute>
17986 <attribute name="description" type="wstring" readonly="yes">
17987 <desc>The extension pack description.</desc>
17988 </attribute>
17989 <attribute name="version" type="wstring" readonly="yes">
17990 <desc>
17991 The extension pack version string. This is restricted to the dotted
17992 version number and optionally a build indicator. No tree revision or
17993 tag will be included in the string as those things are available as
17994 separate properties. An optional publisher tag may be present like for
17995 <link to="IVirtualBox::version"/>.
17996
17997 Examples: "1.2.3", "1.2.3_BETA1" and "1.2.3_RC2".
17998 </desc>
17999 </attribute>
18000 <attribute name="revision" type="unsigned long" readonly="yes">
18001 <desc>The extension pack internal revision number.</desc>
18002 </attribute>
18003 <attribute name="edition" type="wstring" readonly="yes">
18004 <desc>
18005 Edition indicator. This is usually empty.
18006
18007 Can for instance be used to help distinguishing between two editions
18008 of the same extension pack where only the license, service contract or
18009 something differs.
18010 </desc>
18011 </attribute>
18012 <attribute name="VRDEModule" type="wstring" readonly="yes">
18013 <desc>The name of the VRDE module if the extension pack sports one.</desc>
18014 </attribute>
18015 <attribute name="plugIns" type="IExtPackPlugIn" safearray="yes" readonly="yes">
18016 <desc>Plug-ins provided by this extension pack.</desc>
18017 </attribute>
18018 <attribute name="usable" type="boolean" readonly="yes">
18019 <desc>
18020 Indicates whether the extension pack is usable or not.
18021
18022 There are a number of reasons why an extension pack might be unusable,
18023 typical examples would be broken installation/file or that it is
18024 incompatible with the current VirtualBox version.
18025 </desc>
18026 </attribute>
18027 <attribute name="whyUnusable" type="wstring" readonly="yes">
18028 <desc>
18029 String indicating why the extension pack is not usable. This is an
18030 empty string if usable and always a non-empty string if not usable.
18031 </desc>
18032 </attribute>
18033 <attribute name="showLicense" type="boolean" readonly="yes">
18034 <desc>Whether to show the license before installation</desc>
18035 </attribute>
18036 <attribute name="license" type="wstring" readonly="yes">
18037 <desc>
18038 The default HTML license text for the extension pack. Same as
18039 calling <link to="#queryLicense">queryLicense</link> with
18040 preferredLocale and preferredLanguage as empty strings and format set
18041 to html.
18042 </desc>
18043 </attribute>
18044
18045 <method name="queryLicense">
18046 <desc>
18047 Full feature version of the license attribute.
18048 </desc>
18049 <param name="preferredLocale" type="wstring" dir="in">
18050 <desc>
18051 The preferred license locale. Pass an empty string to get the default
18052 license.
18053 </desc>
18054 </param>
18055 <param name="preferredLanguage" type="wstring" dir="in">
18056 <desc>
18057 The preferred license language. Pass an empty string to get the
18058 default language for the locale.
18059 </desc>
18060 </param>
18061 <param name="format" type="wstring" dir="in">
18062 <desc>
18063 The license format: html, rtf or txt. If a license is present there
18064 will always be an HTML of it, the rich text format (RTF) and plain
18065 text (txt) versions are optional. If
18066 </desc>
18067 </param>
18068 <param name="licenseText" type="wstring" dir="return">
18069 <desc>The license text.</desc>
18070 </param>
18071 </method>
18072
18073 </interface>
18074
18075 <interface
18076 name="IExtPack" extends="IExtPackBase"
18077 uuid="431685da-3618-4ebc-b038-833ba829b4b2"
18078 wsmap="suppress"
18079 >
18080 <desc>
18081 Interface for querying information about an extension pack as well as
18082 accessing COM objects within it.
18083 </desc>
18084 <method name="queryObject">
18085 <desc>
18086 Queries the IUnknown interface to an object in the extension pack
18087 main module. This allows plug-ins and others to talk directly to an
18088 extension pack.
18089 </desc>
18090 <param name="objUuid" type="wstring" dir="in">
18091 <desc>The object ID. What exactly this is </desc>
18092 </param>
18093 <param name="returnInterface" type="$unknown" dir="return">
18094 <desc>The queried interface.</desc>
18095 </param>
18096 </method>
18097 </interface>
18098
18099 <interface
18100 name="IExtPackFile" extends="IExtPackBase"
18101 uuid="b6b49f55-efcc-4f08-b486-56e8d8afb10b"
18102 wsmap="suppress"
18103 >
18104 <desc>
18105 Extension pack file (aka tarball, .vbox-extpack) representation returned
18106 by <link to="IExtPackManager::openExtPackFile"/>. This provides the base
18107 extension pack information with the addition of the file name.
18108 </desc>
18109 <attribute name="filePath" type="wstring" readonly="yes">
18110 <desc>
18111 The path to the extension pack file.
18112 </desc>
18113 </attribute>
18114
18115 <method name="install">
18116 <desc>
18117 Install the extension pack.
18118 </desc>
18119 <param name="replace" type="boolean" dir="in">
18120 <desc>
18121 Set this to automatically uninstall any existing extension pack with
18122 the same name as the one being installed.
18123 </desc>
18124 </param>
18125 <param name="displayInfo" type="wstring" dir="in">
18126 <desc>
18127 Platform specific display information. Reserved for future hacks.
18128 </desc>
18129 </param>
18130 <param name="progess" type="IProgress" dir="return">
18131 <desc>
18132 Progress object for the operation.
18133 </desc>
18134 </param>
18135 </method>
18136 </interface>
18137
18138 <interface
18139 name="IExtPackManager" extends="$unknown"
18140 uuid="3295e6ce-b051-47b2-9514-2c588bfe7554"
18141 wsmap="suppress"
18142 >
18143 <desc>
18144 Interface for managing VirtualBox Extension Packs.
18145
18146 TODO: Describe extension packs, how they are managed and how to create
18147 one.
18148 </desc>
18149
18150 <attribute name="installedExtPacks" type="IExtPack" safearray="yes" readonly="yes">
18151 <desc>
18152 List of the installed extension packs.
18153 </desc>
18154 </attribute>
18155
18156 <method name="find">
18157 <desc>
18158 Returns the extension pack with the specified name if found.
18159
18160 <result name="VBOX_E_OBJECT_NOT_FOUND">
18161 No extension pack matching @a name was found.
18162 </result>
18163 </desc>
18164 <param name="name" type="wstring" dir="in">
18165 <desc>The name of the extension pack to locate.</desc>
18166 </param>
18167 <param name="returnData" type="IExtPack" dir="return">
18168 <desc>The extension pack if found.</desc>
18169 </param>
18170 </method>
18171
18172 <method name="openExtPackFile">
18173 <desc>
18174 Attempts to open an extension pack file in preparation for
18175 installation.
18176 </desc>
18177 <param name="path" type="wstring" dir="in">
18178 <desc>The path of the extension pack tarball. This can optionally be
18179 followed by a "::SHA-256=hex-digit" of the tarball. </desc>
18180 </param>
18181 <param name="file" type="IExtPackFile" dir="return">
18182 <desc>The interface of the extension pack file object.</desc>
18183 </param>
18184 </method>
18185
18186 <method name="uninstall">
18187 <desc>Uninstalls an extension pack, removing all related files.</desc>
18188 <param name="name" type="wstring" dir="in">
18189 <desc>The name of the extension pack to uninstall.</desc>
18190 </param>
18191 <param name="forcedRemoval" type="boolean" dir="in">
18192 <desc>
18193 Forced removal of the extension pack. This means that the uninstall
18194 hook will not be called.
18195 </desc>
18196 </param>
18197 <param name="displayInfo" type="wstring" dir="in">
18198 <desc>
18199 Platform specific display information. Reserved for future hacks.
18200 </desc>
18201 </param>
18202 <param name="progess" type="IProgress" dir="return">
18203 <desc>
18204 Progress object for the operation.
18205 </desc>
18206 </param>
18207 </method>
18208
18209 <method name="cleanup">
18210 <desc>Cleans up failed installs and uninstalls</desc>
18211 </method>
18212
18213 <method name="queryAllPlugInsForFrontend">
18214 <desc>
18215 Gets the path to all the plug-in modules for a given frontend.
18216
18217 This is a convenience method that is intended to simplify the plug-in
18218 loading process for a frontend.
18219 </desc>
18220 <param name="frontendName" type="wstring" dir="in">
18221 <desc>The name of the frontend or component.</desc>
18222 </param>
18223 <param name="plugInModules" type="wstring" dir="return" safearray="yes">
18224 <desc>Array containing the plug-in modules (full paths).</desc>
18225 </param>
18226 </method>
18227
18228 <method name="isExtPackUsable">
18229 <desc>Check if the given extension pack is loaded and usable.</desc>
18230 <param name="name" type="wstring" dir="in">
18231 <desc>The name of the extension pack to check for.</desc>
18232 </param>
18233 <param name="usable" type="boolean" dir="return">
18234 <desc>Is the given extension pack loaded and usable.</desc>
18235 </param>
18236 </method>
18237
18238 </interface>
18239
18240 <!--
18241 // BandwidthGroupType
18242 /////////////////////////////////////////////////////////////////////////
18243 -->
18244 <enum
18245 name="BandwidthGroupType"
18246 uuid="1d92b67d-dc69-4be9-ad4c-93a01e1e0c8e">
18247
18248 <desc>
18249 Type of a bandwidth control group.
18250 </desc>
18251
18252 <const name="Null" value="0">
18253 <desc>
18254 Null type, must be first.
18255 </desc>
18256 </const>
18257
18258 <const name="Disk" value="1">
18259 <desc>
18260 The bandwidth group controls disk I/O.
18261 </desc>
18262 </const>
18263
18264 <const name="Network" value="2">
18265 <desc>
18266 The bandwidth group controls network I/O.
18267 </desc>
18268 </const>
18269
18270 </enum>
18271
18272 <!--
18273 // IBandwidthGroup
18274 /////////////////////////////////////////////////////////////////////////
18275 -->
18276 <interface
18277 name="IBandwidthGroup" extends="$unknown"
18278 uuid="badea2d7-0261-4146-89f0-6a57cc34833d"
18279 wsmap="managed"
18280 >
18281 <desc>Represents one bandwidth group.</desc>
18282
18283 <attribute name="name" type="wstring" readonly="yes">
18284 <desc>Name of the group.</desc>
18285 </attribute>
18286
18287 <attribute name="type" type="BandwidthGroupType" readonly="yes">
18288 <desc>Type of the group.</desc>
18289 </attribute>
18290
18291 <attribute name="reference" type="unsigned long" readonly="yes">
18292 <desc>How many devices/medium attachements use this group.</desc>
18293 </attribute>
18294
18295 <attribute name="maxBytesPerSec" type="long long">
18296 <desc>The maximum number of bytes which can be transfered by all
18297 entities attached to this group during one second.</desc>
18298 </attribute>
18299
18300 </interface>
18301
18302 <!--
18303 // IBandwidthControl
18304 /////////////////////////////////////////////////////////////////////////
18305 -->
18306 <interface
18307 name="IBandwidthControl" extends="$unknown"
18308 uuid="e2eb3930-d2f4-4f87-be17-0707e30f019f"
18309 wsmap="managed"
18310 >
18311 <desc>
18312 Controls the bandwidth groups of one machine used to cap I/O done by a VM.
18313 This includes network and disk I/O.
18314 </desc>
18315
18316 <attribute name="numGroups" type="unsigned long" readonly="yes">
18317 <desc>
18318 The current number of existing bandwidth groups managed.
18319 </desc>
18320 </attribute>
18321
18322 <method name="createBandwidthGroup">
18323 <desc>
18324 Creates a new bandwidth group.
18325 </desc>
18326
18327 <param name="name" type="wstring" dir="in">
18328 <desc>Name of the bandwidth group.</desc>
18329 </param>
18330 <param name="type" type="BandwidthGroupType" dir="in">
18331 <desc>The type of the bandwidth group (network or disk).</desc>
18332 </param>
18333 <param name="maxBytesPerSec" type="long long" dir="in">
18334 <desc>The maximum number of bytes which can be transfered by all
18335 entities attached to this group during one second.</desc>
18336 </param>
18337 </method>
18338
18339 <method name="deleteBandwidthGroup">
18340 <desc>
18341 Deletes a new bandwidth group.
18342 </desc>
18343
18344 <param name="name" type="wstring" dir="in">
18345 <desc>Name of the bandwidth group to delete.</desc>
18346 </param>
18347 </method>
18348
18349 <method name="getBandwidthGroup" const="yes">
18350 <desc>
18351 Get a bandwidth group by name.
18352 </desc>
18353
18354 <param name="name" type="wstring" dir="in">
18355 <desc>Name of the bandwidth group to get.</desc>
18356 </param>
18357 <param name="bandwidthGroup" type="IBandwidthGroup" dir="return">
18358 <desc>Where to store the bandwidth group on success.</desc>
18359 </param>
18360 </method>
18361
18362 <method name="getAllBandwidthGroups" const="yes">
18363 <desc>
18364 Get all managed bandwidth groups.
18365 </desc>
18366
18367 <param name="bandwidthGroups" type="IBandwidthGroup" dir="return" safearray="yes">
18368 <desc>The array of managed bandwidth groups.</desc>
18369 </param>
18370 </method>
18371 </interface>
18372
18373 <!--
18374 // IVirtualBoxClient
18375 /////////////////////////////////////////////////////////////////////////
18376 -->
18377
18378 <interface
18379 name="IVirtualBoxClient" extends="$unknown"
18380 uuid="5fe0bd48-1181-40d1-991f-3b02f269a823"
18381 wsmap="suppress"
18382 >
18383 <desc>
18384 Convenience interface for client applications. Treat this as a
18385 singleton, i.e. never create more than one instance of this interface.
18386
18387 At the moment only available for clients of the local API (not usable
18388 via the webservice). Once the session logic is redesigned this might
18389 change.
18390 </desc>
18391
18392 <attribute name="virtualBox" type="IVirtualBox" readonly="yes">
18393 <desc>
18394 Reference to the server-side API root object.
18395 </desc>
18396 </attribute>
18397
18398 <attribute name="session" type="ISession" readonly="yes">
18399 <desc>
18400 Create a new session object and return the reference to it.
18401 </desc>
18402 </attribute>
18403
18404 <attribute name="eventSource" type="IEventSource" readonly="yes">
18405 <desc>
18406 Event source for VirtualBoxClient events.
18407 </desc>
18408 </attribute>
18409
18410 </interface>
18411
18412 <!--
18413 // Events
18414 /////////////////////////////////////////////////////////////////////////
18415 -->
18416 <enum
18417 name="VBoxEventType"
18418 uuid="b627520a-6b1a-4a9a-914d-f31434d3d10f"
18419 >
18420
18421 <desc>
18422 Type of an event.
18423 See <link to="IEvent" /> for an introduction to VirtualBox event handling.
18424 </desc>
18425
18426 <const name="Invalid" value="0">
18427 <desc>
18428 Invalid event, must be first.
18429 </desc>
18430 </const>
18431
18432 <const name="Any" value="1">
18433 <desc>
18434 Wildcard for all events.
18435 Events of this type are never delivered, and only used in
18436 <link to="IEventSource::registerListener"/> call to simplify registration.
18437 </desc>
18438 </const>
18439
18440 <const name="Vetoable" value="2">
18441 <desc>
18442 Wildcard for all vetoable events. Events of this type are never delivered, and only
18443 used in <link to="IEventSource::registerListener"/> call to simplify registration.
18444 </desc>
18445 </const>
18446
18447 <const name="MachineEvent" value="3">
18448 <desc>
18449 Wildcard for all machine events. Events of this type are never delivered, and only used in
18450 <link to="IEventSource::registerListener"/> call to simplify registration.
18451 </desc>
18452 </const>
18453
18454 <const name="SnapshotEvent" value="4">
18455 <desc>
18456 Wildcard for all snapshot events. Events of this type are never delivered, and only used in
18457 <link to="IEventSource::registerListener"/> call to simplify registration.
18458 </desc>
18459 </const>
18460
18461 <const name="InputEvent" value="5">
18462 <desc>
18463 Wildcard for all input device (keyboard, mouse) events.
18464 Events of this type are never delivered, and only used in
18465 <link to="IEventSource::registerListener"/> call to simplify registration.
18466 </desc>
18467 </const>
18468
18469 <const name="LastWildcard" value="31">
18470 <desc>
18471 Last wildcard.
18472 </desc>
18473 </const>
18474
18475 <const name="OnMachineStateChanged" value="32">
18476 <desc>
18477 See <link to="IMachineStateChangedEvent">IMachineStateChangedEvent</link>.
18478 </desc>
18479 </const>
18480 <const name="OnMachineDataChanged" value="33">
18481 <desc>
18482 See <link to="IMachineDataChangedEvent">IMachineDataChangedEvent</link>.
18483 </desc>
18484 </const>
18485 <const name="OnExtraDataChanged" value="34">
18486 <desc>
18487 See <link to="IExtraDataChangedEvent">IExtraDataChangedEvent</link>.
18488 </desc>
18489 </const>
18490 <const name="OnExtraDataCanChange" value="35">
18491 <desc>
18492 See <link to="IExtraDataCanChangeEvent">IExtraDataCanChangeEvent</link>.
18493 </desc>
18494 </const>
18495 <const name="OnMediumRegistered" value="36">
18496 <desc>
18497 See <link to="IMediumRegisteredEvent">IMediumRegisteredEvent</link>.
18498 </desc>
18499 </const>
18500 <const name="OnMachineRegistered" value="37">
18501 <desc>
18502 See <link to="IMachineRegisteredEvent">IMachineRegisteredEvent</link>.
18503 </desc>
18504 </const>
18505 <const name="OnSessionStateChanged" value="38">
18506 <desc>
18507 See <link to="ISessionStateChangedEvent">ISessionStateChangedEvent</link>.
18508 </desc>
18509 </const>
18510 <const name="OnSnapshotTaken" value="39">
18511 <desc>
18512 See <link to="ISnapshotTakenEvent">ISnapshotTakenEvent</link>.
18513 </desc>
18514 </const>
18515 <const name="OnSnapshotDeleted" value="40">
18516 <desc>
18517 See <link to="ISnapshotDeletedEvent">ISnapshotDeletedEvent</link>.
18518 </desc>
18519 </const>
18520 <const name="OnSnapshotChanged" value="41">
18521 <desc>
18522 See <link to="ISnapshotChangedEvent">ISnapshotChangedEvent</link>.
18523 </desc>
18524 </const>
18525 <const name="OnGuestPropertyChanged" value="42">
18526 <desc>
18527 See <link to="IGuestPropertyChangedEvent">IGuestPropertyChangedEvent</link>.
18528 </desc>
18529 </const>
18530 <!-- Console events -->
18531 <const name="OnMousePointerShapeChanged" value="43">
18532 <desc>
18533 See <link to="IMousePointerShapeChangedEvent">IMousePointerShapeChangedEvent</link>.
18534 </desc>
18535 </const>
18536 <const name="OnMouseCapabilityChanged" value="44">
18537 <desc>
18538 See <link to="IMouseCapabilityChangedEvent">IMouseCapabilityChangedEvent</link>.
18539 </desc>
18540 </const>
18541 <const name="OnKeyboardLedsChanged" value="45">
18542 <desc>
18543 See <link to="IKeyboardLedsChangedEvent">IKeyboardLedsChangedEvent</link>.
18544 </desc>
18545 </const>
18546 <const name="OnStateChanged" value="46">
18547 <desc>
18548 See <link to="IStateChangedEvent">IStateChangedEvent</link>.
18549 </desc>
18550 </const>
18551 <const name="OnAdditionsStateChanged" value="47">
18552 <desc>
18553 See <link to="IAdditionsStateChangedEvent">IAdditionsStateChangedEvent</link>.
18554 </desc>
18555 </const>
18556 <const name="OnNetworkAdapterChanged" value="48">
18557 <desc>
18558 See <link to="INetworkAdapterChangedEvent">INetworkAdapterChangedEvent</link>.
18559 </desc>
18560 </const>
18561 <const name="OnSerialPortChanged" value="49">
18562 <desc>
18563 See <link to="ISerialPortChangedEvent">ISerialPortChangedEvent</link>.
18564 </desc>
18565 </const>
18566 <const name="OnParallelPortChanged" value="50">
18567 <desc>
18568 See <link to="IParallelPortChangedEvent">IParallelPortChangedEvent</link>.
18569 </desc>
18570 </const>
18571 <const name="OnStorageControllerChanged" value="51">
18572 <desc>
18573 See <link to="IStorageControllerChangedEvent">IStorageControllerChangedEvent</link>.
18574 </desc>
18575 </const>
18576 <const name="OnMediumChanged" value="52">
18577 <desc>
18578 See <link to="IMediumChangedEvent">IMediumChangedEvent</link>.
18579 </desc>
18580 </const>
18581 <const name="OnVRDEServerChanged" value="53">
18582 <desc>
18583 See <link to="IVRDEServerChangedEvent">IVRDEServerChangedEvent</link>.
18584 </desc>
18585 </const>
18586 <const name="OnUSBControllerChanged" value="54">
18587 <desc>
18588 See <link to="IUSBControllerChangedEvent">IUSBControllerChangedEvent</link>.
18589 </desc>
18590 </const>
18591 <const name="OnUSBDeviceStateChanged" value="55">
18592 <desc>
18593 See <link to="IUSBDeviceStateChangedEvent">IUSBDeviceStateChangedEvent</link>.
18594 </desc>
18595 </const>
18596 <const name="OnSharedFolderChanged" value="56">
18597 <desc>
18598 See <link to="ISharedFolderChangedEvent">ISharedFolderChangedEvent</link>.
18599 </desc>
18600 </const>
18601 <const name="OnRuntimeError" value="57">
18602 <desc>
18603 See <link to="IRuntimeErrorEvent">IRuntimeErrorEvent</link>.
18604 </desc>
18605 </const>
18606 <const name="OnCanShowWindow" value="58">
18607 <desc>
18608 See <link to="ICanShowWindowEvent">ICanShowWindowEvent</link>.
18609 </desc>
18610 </const>
18611 <const name="OnShowWindow" value="59">
18612 <desc>
18613 See <link to="IShowWindowEvent">IShowWindowEvent</link>.
18614 </desc>
18615 </const>
18616 <const name="OnCPUChanged" value="60">
18617 <desc>
18618 See <link to="ICPUChangedEvent">ICPUChangedEvent</link>.
18619 </desc>
18620 </const>
18621 <const name="OnVRDEServerInfoChanged" value="61">
18622 <desc>
18623 See <link to="IVRDEServerInfoChangedEvent">IVRDEServerInfoChangedEvent</link>.
18624 </desc>
18625 </const>
18626 <const name="OnEventSourceChanged" value="62">
18627 <desc>
18628 See <link to="IEventSourceChangedEvent">IEventSourceChangedEvent</link>.
18629 </desc>
18630 </const>
18631 <const name="OnCPUExecutionCapChanged" value="63">
18632 <desc>
18633 See <link to="ICPUExecutionCapChangedEvent">ICPUExecutionCapChangedEvent</link>.
18634 </desc>
18635 </const>
18636 <const name="OnGuestKeyboard" value="64">
18637 <desc>
18638 See <link to="IGuestKeyboardEvent">IGuestKeyboardEvent</link>.
18639 </desc>
18640 </const>
18641 <const name="OnGuestMouse" value="65">
18642 <desc>
18643 See <link to="IGuestMouseEvent">IGuestMouseEvent</link>.
18644 </desc>
18645 </const>
18646 <const name="OnNATRedirect" value="66">
18647 <desc>
18648 See <link to="INATRedirectEvent">INATRedirectEvent</link>.
18649 </desc>
18650 </const>
18651 <const name="OnHostPciDevicePlug" value="67">
18652 <desc>
18653 See <link to="IHostPciDevicePlugEvent">IHostPciDevicePlugEvent</link>.
18654 </desc>
18655 </const>
18656 <const name="OnVBoxSVCAvailabilityChanged" value="68">
18657 <desc>
18658 See <link to="IVBoxSVCAvailabilityChangedEvent">IVBoxSVCAvailablityChangedEvent</link>.
18659 </desc>
18660 </const>
18661 <const name="OnBandwidthGroupChanged" value="69">
18662 <desc>
18663 See <link to="IBandwidthGroupChangedEvent">IBandwidthGroupChangedEvent</link>.
18664 </desc>
18665 </const>
18666 <const name="OnGuestMonitorChanged" value="70">
18667 <desc>
18668 See <link to="IGuestMonitorChangedEvent">IGuestMonitorChangedEvent</link>.
18669 </desc>
18670 </const>
18671 <const name="OnStorageDeviceChanged" value="71">
18672 <desc>
18673 See <link to="IStorageDeviceChangedEvent">IStorageDeviceChangedEvent</link>.
18674 </desc>
18675 </const>
18676 <const name="OnClipboardModeChanged" value="72">
18677 <desc>
18678 See <link to="IClipboardModeChangedEvent">IClipboardModeChangedEvent</link>.
18679 </desc>
18680 </const>
18681 <const name="OnDragAndDropModeChanged" value="73">
18682 <desc>
18683 See <link to="IDragAndDropModeChangedEvent">IDragAndDropModeChangedEvent</link>.
18684 </desc>
18685 </const>
18686
18687 <!-- Last event marker -->
18688 <const name="Last" value="74">
18689 <desc>
18690 Must be last event, used for iterations and structures relying on numerical event values.
18691 </desc>
18692 </const>
18693
18694 </enum>
18695
18696 <interface
18697 name="IEventSource" extends="$unknown"
18698 uuid="9b6e1aee-35f3-4f4d-b5bb-ed0ecefd8538"
18699 wsmap="managed"
18700 >
18701 <desc>
18702 Event source. Generally, any object which could generate events can be an event source,
18703 or aggregate one. To simplify using one-way protocols such as webservices running on top of HTTP(S),
18704 an event source can work with listeners in either active or passive mode. In active mode it is up to
18705 the IEventSource implementation to call <link to="IEventListener::handleEvent" />, in passive mode the
18706 event source keeps track of pending events for each listener and returns available events on demand.
18707
18708 See <link to="IEvent" /> for an introduction to VirtualBox event handling.
18709 </desc>
18710
18711 <method name="createListener">
18712 <desc>
18713 Creates a new listener object, useful for passive mode.
18714 </desc>
18715 <param name="listener" type="IEventListener" dir="return"/>
18716 </method>
18717
18718 <method name="createAggregator">
18719 <desc>
18720 Creates an aggregator event source, collecting events from multiple sources.
18721 This way a single listener can listen for events coming from multiple sources,
18722 using a single blocking <link to="#getEvent"/> on the returned aggregator.
18723 </desc>
18724 <param name="subordinates" type="IEventSource" dir="in" safearray="yes">
18725 <desc>
18726 Subordinate event source this one aggregatres.
18727 </desc>
18728 </param>
18729 <param name="result" type="IEventSource" dir="return">
18730 <desc>
18731 Event source aggregating passed sources.
18732 </desc>
18733 </param>
18734 </method>
18735
18736 <method name="registerListener">
18737 <desc>
18738 Register an event listener.
18739
18740 <note>
18741 To avoid system overload, the VirtualBox server process checks if passive event
18742 listeners call <link to="IEventSource::getEvent"/> frequently enough. In the
18743 current implementation, if more than 500 pending events are detected for a passive
18744 event listener, it is forcefully unregistered by the system, and further
18745 <link to="#getEvent" /> calls will return @c VBOX_E_OBJECT_NOT_FOUND.
18746 </note>
18747 </desc>
18748 <param name="listener" type="IEventListener" dir="in">
18749 <desc>Listener to register.</desc>
18750 </param>
18751 <param name="interesting" type="VBoxEventType" dir="in" safearray="yes">
18752 <desc>
18753 Event types listener is interested in. One can use wildcards like -
18754 <link to="VBoxEventType_Any"/> to specify wildcards, matching more
18755 than one event.
18756 </desc>
18757 </param>
18758 <param name="active" type="boolean" dir="in">
18759 <desc>
18760 Which mode this listener is operating in.
18761 In active mode, <link to="IEventListener::handleEvent" /> is called directly.
18762 In passive mode, an internal event queue is created for this this IEventListener.
18763 For each event coming in, it is added to queues for all interested registered passive
18764 listeners. It is then up to the external code to call the listener's
18765 <link to="IEventListener::handleEvent" /> method. When done with an event, the
18766 external code must call <link to="#eventProcessed" />.
18767 </desc>
18768 </param>
18769 </method>
18770
18771 <method name="unregisterListener">
18772 <desc>
18773 Unregister an event listener. If listener is passive, and some waitable events are still
18774 in queue they are marked as processed automatically.
18775 </desc>
18776 <param name="listener" type="IEventListener" dir="in">
18777 <desc>Listener to unregister.</desc>
18778 </param>
18779 </method>
18780
18781 <method name="fireEvent">
18782 <desc>
18783 Fire an event for this source.
18784 </desc>
18785 <param name="event" type="IEvent" dir="in">
18786 <desc>Event to deliver.</desc>
18787 </param>
18788 <param name="timeout" type="long" dir="in">
18789 <desc>
18790 Maximum time to wait for event processing (if event is waitable), in ms;
18791 0 = no wait, -1 = indefinite wait.
18792 </desc>
18793 </param>
18794 <param name="result" type="boolean" dir="return">
18795 <desc>true if an event was delivered to all targets, or is non-waitable.</desc>
18796 </param>
18797 </method>
18798
18799 <method name="getEvent">
18800 <desc>
18801 Get events from this peer's event queue (for passive mode). Calling this method
18802 regularly is required for passive event listeners to avoid system overload;
18803 see <link to="IEventSource::registerListener" /> for details.
18804
18805 <result name="VBOX_E_OBJECT_NOT_FOUND">
18806 Listener is not registered, or autounregistered.
18807 </result>
18808 </desc>
18809 <param name="listener" type="IEventListener" dir="in">
18810 <desc>Which listener to get data for.</desc>
18811 </param>
18812 <param name="timeout" type="long" dir="in">
18813 <desc>
18814 Maximum time to wait for events, in ms;
18815 0 = no wait, -1 = indefinite wait.
18816 </desc>
18817 </param>
18818 <param name="event" type="IEvent" dir="return">
18819 <desc>Event retrieved, or null if none available.</desc>
18820 </param>
18821 </method>
18822
18823 <method name="eventProcessed">
18824 <desc>
18825 Must be called for waitable events after a particular listener finished its
18826 event processing. When all listeners of a particular event have called this
18827 method, the system will then call <link to="IEvent::setProcessed" />.
18828 </desc>
18829 <param name="listener" type="IEventListener" dir="in">
18830 <desc>Which listener processed event.</desc>
18831 </param>
18832 <param name="event" type="IEvent" dir="in">
18833 <desc>Which event.</desc>
18834 </param>
18835 </method>
18836
18837 </interface>
18838
18839 <interface
18840 name="IEventListener" extends="$unknown"
18841 uuid="67099191-32e7-4f6c-85ee-422304c71b90"
18842 wsmap="managed"
18843 >
18844 <desc>
18845 Event listener. An event listener can work in either active or passive mode, depending on the way
18846 it was registered.
18847 See <link to="IEvent" /> for an introduction to VirtualBox event handling.
18848 </desc>
18849
18850 <method name="handleEvent">
18851 <desc>
18852 Handle event callback for active listeners. It is not called for
18853 passive listeners. After calling <link to="#handleEvent"/> on all active listeners
18854 and having received acknowledgement from all passive listeners via
18855 <link to="IEventSource::eventProcessed"/>, the event is marked as
18856 processed and <link to="IEvent::waitProcessed"/> will return
18857 immediately.
18858 </desc>
18859 <param name="event" type="IEvent" dir="in">
18860 <desc>Event available.</desc>
18861 </param>
18862 </method>
18863
18864 </interface>
18865
18866 <interface
18867 name="IEvent" extends="$unknown"
18868 uuid="0ca2adba-8f30-401b-a8cd-fe31dbe839c0"
18869 wsmap="managed"
18870 >
18871 <desc>
18872 Abstract parent interface for VirtualBox events. Actual events will typically implement
18873 a more specific interface which derives from this (see below).
18874
18875 <b>Introduction to VirtualBox events</b>
18876
18877 Generally speaking, an event (represented by this interface) signals that something
18878 happened, while an event listener (see <link to="IEventListener" />) represents an
18879 entity that is interested in certain events. In order for this to work with
18880 unidirectional protocols (i.e. web services), the concepts of passive and active
18881 listener are used.
18882
18883 Event consumers can register themselves as listeners, providing an array of
18884 events they are interested in (see <link to="IEventSource::registerListener" />).
18885 When an event triggers, the listener is notified about the event. The exact
18886 mechanism of the notification depends on whether the listener was registered as
18887 an active or passive listener:
18888
18889 <ul>
18890 <li>An active listener is very similar to a callback: it is a function invoked
18891 by the API. As opposed to the callbacks that were used in the API before
18892 VirtualBox 4.0 however, events are now objects with an interface hierarchy.
18893 </li>
18894
18895 <li>Passive listeners are somewhat trickier to implement, but do not require
18896 a client function to be callable, which is not an option with scripting
18897 languages or web service clients. Internally the <link to="IEventSource" />
18898 implementation maintains an event queue for each passive listener, and
18899 newly arrived events are put in this queue. When the listener calls
18900 <link to="IEventSource::getEvent"/>, first element from its internal event
18901 queue is returned. When the client completes processing of an event,
18902 the <link to="IEventSource::eventProcessed" /> function must be called,
18903 acknowledging that the event was processed. It supports implementing
18904 waitable events. On passive listener unregistration, all events from its
18905 queue are auto-acknowledged.
18906 </li>
18907 </ul>
18908
18909 Waitable events are useful in situations where the event generator wants to track
18910 delivery or a party wants to wait until all listeners have completed the event. A
18911 typical example would be a vetoable event (see <link to="IVetoEvent" />) where a
18912 listeners might veto a certain action, and thus the event producer has to make
18913 sure that all listeners have processed the event and not vetoed before taking
18914 the action.
18915
18916 A given event may have both passive and active listeners at the same time.
18917
18918 <b>Using events</b>
18919
18920 Any VirtualBox object capable of producing externally visible events provides an
18921 @c eventSource read-only attribute, which is of the type <link to="IEventSource" />.
18922 This event source object is notified by VirtualBox once something has happened, so
18923 consumers may register event listeners with this event source. To register a listener,
18924 an object implementing the <link to="IEventListener" /> interface must be provided.
18925 For active listeners, such an object is typically created by the consumer, while for
18926 passive listeners <link to="IEventSource::createListener" /> should be used. Please
18927 note that a listener created with <link to="IEventSource::createListener"/> must not be used as an active listener.
18928
18929 Once created, the listener must be registered to listen for the desired events
18930 (see <link to="IEventSource::registerListener" />), providing an array of
18931 <link to="VBoxEventType" /> enums. Those elements can either be the individual
18932 event IDs or wildcards matching multiple event IDs.
18933
18934 After registration, the callback's <link to="IEventListener::handleEvent" /> method is
18935 called automatically when the event is triggered, while passive listeners have to call
18936 <link to="IEventSource::getEvent" /> and <link to="IEventSource::eventProcessed" /> in
18937 an event processing loop.
18938
18939 The IEvent interface is an abstract parent interface for all such VirtualBox events
18940 coming in. As a result, the standard use pattern inside <link to="IEventListener::handleEvent" />
18941 or the event processing loop is to check the <link to="#type" /> attribute of the event and
18942 then cast to the appropriate specific interface using @c QueryInterface().
18943 </desc>
18944
18945 <attribute name="type" readonly="yes" type="VBoxEventType">
18946 <desc>
18947 Event type.
18948 </desc>
18949 </attribute>
18950
18951 <attribute name="source" readonly="yes" type="IEventSource">
18952 <desc>
18953 Source of this event.
18954 </desc>
18955 </attribute>
18956
18957 <attribute name="waitable" readonly="yes" type="boolean">
18958 <desc>
18959 If we can wait for this event being processed. If false, <link to="#waitProcessed"/> returns immediately,
18960 and <link to="#setProcessed"/> doesn't make sense. Non-waitable events are generally better performing,
18961 as no additional overhead associated with waitability imposed.
18962 Waitable events are needed when one need to be able to wait for particular event processed,
18963 for example for vetoable changes, or if event refers to some resource which need to be kept immutable
18964 until all consumers confirmed events.
18965 </desc>
18966 </attribute>
18967
18968 <method name="setProcessed">
18969 <desc>
18970 Internal method called by the system when all listeners of a particular event have called
18971 <link to="IEventSource::eventProcessed" />. This should not be called by client code.
18972 </desc>
18973 </method>
18974
18975 <method name="waitProcessed">
18976 <desc>
18977 Wait until time outs, or this event is processed. Event must be waitable for this operation to have
18978 described semantics, for non-waitable returns true immediately.
18979 </desc>
18980 <param name="timeout" type="long" dir="in">
18981 <desc>
18982 Maximum time to wait for event processeing, in ms;
18983 0 = no wait, -1 = indefinite wait.
18984 </desc>
18985 </param>
18986 <param name="result" type="boolean" dir="return">
18987 <desc>If this event was processed before timeout.</desc>
18988 </param>
18989 </method>
18990 </interface>
18991
18992
18993 <interface
18994 name="IReusableEvent" extends="IEvent"
18995 uuid="69bfb134-80f6-4266-8e20-16371f68fa25"
18996 wsmap="managed"
18997 >
18998 <desc>Base abstract interface for all reusable events.</desc>
18999
19000 <attribute name="generation" readonly="yes" type="unsigned long">
19001 <desc>Current generation of event, incremented on reuse.</desc>
19002 </attribute>
19003
19004 <method name="reuse">
19005 <desc>
19006 Marks an event as reused, increments 'generation', fields shall no
19007 longer be considered valid.
19008 </desc>
19009 </method>
19010 </interface>
19011
19012 <interface
19013 name="IMachineEvent" extends="IEvent"
19014 uuid="92ed7b1a-0d96-40ed-ae46-a564d484325e"
19015 wsmap="managed" id="MachineEvent"
19016 >
19017 <desc>Base abstract interface for all machine events.</desc>
19018
19019 <attribute name="machineId" readonly="yes" type="uuid" mod="string">
19020 <desc>ID of the machine this event relates to.</desc>
19021 </attribute>
19022
19023 </interface>
19024
19025 <interface
19026 name="IMachineStateChangedEvent" extends="IMachineEvent"
19027 uuid="5748F794-48DF-438D-85EB-98FFD70D18C9"
19028 wsmap="managed" autogen="VBoxEvent" id="OnMachineStateChanged"
19029 >
19030 <desc>Machine state change event.</desc>
19031
19032 <attribute name="state" readonly="yes" type="MachineState">
19033 <desc>New execution state.</desc>
19034 </attribute>
19035 </interface>
19036
19037 <interface
19038 name="IMachineDataChangedEvent" extends="IMachineEvent"
19039 uuid="abe94809-2e88-4436-83d7-50f3e64d0503"
19040 wsmap="managed" autogen="VBoxEvent" id="OnMachineDataChanged"
19041 >
19042 <desc>
19043 Any of the settings of the given machine has changed.
19044 </desc>
19045
19046 <attribute name="temporary" readonly="yes" type="boolean">
19047 <desc>@c true if the settings change is temporary. All permanent
19048 settings changes will trigger an event, and only temporary settings
19049 changes for running VMs will trigger an event. Note: sending events
19050 for temporary changes is NOT IMPLEMENTED.</desc>
19051 </attribute>
19052 </interface>
19053
19054 <interface
19055 name="IMediumRegisteredEvent" extends="IEvent"
19056 uuid="53fac49a-b7f1-4a5a-a4ef-a11dd9c2a458"
19057 wsmap="managed" autogen="VBoxEvent" id="OnMediumRegistered"
19058 >
19059 <desc>
19060 The given medium was registered or unregistered
19061 within this VirtualBox installation.
19062 </desc>
19063
19064 <attribute name="mediumId" readonly="yes" type="uuid" mod="string">
19065 <desc>ID of the medium this event relates to.</desc>
19066 </attribute>
19067
19068 <attribute name="mediumType" readonly="yes" type="DeviceType">
19069 <desc>Type of the medium this event relates to.</desc>
19070 </attribute>
19071
19072 <attribute name="registered" type="boolean" readonly="yes">
19073 <desc>
19074 If @c true, the medium was registered, otherwise it was
19075 unregistered.
19076 </desc>
19077 </attribute>
19078 </interface>
19079
19080 <interface
19081 name="IMachineRegisteredEvent" extends="IMachineEvent"
19082 uuid="c354a762-3ff2-4f2e-8f09-07382ee25088"
19083 wsmap="managed" autogen="VBoxEvent" id="OnMachineRegistered"
19084 >
19085 <desc>
19086 The given machine was registered or unregistered
19087 within this VirtualBox installation.
19088 </desc>
19089
19090 <attribute name="registered" type="boolean" readonly="yes">
19091 <desc>
19092 If @c true, the machine was registered, otherwise it was
19093 unregistered.
19094 </desc>
19095 </attribute>
19096 </interface>
19097
19098 <interface
19099 name="ISessionStateChangedEvent" extends="IMachineEvent"
19100 uuid="714a3eef-799a-4489-86cd-fe8e45b2ff8e"
19101 wsmap="managed" autogen="VBoxEvent" id="OnSessionStateChanged"
19102 >
19103 <desc>
19104 The state of the session for the given machine was changed.
19105 <see><link to="IMachine::sessionState"/></see>
19106 </desc>
19107
19108 <attribute name="state" type="SessionState" readonly="yes">
19109 <desc>
19110 New session state.
19111 </desc>
19112 </attribute>
19113 </interface>
19114
19115 <interface
19116 name="IGuestPropertyChangedEvent" extends="IMachineEvent"
19117 uuid="3f63597a-26f1-4edb-8dd2-6bddd0912368"
19118 wsmap="managed" autogen="VBoxEvent" id="OnGuestPropertyChanged"
19119 >
19120 <desc>
19121 Notification when a guest property has changed.
19122 </desc>
19123
19124 <attribute name="name" readonly="yes" type="wstring">
19125 <desc>
19126 The name of the property that has changed.
19127 </desc>
19128 </attribute>
19129
19130 <attribute name="value" readonly="yes" type="wstring">
19131 <desc>
19132 The new property value.
19133 </desc>
19134 </attribute>
19135
19136 <attribute name="flags" readonly="yes" type="wstring">
19137 <desc>
19138 The new property flags.
19139 </desc>
19140 </attribute>
19141
19142 </interface>
19143
19144 <interface
19145 name="ISnapshotEvent" extends="IMachineEvent"
19146 uuid="21637b0e-34b8-42d3-acfb-7e96daf77c22"
19147 wsmap="managed" id="SnapshotEvent"
19148 >
19149 <desc>Base interface for all snapshot events.</desc>
19150
19151 <attribute name="snapshotId" readonly="yes" type="uuid" mod="string">
19152 <desc>ID of the snapshot this event relates to.</desc>
19153 </attribute>
19154
19155 </interface>
19156
19157 <interface
19158 name="ISnapshotTakenEvent" extends="ISnapshotEvent"
19159 uuid="d27c0b3d-6038-422c-b45e-6d4a0503d9f1"
19160 wsmap="managed" autogen="VBoxEvent" id="OnSnapshotTaken"
19161 >
19162 <desc>
19163 A new snapshot of the machine has been taken.
19164 <see><link to="ISnapshot"/></see>
19165 </desc>
19166 </interface>
19167
19168 <interface
19169 name="ISnapshotDeletedEvent" extends="ISnapshotEvent"
19170 uuid="c48f3401-4a9e-43f4-b7a7-54bd285e22f4"
19171 wsmap="managed" autogen="VBoxEvent" id="OnSnapshotDeleted"
19172 >
19173 <desc>
19174 Snapshot of the given machine has been deleted.
19175
19176 <note>
19177 This notification is delivered <b>after</b> the snapshot
19178 object has been uninitialized on the server (so that any
19179 attempt to call its methods will return an error).
19180 </note>
19181
19182 <see><link to="ISnapshot"/></see>
19183 </desc>
19184 </interface>
19185
19186 <interface
19187 name="ISnapshotChangedEvent" extends="ISnapshotEvent"
19188 uuid="07541941-8079-447a-a33e-47a69c7980db"
19189 wsmap="managed" autogen="VBoxEvent" id="OnSnapshotChanged"
19190 >
19191 <desc>
19192 Snapshot properties (name and/or description) have been changed.
19193 <see><link to="ISnapshot"/></see>
19194 </desc>
19195 </interface>
19196
19197 <interface
19198 name="IMousePointerShapeChangedEvent" extends="IEvent"
19199 uuid="a6dcf6e8-416b-4181-8c4a-45ec95177aef"
19200 wsmap="managed" autogen="VBoxEvent" id="OnMousePointerShapeChanged"
19201 >
19202 <desc>
19203 Notification when the guest mouse pointer shape has
19204 changed. The new shape data is given.
19205 </desc>
19206
19207 <attribute name="visible" type="boolean" readonly="yes">
19208 <desc>
19209 Flag whether the pointer is visible.
19210 </desc>
19211 </attribute>
19212 <attribute name="alpha" type="boolean" readonly="yes">
19213 <desc>
19214 Flag whether the pointer has an alpha channel.
19215 </desc>
19216 </attribute>
19217 <attribute name="xhot" type="unsigned long" readonly="yes">
19218 <desc>
19219 The pointer hot spot X coordinate.
19220 </desc>
19221 </attribute>
19222 <attribute name="yhot" type="unsigned long" readonly="yes">
19223 <desc>
19224 The pointer hot spot Y coordinate.
19225 </desc>
19226 </attribute>
19227 <attribute name="width" type="unsigned long" readonly="yes">
19228 <desc>
19229 Width of the pointer shape in pixels.
19230 </desc>
19231 </attribute>
19232 <attribute name="height" type="unsigned long" readonly="yes">
19233 <desc>
19234 Height of the pointer shape in pixels.
19235 </desc>
19236 </attribute>
19237 <attribute name="shape" type="octet" safearray="yes" readonly="yes">
19238 <desc>
19239 Shape buffer arrays.
19240
19241 The @a shape buffer contains a 1-bpp (bits per pixel) AND mask
19242 followed by a 32-bpp XOR (color) mask.
19243
19244 For pointers without alpha channel the XOR mask pixels are 32
19245 bit values: (lsb)BGR0(msb). For pointers with alpha channel
19246 the XOR mask consists of (lsb)BGRA(msb) 32 bit values.
19247
19248 An AND mask is used for pointers with alpha channel, so if the
19249 callback does not support alpha, the pointer could be
19250 displayed as a normal color pointer.
19251
19252 The AND mask is a 1-bpp bitmap with byte aligned scanlines. The
19253 size of the AND mask therefore is <tt>cbAnd = (width + 7) / 8 *
19254 height</tt>. The padding bits at the end of each scanline are
19255 undefined.
19256
19257 The XOR mask follows the AND mask on the next 4-byte aligned
19258 offset: <tt>uint8_t *pXor = pAnd + (cbAnd + 3) &amp; ~3</tt>.
19259 Bytes in the gap between the AND and the XOR mask are undefined.
19260 The XOR mask scanlines have no gap between them and the size of
19261 the XOR mask is: <tt>cXor = width * 4 * height</tt>.
19262
19263 <note>
19264 If @a shape is 0, only the pointer visibility is changed.
19265 </note>
19266 </desc>
19267 </attribute>
19268 </interface>
19269
19270 <interface
19271 name="IMouseCapabilityChangedEvent" extends="IEvent"
19272 uuid="d633ad48-820c-4207-b46c-6bd3596640d5"
19273 wsmap="managed" autogen="VBoxEvent" id="OnMouseCapabilityChanged"
19274 >
19275 <desc>
19276 Notification when the mouse capabilities reported by the
19277 guest have changed. The new capabilities are passed.
19278 </desc>
19279 <attribute name="supportsAbsolute" type="boolean" readonly="yes">
19280 <desc>
19281 Supports absolute coordinates.
19282 </desc>
19283 </attribute>
19284 <attribute name="supportsRelative" type="boolean" readonly="yes">
19285 <desc>
19286 Supports relative coordinates.
19287 </desc>
19288 </attribute>
19289 <attribute name="needsHostCursor" type="boolean" readonly="yes">
19290 <desc>
19291 If host cursor is needed.
19292 </desc>
19293 </attribute>
19294 </interface>
19295
19296 <interface
19297 name="IKeyboardLedsChangedEvent" extends="IEvent"
19298 uuid="6DDEF35E-4737-457B-99FC-BC52C851A44F"
19299 wsmap="managed" autogen="VBoxEvent" id="OnKeyboardLedsChanged"
19300 >
19301 <desc>
19302 Notification when the guest OS executes the KBD_CMD_SET_LEDS command
19303 to alter the state of the keyboard LEDs.
19304 </desc>
19305 <attribute name="numLock" type="boolean" readonly="yes">
19306 <desc>
19307 NumLock status.
19308 </desc>
19309 </attribute>
19310 <attribute name="capsLock" type="boolean" readonly="yes">
19311 <desc>
19312 CapsLock status.
19313 </desc>
19314 </attribute>
19315 <attribute name="scrollLock" type="boolean" readonly="yes">
19316 <desc>
19317 ScrollLock status.
19318 </desc>
19319 </attribute>
19320 </interface>
19321
19322 <interface
19323 name="IStateChangedEvent" extends="IEvent"
19324 uuid="4376693C-CF37-453B-9289-3B0F521CAF27"
19325 wsmap="managed" autogen="VBoxEvent" id="OnStateChanged"
19326 >
19327 <desc>
19328 Notification when the execution state of the machine has changed.
19329 The new state is given.
19330 </desc>
19331 <attribute name="state" type="MachineState" readonly="yes">
19332 <desc>
19333 New machine state.
19334 </desc>
19335 </attribute>
19336 </interface>
19337
19338 <interface
19339 name="IAdditionsStateChangedEvent" extends="IEvent"
19340 uuid="D70F7915-DA7C-44C8-A7AC-9F173490446A"
19341 wsmap="managed" autogen="VBoxEvent" id="OnAdditionsStateChanged"
19342 >
19343 <desc>
19344 Notification when a Guest Additions property changes.
19345 Interested callees should query IGuest attributes to
19346 find out what has changed.
19347 </desc>
19348 </interface>
19349
19350 <interface
19351 name="INetworkAdapterChangedEvent" extends="IEvent"
19352 uuid="08889892-1EC6-4883-801D-77F56CFD0103"
19353 wsmap="managed" autogen="VBoxEvent" id="OnNetworkAdapterChanged"
19354 >
19355 <desc>
19356 Notification when a property of one of the
19357 virtual <link to="IMachine::getNetworkAdapter">network adapters</link>
19358 changes. Interested callees should use INetworkAdapter methods and
19359 attributes to find out what has changed.
19360 </desc>
19361 <attribute name="networkAdapter" type="INetworkAdapter" readonly="yes">
19362 <desc>
19363 Network adapter that is subject to change.
19364 </desc>
19365 </attribute>
19366 </interface>
19367
19368 <interface
19369 name="ISerialPortChangedEvent" extends="IEvent"
19370 uuid="3BA329DC-659C-488B-835C-4ECA7AE71C6C"
19371 wsmap="managed" autogen="VBoxEvent" id="OnSerialPortChanged"
19372 >
19373 <desc>
19374 Notification when a property of one of the
19375 virtual <link to="IMachine::getSerialPort">serial ports</link> changes.
19376 Interested callees should use ISerialPort methods and attributes
19377 to find out what has changed.
19378 </desc>
19379 <attribute name="serialPort" type="ISerialPort" readonly="yes">
19380 <desc>
19381 Serial port that is subject to change.
19382 </desc>
19383 </attribute>
19384 </interface>
19385
19386 <interface
19387 name="IParallelPortChangedEvent" extends="IEvent"
19388 uuid="813C99FC-9849-4F47-813E-24A75DC85615"
19389 wsmap="managed" autogen="VBoxEvent" id="OnParallelPortChanged"
19390 >
19391 <desc>
19392 Notification when a property of one of the
19393 virtual <link to="IMachine::getParallelPort">parallel ports</link>
19394 changes. Interested callees should use ISerialPort methods and
19395 attributes to find out what has changed.
19396 </desc>
19397 <attribute name="parallelPort" type="IParallelPort" readonly="yes">
19398 <desc>
19399 Parallel port that is subject to change.
19400 </desc>
19401 </attribute>
19402 </interface>
19403
19404 <interface
19405 name="IStorageControllerChangedEvent" extends="IEvent"
19406 uuid="715212BF-DA59-426E-8230-3831FAA52C56"
19407 wsmap="managed" autogen="VBoxEvent" id="OnStorageControllerChanged"
19408 >
19409 <desc>
19410 Notification when a
19411 <link to="IMachine::mediumAttachments">medium attachment</link>
19412 changes.
19413 </desc>
19414 </interface>
19415
19416 <interface
19417 name="IMediumChangedEvent" extends="IEvent"
19418 uuid="0FE2DA40-5637-472A-9736-72019EABD7DE"
19419 wsmap="managed" autogen="VBoxEvent" id="OnMediumChanged"
19420 >
19421 <desc>
19422 Notification when a
19423 <link to="IMachine::mediumAttachments">medium attachment</link>
19424 changes.
19425 </desc>
19426 <attribute name="mediumAttachment" type="IMediumAttachment" readonly="yes">
19427 <desc>
19428 Medium attachment that is subject to change.
19429 </desc>
19430 </attribute>
19431 </interface>
19432
19433 <interface
19434 name="IClipboardModeChangedEvent" extends="IEvent"
19435 uuid="cac21692-7997-4595-a731-3a509db604e5"
19436 wsmap="managed" autogen="VBoxEvent" id="OnClipboardModeChanged"
19437 >
19438 <desc>
19439 Notification when the shared clipboard mode changes.
19440 </desc>
19441 <attribute name="clipboardMode" type="ClipboardMode" readonly="yes">
19442 <desc>
19443 The new clipboard mode.
19444 </desc>
19445 </attribute>
19446 </interface>
19447
19448 <interface
19449 name="IDragAndDropModeChangedEvent" extends="IEvent"
19450 uuid="e90b8850-ac8e-4dff-8059-4100ae2c3c3d"
19451 wsmap="managed" autogen="VBoxEvent" id="OnDragAndDropModeChanged"
19452 >
19453 <desc>
19454 Notification when the drag'n'drop mode changes.
19455 </desc>
19456 <attribute name="dragAndDropMode" type="DragAndDropMode" readonly="yes">
19457 <desc>
19458 The new drag'n'drop mode.
19459 </desc>
19460 </attribute>
19461 </interface>
19462
19463 <interface
19464 name="ICPUChangedEvent" extends="IEvent"
19465 uuid="D0F0BECC-EE17-4D17-A8CC-383B0EB55E9D"
19466 wsmap="managed" autogen="VBoxEvent" id="OnCPUChanged"
19467 >
19468 <desc>
19469 Notification when a CPU changes.
19470 </desc>
19471 <attribute name="cpu" type="unsigned long" readonly="yes">
19472 <desc>
19473 The CPU which changed.
19474 </desc>
19475 </attribute>
19476 <attribute name="add" type="boolean" readonly="yes">
19477 <desc>
19478 Flag whether the CPU was added or removed.
19479 </desc>
19480 </attribute>
19481 </interface>
19482
19483 <interface
19484 name="ICPUExecutionCapChangedEvent" extends="IEvent"
19485 uuid="dfa7e4f5-b4a4-44ce-85a8-127ac5eb59dc"
19486 wsmap="managed" autogen="VBoxEvent" id="OnCPUExecutionCapChanged"
19487 >
19488 <desc>
19489 Notification when the CPU execution cap changes.
19490 </desc>
19491 <attribute name="executionCap" type="unsigned long" readonly="yes">
19492 <desc>
19493 The new CPU execution cap value. (1-100)
19494 </desc>
19495 </attribute>
19496 </interface>
19497
19498 <interface
19499 name="IGuestKeyboardEvent" extends="IEvent"
19500 uuid="88394258-7006-40d4-b339-472ee3801844"
19501 wsmap="managed" autogen="VBoxEvent" id="OnGuestKeyboard"
19502 >
19503 <desc>
19504 Notification when guest keyboard event happens.
19505 </desc>
19506 <attribute name="scancodes" type="long" safearray="yes" readonly="yes">
19507 <desc>
19508 Array of scancodes.
19509 </desc>
19510 </attribute>
19511 </interface>
19512
19513 <interface
19514 name="IGuestMouseEvent" extends="IReusableEvent"
19515 uuid="1f85d35c-c524-40ff-8e98-307000df0992"
19516 wsmap="managed" autogen="VBoxEvent" id="OnGuestMouse"
19517 >
19518 <desc>
19519 Notification when guest mouse event happens.
19520 </desc>
19521
19522 <attribute name="absolute" type="boolean" readonly="yes">
19523 <desc>
19524 If this event is relative or absolute.
19525 </desc>
19526 </attribute>
19527
19528 <attribute name="x" type="long" readonly="yes">
19529 <desc>
19530 New X position, or X delta.
19531 </desc>
19532 </attribute>
19533
19534 <attribute name="y" type="long" readonly="yes">
19535 <desc>
19536 New Y position, or Y delta.
19537 </desc>
19538 </attribute>
19539
19540 <attribute name="z" type="long" readonly="yes">
19541 <desc>
19542 Z delta.
19543 </desc>
19544 </attribute>
19545
19546 <attribute name="w" type="long" readonly="yes">
19547 <desc>
19548 W delta.
19549 </desc>
19550 </attribute>
19551
19552 <attribute name="buttons" type="long" readonly="yes">
19553 <desc>
19554 Button state bitmask.
19555 </desc>
19556 </attribute>
19557
19558 </interface>
19559
19560
19561 <interface
19562 name="IVRDEServerChangedEvent" extends="IEvent"
19563 uuid="a06fd66a-3188-4c8c-8756-1395e8cb691c"
19564 wsmap="managed" autogen="VBoxEvent" id="OnVRDEServerChanged"
19565 >
19566 <desc>
19567 Notification when a property of the
19568 <link to="IMachine::VRDEServer">VRDE server</link> changes.
19569 Interested callees should use IVRDEServer methods and attributes to
19570 find out what has changed.
19571 </desc>
19572 </interface>
19573
19574 <interface
19575 name="IVRDEServerInfoChangedEvent" extends="IEvent"
19576 uuid="dd6a1080-e1b7-4339-a549-f0878115596e"
19577 wsmap="managed" autogen="VBoxEvent" id="OnVRDEServerInfoChanged"
19578 >
19579 <desc>
19580 Notification when the status of the VRDE server changes. Interested callees
19581 should use <link to="IConsole::VRDEServerInfo">IVRDEServerInfo</link>
19582 attributes to find out what is the current status.
19583 </desc>
19584 </interface>
19585
19586 <interface
19587 name="IUSBControllerChangedEvent" extends="IEvent"
19588 uuid="93BADC0C-61D9-4940-A084-E6BB29AF3D83"
19589 wsmap="managed" autogen="VBoxEvent" id="OnUSBControllerChanged"
19590 >
19591 <desc>
19592 Notification when a property of the virtual
19593 <link to="IMachine::USBController">USB controller</link> changes.
19594 Interested callees should use IUSBController methods and attributes to
19595 find out what has changed.
19596 </desc>
19597 </interface>
19598
19599 <interface
19600 name="IUSBDeviceStateChangedEvent" extends="IEvent"
19601 uuid="806da61b-6679-422a-b629-51b06b0c6d93"
19602 wsmap="managed" autogen="VBoxEvent" id="OnUSBDeviceStateChanged"
19603 >
19604 <desc>
19605 Notification when a USB device is attached to or detached from
19606 the virtual USB controller.
19607
19608 This notification is sent as a result of the indirect
19609 request to attach the device because it matches one of the
19610 machine USB filters, or as a result of the direct request
19611 issued by <link to="IConsole::attachUSBDevice"/> or
19612 <link to="IConsole::detachUSBDevice"/>.
19613
19614 This notification is sent in case of both a succeeded and a
19615 failed request completion. When the request succeeds, the
19616 @a error parameter is @c null, and the given device has been
19617 already added to (when @a attached is @c true) or removed from
19618 (when @a attached is @c false) the collection represented by
19619 <link to="IConsole::USBDevices"/>. On failure, the collection
19620 doesn't change and the @a error parameter represents the error
19621 message describing the failure.
19622 </desc>
19623 <attribute name="device" type="IUSBDevice" readonly="yes">
19624 <desc>
19625 Device that is subject to state change.
19626 </desc>
19627 </attribute>
19628 <attribute name="attached" type="boolean" readonly="yes">
19629 <desc>
19630 @c true if the device was attached and @c false otherwise.
19631 </desc>
19632 </attribute>
19633 <attribute name="error" type="IVirtualBoxErrorInfo" readonly="yes">
19634 <desc>
19635 @c null on success or an error message object on failure.
19636 </desc>
19637 </attribute>
19638 </interface>
19639
19640 <interface
19641 name="ISharedFolderChangedEvent" extends="IEvent"
19642 uuid="B66349B5-3534-4239-B2DE-8E1535D94C0B"
19643 wsmap="managed" autogen="VBoxEvent" id="OnSharedFolderChanged"
19644 >
19645 <desc>
19646 Notification when a shared folder is added or removed.
19647 The @a scope argument defines one of three scopes:
19648 <link to="IVirtualBox::sharedFolders">global shared folders</link>
19649 (<link to="Scope_Global">Global</link>),
19650 <link to="IMachine::sharedFolders">permanent shared folders</link> of
19651 the machine (<link to="Scope_Machine">Machine</link>) or <link
19652 to="IConsole::sharedFolders">transient shared folders</link> of the
19653 machine (<link to="Scope_Session">Session</link>). Interested callees
19654 should use query the corresponding collections to find out what has
19655 changed.
19656 </desc>
19657 <attribute name="scope" type="Scope" readonly="yes">
19658 <desc>
19659 Scope of the notification.
19660 </desc>
19661 </attribute>
19662 </interface>
19663
19664 <interface
19665 name="IRuntimeErrorEvent" extends="IEvent"
19666 uuid="883DD18B-0721-4CDE-867C-1A82ABAF914C"
19667 wsmap="managed" autogen="VBoxEvent" id="OnRuntimeError"
19668 >
19669 <desc>
19670 Notification when an error happens during the virtual
19671 machine execution.
19672
19673 There are three kinds of runtime errors:
19674 <ul>
19675 <li><i>fatal</i></li>
19676 <li><i>non-fatal with retry</i></li>
19677 <li><i>non-fatal warnings</i></li>
19678 </ul>
19679
19680 <b>Fatal</b> errors are indicated by the @a fatal parameter set
19681 to @c true. In case of fatal errors, the virtual machine
19682 execution is always paused before calling this notification, and
19683 the notification handler is supposed either to immediately save
19684 the virtual machine state using <link to="IConsole::saveState"/>
19685 or power it off using <link to="IConsole::powerDown"/>.
19686 Resuming the execution can lead to unpredictable results.
19687
19688 <b>Non-fatal</b> errors and warnings are indicated by the
19689 @a fatal parameter set to @c false. If the virtual machine
19690 is in the Paused state by the time the error notification is
19691 received, it means that the user can <i>try to resume</i> the machine
19692 execution after attempting to solve the problem that caused the
19693 error. In this case, the notification handler is supposed
19694 to show an appropriate message to the user (depending on the
19695 value of the @a id parameter) that offers several actions such
19696 as <i>Retry</i>, <i>Save</i> or <i>Power Off</i>. If the user
19697 wants to retry, the notification handler should continue
19698 the machine execution using the <link to="IConsole::resume"/>
19699 call. If the machine execution is not Paused during this
19700 notification, then it means this notification is a <i>warning</i>
19701 (for example, about a fatal condition that can happen very soon);
19702 no immediate action is required from the user, the machine
19703 continues its normal execution.
19704
19705 Note that in either case the notification handler
19706 <b>must not</b> perform any action directly on a thread
19707 where this notification is called. Everything it is allowed to
19708 do is to post a message to another thread that will then talk
19709 to the user and take the corresponding action.
19710
19711 Currently, the following error identifiers are known:
19712 <ul>
19713 <li><tt>"HostMemoryLow"</tt></li>
19714 <li><tt>"HostAudioNotResponding"</tt></li>
19715 <li><tt>"VDIStorageFull"</tt></li>
19716 <li><tt>"3DSupportIncompatibleAdditions"</tt></li>
19717 </ul>
19718 </desc>
19719 <attribute name="fatal" type="boolean" readonly="yes">
19720 <desc>
19721 Whether the error is fatal or not.
19722 </desc>
19723 </attribute>
19724 <attribute name="id" type="wstring" readonly="yes">
19725 <desc>
19726 Error identifier.
19727 </desc>
19728 </attribute>
19729 <attribute name="message" type="wstring" readonly="yes">
19730 <desc>
19731 Optional error message.
19732 </desc>
19733 </attribute>
19734 </interface>
19735
19736
19737 <interface
19738 name="IEventSourceChangedEvent" extends="IEvent"
19739 uuid="e7932cb8-f6d4-4ab6-9cbf-558eb8959a6a"
19740 waitable="yes"
19741 wsmap="managed" autogen="VBoxEvent" id="OnEventSourceChanged"
19742 >
19743 <desc>
19744 Notification when an event source state changes (listener added or removed).
19745 </desc>
19746
19747 <attribute name="listener" type="IEventListener" readonly="yes">
19748 <desc>
19749 Event listener which has changed.
19750 </desc>
19751 </attribute>
19752
19753 <attribute name="add" type="boolean" readonly="yes">
19754 <desc>
19755 Flag whether listener was added or removed.
19756 </desc>
19757 </attribute>
19758 </interface>
19759
19760 <interface
19761 name="IExtraDataChangedEvent" extends="IEvent"
19762 uuid="024F00CE-6E0B-492A-A8D0-968472A94DC7"
19763 wsmap="managed" autogen="VBoxEvent" id="OnExtraDataChanged"
19764 >
19765 <desc>
19766 Notification when machine specific or global extra data
19767 has changed.
19768 </desc>
19769 <attribute name="machineId" type="uuid" mod="string" readonly="yes">
19770 <desc>
19771 ID of the machine this event relates to.
19772 Null for global extra data changes.
19773 </desc>
19774 </attribute>
19775 <attribute name="key" type="wstring" readonly="yes">
19776 <desc>
19777 Extra data key that has changed.
19778 </desc>
19779 </attribute>
19780 <attribute name="value" type="wstring" readonly="yes">
19781 <desc>
19782 Extra data value for the given key.
19783 </desc>
19784 </attribute>
19785 </interface>
19786
19787 <interface
19788 name="IVetoEvent" extends="IEvent"
19789 uuid="9a1a4130-69fe-472f-ac10-c6fa25d75007"
19790 wsmap="managed"
19791 >
19792 <desc>Base abstract interface for veto events.</desc>
19793
19794 <method name="addVeto">
19795 <desc>
19796 Adds a veto on this event.
19797 </desc>
19798 <param name="reason" type="wstring" dir="in">
19799 <desc>
19800 Reason for veto, could be null or empty string.
19801 </desc>
19802 </param>
19803 </method>
19804
19805 <method name="isVetoed">
19806 <desc>
19807 If this event was vetoed.
19808 </desc>
19809 <param name="result" type="boolean" dir="return">
19810 <desc>
19811 Reason for veto.
19812 </desc>
19813 </param>
19814 </method>
19815
19816 <method name="getVetos">
19817 <desc>
19818 Current veto reason list, if size is 0 - no veto.
19819 </desc>
19820 <param name="result" type="wstring" dir="return" safearray="yes">
19821 <desc>
19822 Array of reasons for veto provided by different event handlers.
19823 </desc>
19824 </param>
19825 </method>
19826
19827 </interface>
19828
19829 <interface
19830 name="IExtraDataCanChangeEvent" extends="IVetoEvent"
19831 uuid="245d88bd-800a-40f8-87a6-170d02249a55"
19832 wsmap="managed" autogen="VBoxEvent" id="OnExtraDataCanChange"
19833 waitable="true"
19834 >
19835 <desc>
19836 Notification when someone tries to change extra data for
19837 either the given machine or (if @c null) global extra data.
19838 This gives the chance to veto against changes.
19839 </desc>
19840 <attribute name="machineId" type="uuid" mod="string" readonly="yes">
19841 <desc>
19842 ID of the machine this event relates to.
19843 Null for global extra data changes.
19844 </desc>
19845 </attribute>
19846 <attribute name="key" type="wstring" readonly="yes">
19847 <desc>
19848 Extra data key that has changed.
19849 </desc>
19850 </attribute>
19851 <attribute name="value" type="wstring" readonly="yes">
19852 <desc>
19853 Extra data value for the given key.
19854 </desc>
19855 </attribute>
19856 </interface>
19857
19858 <interface
19859 name="ICanShowWindowEvent" extends="IVetoEvent"
19860 uuid="adf292b0-92c9-4a77-9d35-e058b39fe0b9"
19861 wsmap="managed" autogen="VBoxEvent" id="OnCanShowWindow"
19862 waitable="true"
19863 >
19864 <desc>
19865 Notification when a call to
19866 <link to="IMachine::canShowConsoleWindow"/> is made by a
19867 front-end to check if a subsequent call to
19868 <link to="IMachine::showConsoleWindow"/> can succeed.
19869
19870 The callee should give an answer appropriate to the current
19871 machine state using event veto. This answer must
19872 remain valid at least until the next
19873 <link to="IConsole::state">machine state</link> change.
19874 </desc>
19875 </interface>
19876
19877 <interface
19878 name="IShowWindowEvent" extends="IEvent"
19879 uuid="B0A0904D-2F05-4D28-855F-488F96BAD2B2"
19880 wsmap="managed" autogen="VBoxEvent" id="OnShowWindow"
19881 waitable="true"
19882 >
19883 <desc>
19884 Notification when a call to
19885 <link to="IMachine::showConsoleWindow"/>
19886 requests the console window to be activated and brought to
19887 foreground on the desktop of the host PC.
19888
19889 This notification should cause the VM console process to
19890 perform the requested action as described above. If it is
19891 impossible to do it at a time of this notification, this
19892 method should return a failure.
19893
19894 Note that many modern window managers on many platforms
19895 implement some sort of focus stealing prevention logic, so
19896 that it may be impossible to activate a window without the
19897 help of the currently active application (which is supposedly
19898 an initiator of this notification). In this case, this method
19899 must return a non-zero identifier that represents the
19900 top-level window of the VM console process. The caller, if it
19901 represents a currently active process, is responsible to use
19902 this identifier (in a platform-dependent manner) to perform
19903 actual window activation.
19904
19905 This method must set @a winId to zero if it has performed all
19906 actions necessary to complete the request and the console
19907 window is now active and in foreground, to indicate that no
19908 further action is required on the caller's side.
19909 </desc>
19910 <attribute name="winId" type="long long">
19911 <desc>
19912 Platform-dependent identifier of the top-level VM console
19913 window, or zero if this method has performed all actions
19914 necessary to implement the <i>show window</i> semantics for
19915 the given platform and/or this VirtualBox front-end.
19916 </desc>
19917 </attribute>
19918 </interface>
19919
19920 <interface
19921 name="INATRedirectEvent" extends="IMachineEvent"
19922 uuid="57DE97D7-3CBB-42A0-888F-610D5832D16B"
19923 wsmap="managed" autogen="VBoxEvent" id="OnNATRedirect"
19924 >
19925 <desc>
19926 Notification when NAT redirect rule added or removed.
19927 </desc>
19928 <attribute name="slot" type="unsigned long" readonly="yes">
19929 <desc>
19930 Adapter which NAT attached to.
19931 </desc>
19932 </attribute>
19933 <attribute name="remove" type="boolean" readonly="yes">
19934 <desc>
19935 Whether rule remove or add.
19936 </desc>
19937 </attribute>
19938 <attribute name="name" type="wstring" readonly="yes">
19939 <desc>
19940 Name of the rule.
19941 </desc>
19942 </attribute>
19943 <attribute name="proto" type="NATProtocol" readonly="yes">
19944 <desc>
19945 Protocol (TCP or UDP) of the redirect rule.
19946 </desc>
19947 </attribute>
19948 <attribute name="hostIp" type="wstring" readonly="yes">
19949 <desc>
19950 Host ip address to bind socket on.
19951 </desc>
19952 </attribute>
19953 <attribute name="hostPort" type="long" readonly="yes">
19954 <desc>
19955 Host port to bind socket on.
19956 </desc>
19957 </attribute>
19958 <attribute name="guestIp" type="wstring" readonly="yes">
19959 <desc>
19960 Guest ip address to redirect to.
19961 </desc>
19962 </attribute>
19963 <attribute name="guestPort" type="long" readonly="yes">
19964 <desc>
19965 Guest port to redirect to.
19966 </desc>
19967 </attribute>
19968 </interface>
19969
19970 <interface
19971 name="IHostPciDevicePlugEvent" extends="IMachineEvent"
19972 waitable="yes"
19973 uuid="9cebfc27-c579-4965-8eb7-d31794cd7dcf"
19974 wsmap="managed" autogen="VBoxEvent" id="OnHostPciDevicePlug"
19975 >
19976 <desc>
19977 Notification when host PCI device is plugged/unplugged. Plugging
19978 usually takes place on VM startup, unplug - when
19979 <link to="IMachine::detachHostPciDevice"/> is called.
19980
19981 <see><link to="IMachine::detachHostPciDevice"/></see>
19982
19983 </desc>
19984
19985 <attribute name="plugged" type="boolean" readonly="yes">
19986 <desc>
19987 If device successfully plugged or unplugged.
19988 </desc>
19989 </attribute>
19990
19991 <attribute name="success" type="boolean" readonly="yes">
19992 <desc>
19993 If operation was successful, if false - 'message' attribute
19994 may be of interest.
19995 </desc>
19996 </attribute>
19997
19998 <attribute name="attachment" type="IPciDeviceAttachment" readonly="yes">
19999 <desc>
20000 Attachment info for this device.
20001 </desc>
20002 </attribute>
20003
20004 <attribute name="message" type="wstring" readonly="yes">
20005 <desc>
20006 Optional error message.
20007 </desc>
20008 </attribute>
20009
20010 </interface>
20011
20012 <interface
20013 name="IVBoxSVCAvailabilityChangedEvent" extends="IEvent"
20014 uuid="97c78fcd-d4fc-485f-8613-5af88bfcfcdc"
20015 wsmap="managed" autogen="VBoxEvent" id="OnVBoxSVCAvailabilityChanged"
20016 >
20017 <desc>
20018 Notification when VBoxSVC becomes unavailable (due to a crash or similar
20019 unexpected circumstances) or available again.
20020 </desc>
20021
20022 <attribute name="available" type="boolean" readonly="yes">
20023 <desc>
20024 Whether VBoxSVC is available now.
20025 </desc>
20026 </attribute>
20027 </interface>
20028
20029 <interface
20030 name="IBandwidthGroupChangedEvent" extends="IEvent"
20031 uuid="334df94a-7556-4cbc-8c04-043096b02d82"
20032 wsmap="managed" autogen="VBoxEvent" id="OnBandwidthGroupChanged"
20033 >
20034 <desc>
20035 Notification when one of the bandwidth groups changed
20036 </desc>
20037 <attribute name="bandwidthGroup" type="IBandwidthGroup" readonly="yes">
20038 <desc>
20039 The changed bandwidth group.
20040 </desc>
20041 </attribute>
20042 </interface>
20043
20044 <enum
20045 name="GuestMonitorChangedEventType"
20046 uuid="ef172985-7e36-4297-95be-e46396968d66"
20047 >
20048
20049 <desc>
20050 How the guest monitor has been changed.
20051 </desc>
20052
20053 <const name="Enabled" value="0">
20054 <desc>
20055 The guest monitor has been enabled by the guest.
20056 </desc>
20057 </const>
20058
20059 <const name="Disabled" value="1">
20060 <desc>
20061 The guest monitor has been disabled by the guest.
20062 </desc>
20063 </const>
20064
20065 <const name="NewOrigin" value="2">
20066 <desc>
20067 The guest monitor origin has changed in the guest.
20068 </desc>
20069 </const>
20070 </enum>
20071
20072 <interface
20073 name="IGuestMonitorChangedEvent" extends="IEvent"
20074 uuid="0f7b8a22-c71f-4a36-8e5f-a77d01d76090"
20075 wsmap="managed" autogen="VBoxEvent" id="OnGuestMonitorChanged"
20076 >
20077 <desc>
20078 Notification when the guest enables one of its monitors.
20079 </desc>
20080
20081 <attribute name="changeType" type="GuestMonitorChangedEventType" readonly="yes">
20082 <desc>
20083 What was changed for this guest monitor.
20084 </desc>
20085 </attribute>
20086
20087 <attribute name="screenId" type="unsigned long" readonly="yes">
20088 <desc>
20089 The monitor which was changed.
20090 </desc>
20091 </attribute>
20092
20093 <attribute name="originX" type="unsigned long" readonly="yes">
20094 <desc>
20095 Physical X origin relative to the primary screen.
20096 Valid for Enabled and NewOrigin.
20097 </desc>
20098 </attribute>
20099
20100 <attribute name="originY" type="unsigned long" readonly="yes">
20101 <desc>
20102 Physical Y origin relative to the primary screen.
20103 Valid for Enabled and NewOrigin.
20104 </desc>
20105 </attribute>
20106
20107 <attribute name="width" type="unsigned long" readonly="yes">
20108 <desc>
20109 Width of the screen.
20110 Valid for Enabled.
20111 </desc>
20112 </attribute>
20113
20114 <attribute name="height" type="unsigned long" readonly="yes">
20115 <desc>
20116 Height of the screen.
20117 Valid for Enabled.
20118 </desc>
20119 </attribute>
20120
20121 </interface>
20122
20123 <interface
20124 name="IStorageDeviceChangedEvent" extends="IEvent"
20125 uuid="8a5c2dce-e341-49d4-afce-c95979f7d70c"
20126 wsmap="managed" autogen="VBoxEvent" id="OnStorageDeviceChanged"
20127 >
20128 <desc>
20129 Notification when a
20130 <link to="IMachine::mediumAttachments">storage device</link>
20131 is attached or removed.
20132 </desc>
20133 <attribute name="storageDevice" type="IMediumAttachment" readonly="yes">
20134 <desc>
20135 Storage device that is subject to change.
20136 </desc>
20137 </attribute>
20138 <attribute name="removed" type="boolean" readonly="yes">
20139 <desc>
20140 Flag whether the device was removed or added to the VM.
20141 </desc>
20142 </attribute>
20143 </interface>
20144
20145 <module name="VBoxSVC" context="LocalServer">
20146 <class name="VirtualBox" uuid="B1A7A4F2-47B9-4A1E-82B2-07CCD5323C3F"
20147 namespace="virtualbox.org">
20148 <interface name="IVirtualBox" default="yes"/>
20149 </class>
20150 </module>
20151
20152 <module name="VBoxC" context="InprocServer" threadingModel="Free">
20153 <class name="VirtualBoxClient" uuid="dd3fc71d-26c0-4fe1-bf6f-67f633265bba"
20154 namespace="virtualbox.org">
20155 <interface name="IVirtualBoxClient" default="yes"/>
20156 </class>
20157
20158 <class name="Session" uuid="3C02F46D-C9D2-4F11-A384-53F0CF917214"
20159 namespace="virtualbox.org">
20160 <interface name="ISession" default="yes"/>
20161 </class>
20162 </module>
20163
20164</library>
20165
20166</idl>
20167
20168<!-- vim: set shiftwidth=2 tabstop=2 expandtab: -->
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette