VirtualBox

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

Last change on this file since 11342 was 11342, checked in by vboxsync, 17 years ago

PerfAPI: More documentation

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 380.1 KB
Line 
1<?xml version="1.0" ?>
2
3<!--
4 * :tabSize=2:indentSize=2:noTabs=true:
5 * :folding=explicit:collapseFolds=1:
6 *
7 * Master declaration for VirtualBox's Main API, represented
8 * by COM/XPCOM and web service interfaces.
9 *
10 * From this document, the build system generates several files
11 * via XSLT that are then used during the build process.
12 *
13 * Below is the list of XSL templates that operate on this file and
14 * output files they generate. These XSL templates must be updated
15 * whenever the schema of this file changes:
16 *
17 * 1. src/VBox/Main/idl/midl.xsl =>
18 * out/<platform>/bin/sdk/idl/VirtualBox.idl
19 * (MS COM interface definition file for Main API)
20 *
21 * 2. src/VBox/Main/idl/xpidl.xsl =>
22 * out/<platform>/bin/sdk/idl/VirtualBox_XPCOM.idl
23 * (XPCOM interface definition file for Main API)
24 *
25 * 3. src/VBox/Main/idl/doxygen.xsl =>
26 * out/<platform>/obj/src/VBox/Main/VirtualBox.idl
27 * (pseudo-IDL for Doxygen to generate the official Main API
28 * documentation)
29 *
30 * 4. src/VBox/Main/webservice/*.xsl =>
31 * a bunch of WSDL and C++ files
32 * (VirtualBox web service sources and SOAP mappers;
33 * see src/VBox/Main/webservice/Makefile.kmk for details)
34 *
35 * 5. src/VBox/Frontends/VirtualBox/include/COMWrappers.xsl =>
36 * out/<platform>/obj/src/VBox/Frontends/VirtualBox/VirtualBox/include/COMWrappers.h
37 * (smart Qt-based C++ wrapper classes for COM interfaces
38 * of the Main API)
39 *
40 * 6. src/VBox/Frontends/VirtualBox4/include/COMWrappers.xsl =>
41 * out/<platform>/obj/src/VBox/Frontends/VirtualBox4/VirtualBox/include/COMWrappers.h
42 * (smart Qt-based C++ wrapper classes for COM interfaces
43 * of the Main API)
44 *
45 * 7. src/VBox/Installer/win32/VirtualBox_TypeLib.xsl =>
46 * out/<platform>/obj/src/VBox/Installer/win32/VirtualBox_TypeLib.wxi
47 * (Main API TypeLib block for the WiX installer)
48 *
49 Copyright (C) 2006-2007 Sun Microsystems, Inc.
50
51 This file is part of VirtualBox Open Source Edition (OSE), as
52 available from http://www.virtualbox.org. This file is free software;
53 you can redistribute it and/or modify it under the terms of the GNU
54 General Public License (GPL) as published by the Free Software
55 Foundation, in version 2 as it comes in the "COPYING" file of the
56 VirtualBox OSE distribution. VirtualBox OSE is distributed in the
57 hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
58
59 Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
60 Clara, CA 95054 USA or visit http://www.sun.com if you need
61 additional information or have any questions.
62-->
63
64<idl>
65
66<if target="midl">
67 <cpp line="enum {"/>
68 <cpp line=" kTypeLibraryMajorVersion = 1,"/>
69 <cpp line=" kTypeLibraryMinorVersion = 0"/>
70 <cpp line="};"/>
71</if>
72
73<if target="xpidl">
74 <!-- NS_IMPL_THREADSAFE_ISUPPORTSxx_CI macros are placed here, for convenience -->
75 <cpp>
76// currenty, nsISupportsImpl.h lacks the below-like macros
77#ifndef NS_IMPL_THREADSAFE_ISUPPORTS1_CI
78#define NS_IMPL_THREADSAFE_ISUPPORTS1_CI(_class, _interface) \
79 NS_IMPL_THREADSAFE_ADDREF(_class) \
80 NS_IMPL_THREADSAFE_RELEASE(_class) \
81 NS_IMPL_QUERY_INTERFACE1_CI(_class, _interface) \
82 NS_IMPL_CI_INTERFACE_GETTER1(_class, _interface)
83#endif
84#ifndef NS_IMPL_THREADSAFE_ISUPPORTS2_CI
85#define NS_IMPL_THREADSAFE_ISUPPORTS2_CI(_class, _i1, _i2) \
86 NS_IMPL_THREADSAFE_ADDREF(_class) \
87 NS_IMPL_THREADSAFE_RELEASE(_class) \
88 NS_IMPL_QUERY_INTERFACE2_CI(_class, _i1, _i2) \
89 NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2)
90#endif
91 </cpp>
92</if>
93
94<library
95 name="VirtualBox"
96 uuid="46137EEC-703B-4fe5-AFD4-7C9BBBBA0259"
97 version="1.3"
98 desc="VirtualBox Type Library"
99 appUuid="819B4D85-9CEE-493C-B6FC-64FFE759B3C9"
100 supportsErrorInfo="yes"
101>
102
103 <!--
104 // all common enums
105 /////////////////////////////////////////////////////////////////////////
106 -->
107
108 <enum
109 name="TSBool"
110 uuid="523ff64d-842a-4b1a-80e7-c311b028cb3a"
111 >
112 <desc>
113 Boolean variable having a third state, default.
114 </desc>
115
116 <const name="False" value="0"/>
117 <const name="True" value="1"/>
118 <const name="Default" value="2"/>
119 </enum>
120
121 <enum
122 name="MachineState"
123 uuid="73bf04d0-7c4f-4684-9abf-d65a9ad74343"
124 >
125 <desc>
126 Virtual machine execution state. This enumeration represents possible
127 values of the <link to="IMachine::state"/> attribute.
128 </desc>
129
130 <const name="Null" value="0">
131 <desc><tt>null</tt> value. Never used by the API.</desc>
132 </const>
133 <const name="PoweredOff" value="1">
134 <desc>
135 The machine is not running.
136 </desc>
137 </const>
138 <const name="Saved" value="2">
139 <desc>
140 The machine is not currently running, but the execution state
141 of the machine has been saved to an external file when it
142 was running.
143 <note>
144 No any machine settings can be altered when the machine
145 is in this state.
146 </note>
147 </desc>
148 </const>
149 <const name="Aborted" value="3">
150 <desc>
151 A process that run the machine has abnormally terminated.
152 Other than that, this value is equivalent to #PoweredOff.
153 </desc>
154 </const>
155 <const name="Running" value="4">
156 <desc>
157 The machine is currently being executed.
158 <note>
159 This value can be used in comparison expressions:
160 all state values below it describe a virtual machine that is
161 not currently being executed (i.e., it is completely out of
162 action).
163 </note>
164 <note>
165 For whoever decides to touch this enum: In order to keep the
166 aforementioned comparisons valid, this state must immediately
167 preceed the Paused state.
168 </note>
169 </desc>
170 </const>
171 <const name="Paused" value="5">
172 <desc>
173 The execution of the machine has been paused.
174 <note>
175 This value can be used in comparison expressions: all state values
176 above it represent unstable states of the running virtual
177 machine. Unless explicitly stated otherwise, no machine settings can
178 be altered when it is in one of the unstable sates.
179 </note>
180 <note>
181 For whoever decides to touch this enum: In order to keep the
182 aforementioned comparisons valid, this state must immediately
183 follow the Running state.
184 </note>
185 </desc>
186 </const>
187 <const name="Stuck" value="6">
188 <desc>
189 The execution of the machine has reached the Guru Meditaion
190 condition. This condition indicates an internal VMM failure which may
191 happen as a result of either an unhandled low-level virtual hardware
192 exception or one of the recompiler exceptions (such as
193 the <i>too-many-traps</i> condition).
194 </desc>
195 </const>
196 <const name="Starting" value="7">
197 <desc>
198 The machine is being started after
199 <link to="IConsole::powerUp">powering it on</link> from a
200 zero execution state.
201 </desc>
202 </const>
203 <const name="Stopping" value="8">
204 <desc>
205 The machine is being normally stopped
206 (after explicitly <link to="IConsole::powerDown">powering it off</link>,
207 or after the guest OS has initiated a shutdown sequence).
208 </desc>
209 </const>
210 <const name="Saving" value="9">
211 <desc>
212 The machine is saving its execution state to a file as a
213 result of calling <link to="IConsole::saveState"/> or an online
214 snapshot of the machine is being taken using
215 <link to="IConsole::takeSnapshot"/>.
216 </desc>
217 </const>
218 <const name="Restoring" value="10">
219 <desc>
220 The execution state of the machine is being restored from a file
221 after <link to="IConsole::powerUp">powering it on</link> from
222 a saved execution state.
223 </desc>
224 </const>
225 <const name="Discarding" value="11">
226 <desc>
227 A snapshot of the machine is being discarded after calling
228 <link to="IConsole::discardSnapshot"/> or its current state is
229 being discarded after <link to="IConsole::discardCurrentState"/>.
230 </desc>
231 </const>
232 </enum>
233
234 <enum
235 name="SessionState"
236 uuid="CF2700C0-EA4B-47ae-9725-7810114B94D8"
237 >
238 <desc>
239 Session state. This enumeration represents possible values of
240 <link to="IMachine::sessionState"/> and <link to="ISession::state"/>
241 attributes. Idividual value descriptions contain the appropriate
242 meaning for every case.
243 </desc>
244
245 <const name="Null" value="0">
246 <desc><tt>null</tt> value. Never used by the API.</desc>
247 </const>
248 <const name="Closed" value="1">
249 <desc>
250 The machine has no open sessions (<link to="IMachine::sessionState"/>);
251 the session is closed (<link to="ISession::state"/>)
252 </desc>
253 </const>
254 <const name="Open" value="2">
255 <desc>
256 The machine has an open direct session (<link to="IMachine::sessionState"/>);
257 the session is open (<link to="ISession::state"/>)
258 </desc>
259 </const>
260 <const name="Spawning" value="3">
261 <desc>
262 A new (direct) session is being opened for the machine
263 as a result of <link to="IVirtualBox::openRemoteSession()"/>
264 call (<link to="IMachine::sessionState"/>);
265 the session is currently being opened
266 as a result of <link to="IVirtualBox::openRemoteSession()"/>
267 call (<link to="ISession::state"/>)
268 </desc>
269 </const>
270 <const name="Closing" value="4">
271 <desc>
272 The direct session is being closed (<link to="IMachine::sessionState"/>);
273 the session is being closed (<link to="ISession::state"/>)
274 </desc>
275 </const>
276 </enum>
277
278 <enum
279 name="SessionType"
280 uuid="A13C02CB-0C2C-421E-8317-AC0E8AAA153A"
281 >
282 <desc>
283 Session type. This enumeration represents possible values of the
284 <link to="ISession::type"/> attribute.
285 </desc>
286
287 <const name="Null" value="0">
288 <desc><tt>null</tt> value. Never used by the API.</desc>
289 </const>
290 <const name="Direct" value="1">
291 <desc>
292 Direct session
293 (opened by <link to="IVirtualBox::openSession()"/>)
294 </desc>
295 </const>
296 <const name="Remote" value="2">
297 <desc>
298 Remote session
299 (opened by <link to="IVirtualBox::openRemoteSession()"/>)
300 </desc>
301 </const>
302 <const name="Existing" value="3">
303 <desc>
304 Existing session
305 (opened by <link to="IVirtualBox::openExistingSession()"/>)
306 </desc>
307 </const>
308 </enum>
309
310 <enum
311 name="DeviceType"
312 uuid="6d9420f7-0b56-4636-99f9-7346f1b01e57"
313 >
314 <desc>
315 Device type.
316 </desc>
317 <const name="Null" value="0">
318 <desc>
319 <tt>null</tt> value which may also mean "no device".
320 <note>
321 This value is not allowed for
322 <link to="IConsole::getDeviceActivity"/>
323 </note>
324 </desc>
325 </const>
326 <const name="Floppy" value="1">
327 <desc>Floppy device.</desc>
328 </const>
329 <const name="DVD" value="2">
330 <desc>CD/DVD-ROM device.</desc>
331 </const>
332 <const name="HardDisk" value="3">
333 <desc>Hard disk device.</desc>
334 </const>
335 <const name="Network" value="4">
336 <desc>Network device.</desc>
337 </const>
338 <const name="USB" value="5">
339 <desc>USB device.</desc>
340 </const>
341 <const name="SharedFolder" value="6">
342 <desc>Shared folder device.</desc>
343 </const>
344 </enum>
345
346 <enum
347 name="DeviceActivity"
348 uuid="6FC8AEAA-130A-4eb5-8954-3F921422D707"
349 >
350 <desc>
351 Device activity for <link to="IConsole::getDeviceActivity"/>.
352 </desc>
353
354 <const name="Null" value="0"/>
355 <const name="Idle" value="1"/>
356 <const name="Reading" value="2"/>
357 <const name="Writing" value="3"/>
358 </enum>
359
360 <enum
361 name="ResourceUsage"
362 uuid="FC56E4B6-B195-48e2-A5E1-A667B0D9F809"
363 >
364 <desc>
365 Usage type constants for
366 <link to="IVirtualBox::getDVDImageUsage"/> and
367 <link to="IVirtualBox::getFloppyImageUsage"/>.
368 </desc>
369
370 <const name="Null" value="0">
371 <desc><tt>null</tt> value. Never used by the API.</desc>
372 </const>
373 <const name="Permanent" value="1">
374 <desc>
375 Scopes the VMs that use the resource permanently
376 (the information about this usage is stored in the VM
377 settings file).
378 </desc>
379 </const>
380 <const name="Temporary" value="2">
381 <desc>
382 Scopes the VMs that are temporarily using the resource
383 (the information about the usage is not yet saved in the VM
384 settings file). Temporary usage can take place only in the
385 context of an open session.
386 </desc>
387 </const>
388 <const name="All" value="3">
389 <desc>
390 Combines Permanent and Temporary.
391 </desc>
392 </const>
393 </enum>
394
395 <enum
396 name="StorageBus"
397 uuid="715984a5-093c-43bb-aa42-a16ed16828dd"
398 >
399 <desc>Interface bus type for storage devices.</desc>
400
401 <const name="Null" value="0">
402 <desc><tt>null</tt> value. Never used by the API.</desc>
403 </const>
404
405 <const name="IDE" value="1"/>
406 <const name="SATA" value="2"/>
407 </enum>
408
409 <enum
410 name="ClipboardMode"
411 uuid="33364716-4008-4701-8f14-be0fa3d62950"
412 >
413 <desc>
414 Host-Guest clipboard interchange mode.
415 </desc>
416
417 <const name="Disabled" value="0"/>
418 <const name="HostToGuest" value="1"/>
419 <const name="GuestToHost" value="2"/>
420 <const name="Bidirectional" value="3"/>
421 </enum>
422
423 <enum
424 name="Scope"
425 uuid="7c91096e-499e-4eca-9f9b-9001438d7855"
426 >
427 <desc>
428 Scope of the operation.
429
430 A generic enumeration used in various methods to define the action or
431 argument scope.
432 </desc>
433
434 <const name="Global" value="0"/>
435 <const name="Machine" value="1"/>
436 <const name="Session" value="2"/>
437 </enum>
438
439 <enum
440 name="GuestStatisticType"
441 uuid="aa7c1d71-aafe-47a8-9608-27d2d337cf55"
442 >
443 <desc>
444 Statistics type for <link to="IGuest::getStatistic"/>.
445 </desc>
446
447 <const name="CPULoad_Idle" value="0">
448 <desc>
449 Idle CPU load (0-100%) for last interval.
450 </desc>
451 </const>
452 <const name="CPULoad_Kernel" value="1">
453 <desc>
454 Kernel CPU load (0-100%) for last interval.
455 </desc>
456 </const>
457 <const name="CPULoad_User" value="2">
458 <desc>
459 User CPU load (0-100%) for last interval.
460 </desc>
461 </const>
462 <const name="Threads" value="3">
463 <desc>
464 Total number of threads in the system.
465 </desc>
466 </const>
467 <const name="Processes" value="4">
468 <desc>
469 Total number of processes in the system.
470 </desc>
471 </const>
472 <const name="Handles" value="5">
473 <desc>
474 Total number of handles in the system.
475 </desc>
476 </const>
477 <const name="MemoryLoad" value="6">
478 <desc>
479 Memory load (0-100%).
480 </desc>
481 </const>
482 <const name="PhysMemTotal" value="7">
483 <desc>
484 Total physical memory in megabytes.
485 </desc>
486 </const>
487 <const name="PhysMemAvailable" value="8">
488 <desc>
489 Free physical memory in megabytes.
490 </desc>
491 </const>
492 <const name="PhysMemBalloon" value="9">
493 <desc>
494 Ballooned physical memory in megabytes.
495 </desc>
496 </const>
497 <const name="MemCommitTotal" value="10">
498 <desc>
499 Total amount of memory in the committed state in megabytes.
500 </desc>
501 </const>
502 <const name="MemKernelTotal" value="11">
503 <desc>
504 Total amount of memory used by the guest OS's kernel in megabytes.
505 </desc>
506 </const>
507 <const name="MemKernelPaged" value="12">
508 <desc>
509 Total amount of paged memory used by the guest OS's kernel in megabytes.
510 </desc>
511 </const>
512 <const name="MemKernelNonpaged" value="13">
513 <desc>
514 Total amount of nonpaged memory used by the guest OS's kernel in megabytes.
515 </desc>
516 </const>
517 <const name="MemSystemCache" value="14">
518 <desc>
519 Total amount of memory used by the guest OS's system cache in megabytes.
520 </desc>
521 </const>
522 <const name="PageFileSize" value="15">
523 <desc>
524 Pagefile size in megabytes.
525 </desc>
526 </const>
527 <const name="SampleNumber" value="16">
528 <desc>
529 Statistics sample number
530 </desc>
531 </const>
532 <const name="MaxVal" value="17"/>
533 </enum>
534
535 <enum
536 name="BIOSBootMenuMode"
537 uuid="ae4fb9f7-29d2-45b4-b2c7-d579603135d5"
538 >
539 <desc>
540 BIOS boot menu mode.
541 </desc>
542
543 <const name="Disabled" value="0"/>
544 <const name="MenuOnly" value="1"/>
545 <const name="MessageAndMenu" value="2"/>
546 </enum>
547
548 <enum
549 name="IDEControllerType"
550 uuid="445330e3-202a-4dab-854f-ce22e6cb9715"
551 >
552 <desc>
553 IDE controller type.
554 </desc>
555
556 <const name="Null" value="0">
557 <desc><tt>null</tt> value. Never used by the API.</desc>
558 </const>
559 <const name="PIIX3" value="1"/>
560 <const name="PIIX4" value="2"/>
561 </enum>
562
563 <enum
564 name="DriveState"
565 uuid="cb7233b7-c519-42a5-8310-1830953cacbc"
566 >
567 <const name="Null" value="0">
568 <desc><tt>null</tt> value. Never used by the API.</desc>
569 </const>
570 <const name="NotMounted" value="1"/>
571 <const name="ImageMounted" value="2"/>
572 <const name="HostDriveCaptured" value="3"/>
573 </enum>
574
575 <!--
576 // IVirtualBoxErrorInfo
577 /////////////////////////////////////////////////////////////////////////
578 -->
579
580 <interface
581 name="IVirtualBoxErrorInfo" extends="$errorinfo"
582 uuid="e98b5376-8eb4-4eea-812a-3964bf3bb26f"
583 supportsErrorInfo="no"
584 wsmap="suppress"
585 >
586 <desc>
587 The IVirtualBoxErrorInfo interface represents extended error information.
588
589 Extended error information can be set by VirtualBox components after
590 unsuccessful or partially successful method invocation. This information
591 can be retrievefd by the calling party as an IVirtualBoxErrorInfo object
592 and then shown to the client in addition to the plain 32-bit result code.
593
594 In MS COM, this interface extends the IErrorInfo interface,
595 in XPCOM, it extends the nsIException interface. In both cases,
596 it provides a set of common attributes to retrieve error
597 information.
598
599 Sometimes invocation of some component's method may involve methods of
600 other components that may also fail (independently of this method's
601 failure), or a series of non-fatal errors may precede a fatal error that
602 causes method failure. In cases like that, it may be desirable to preserve
603 information about all errors happened during method invocation and deliver
604 it to the caller. The <link to="#next"/> attribute is intended
605 specifically for this purpose and allows to represent a chain of errors
606 through a single IVirtualBoxErrorInfo object set after method invocation.
607
608 Note that errors are stored to a chain in the reverse order, i.e. the
609 initial error object you query right after method invocation is the last
610 error set by the callee, the object it points to in the @a next attribute
611 is the previous error and so on, up to the first error (which is the last
612 in the chain).
613 </desc>
614
615 <attribute name="resultCode" type="result" readonly="yes">
616 <desc>
617 Result code of the error.
618 Usually, it will be the same as the result code returned
619 by the method that provided this error information, but not
620 always. For example, on Win32, CoCreateInstance() will most
621 likely return E_NOINTERFACE upon unsuccessful component
622 instantiation attempt, but not the value the component factory
623 returned.
624 <note>
625 In MS COM, there is no equivalent.
626 In XPCOM, it is the same as nsIException::result.
627 </note>
628 </desc>
629 </attribute>
630
631 <attribute name="interfaceID" type="uuid" readonly="yes">
632 <desc>
633 UUID of the interface that defined the error.
634 <note>
635 In MS COM, it is the same as IErrorInfo::GetGUID.
636 In XPCOM, there is no equivalent.
637 </note>
638 </desc>
639 </attribute>
640
641 <attribute name="component" type="wstring" readonly="yes">
642 <desc>
643 Name of the component that generated the error.
644 <note>
645 In MS COM, it is the same as IErrorInfo::GetSource.
646 In XPCOM, there is no equivalent.
647 </note>
648 </desc>
649 </attribute>
650
651 <attribute name="text" type="wstring" readonly="yes">
652 <desc>
653 Text description of the error.
654 <note>
655 In MS COM, it is the same as IErrorInfo::GetDescription.
656 In XPCOM, it is the same as nsIException::message.
657 </note>
658 </desc>
659 </attribute>
660
661 <attribute name="next" type="IVirtualBoxErrorInfo" readonly="yes">
662 <desc>
663 Next error object if there is any, or @c null otherwise.
664 <note>
665 In MS COM, there is no equivalent.
666 In XPCOM, it is the same as nsIException::inner.
667 </note>
668 </desc>
669 </attribute>
670
671 </interface>
672
673
674 <!--
675 // IVirtualBox
676 /////////////////////////////////////////////////////////////////////////
677 -->
678
679 <interface
680 name="IVirtualBoxCallback" extends="$unknown"
681 uuid="5516cc08-fb81-47a6-b184-031e7bbd2997"
682 wsmap="suppress"
683 >
684 <method name="onMachineStateChange">
685 <desc>
686 The execution state of the given machine has changed.
687 <see>IMachine::state</see>
688 </desc>
689 <param name="machineId" type="uuid" dir="in">
690 <desc>ID of the machine this event relates to.</desc>
691 </param>
692 <param name="state" type="MachineState" dir="in">
693 <desc>New execution state.</desc>
694 </param>
695 </method>
696
697 <method name="onMachineDataChange">
698 <desc>
699 Any of the settings of the given machine has changed.
700 </desc>
701 <param name="machineId" type="uuid" dir="in">
702 <desc>ID of the machine this event relates to.</desc>
703 </param>
704 </method>
705
706 <method name="onExtraDataCanChange">
707 <desc>
708 Notification when someone tries to change extra data for
709 either the given machine or (if null) global extra data.
710 This gives the chance to veto against changes.
711 </desc>
712 <param name="machineId" type="uuid" dir="in">
713 <desc>
714 ID of the machine this event relates to
715 (null ID for global extra data change requests).
716 </desc>
717 </param>
718 <param name="key" type="wstring" dir="in">
719 <desc>
720 Extra data key for the attempted write.
721 </desc>
722 </param>
723 <param name="value" type="wstring" dir="in">
724 <desc>
725 Extra data value for the given key.
726 </desc>
727 </param>
728 <param name="error" type="wstring" dir="out">
729 <desc>
730 Optional error message describing the reason of the
731 veto (ignored if this notification returns @c true).
732 </desc>
733 </param>
734 <param name="allowChange" type="boolean" dir="return">
735 <desc>
736 Flag to indicate whether the callee agrees (@ true)
737 or vetoes against the change (@ false).
738 </desc>
739 </param>
740 </method>
741
742 <method name="onExtraDataChange">
743 <desc>
744 Notification when machine specific or global extra data
745 has changed.
746 </desc>
747 <param name="machineId" type="uuid" dir="in">
748 <desc>
749 ID of the machine this event relates to.
750 Null for global extra data changes.
751 </desc>
752 </param>
753 <param name="key" type="wstring" dir="in">
754 <desc>
755 Extra data key that has changed.
756 </desc>
757 </param>
758 <param name="value" type="wstring" dir="in">
759 <desc>
760 Extra data value for the given key.
761 </desc>
762 </param>
763 </method>
764
765 <method name="onMediaRegistered">
766 <desc>
767 The given media was registered or unregistered
768 within this VirtualBox installation.
769
770 The @a mediaType parameter describes what type of
771 media the specified @a mediaId refers to. Possible
772 values are:
773
774 - <link to="DeviceType::HardDisk"/>: the media is a hard disk
775 that, if registered, can be obtained using the
776 <link to="IVirtualBox::getHardDisk"/> call.
777 - <link to="DeviceType::DVD"/>: the media is a CD/DVD image
778 that, if registered, can be obtained using the
779 <link to="IVirtualBox::getDVDImage"/> call.
780 - <link to="DeviceType::Floppy"/>: the media is a Floppy image
781 that, if registered, can be obtained using the
782 <link to="IVirtualBox::getFloppyImage"/> call.
783
784 Note that if this is a deregistration notification,
785 there is no way to access the object representing the
786 unregistered media. It is supposed that the
787 application will do required cleanup based on the @a
788 mediaId value.
789 </desc>
790 <param name="mediaId" type="uuid" dir="in">
791 <desc>ID of the media this event relates to.</desc>
792 </param>
793 <param name="mediaType" type="DeviceType" dir="in">
794 <desc>Type of the media this event relates to.</desc>
795 </param>
796 <param name="registered" type="boolean" dir="in">
797 <desc>
798 If true, the media was registered, otherwise it was
799 unregistered.
800 </desc>
801 </param>
802 </method>
803
804 <method name="onMachineRegistered">
805 <desc>
806 The given machine was registered or unregistered
807 within this VirtualBox installation.
808 </desc>
809 <param name="machineId" type="uuid" dir="in">
810 <desc>ID of the machine this event relates to.</desc>
811 </param>
812 <param name="registered" type="boolean" dir="in">
813 <desc>
814 If true, the machine was registered, otherwise it was
815 unregistered.
816 </desc>
817 </param>
818 </method>
819
820 <method name="onSessionStateChange">
821 <desc>
822 The state of the session for the given machine was changed.
823 <see>IMachine::sessionState</see>
824 </desc>
825 <param name="machineId" type="uuid" dir="in">
826 <desc>ID of the machine this event relates to.</desc>
827 </param>
828 <param name="state" type="SessionState" dir="in">
829 <desc>New session state.</desc>
830 </param>
831 </method>
832
833 <method name="onSnapshotTaken">
834 <desc>
835 A new snapshot of the machine has been taken.
836 <see>ISnapshot</see>
837 </desc>
838 <param name="machineId" type="uuid" dir="in">
839 <desc>ID of the machine this event relates to.</desc>
840 </param>
841 <param name="snapshotId" type="uuid" dir="in">
842 <desc>ID of the new snapshot.</desc>
843 </param>
844 </method>
845
846 <method name="onSnapshotDiscarded">
847 <desc>
848 Snapshot of the given machine has been discarded.
849
850 <note>
851 This notification is delivered <b>after</b> the snapshot
852 object has been uninitialized on the server (so that any
853 attempt to call its methods will return an error).
854 </note>
855
856 <see>ISnapshot</see>
857 </desc>
858 <param name="machineId" type="uuid" dir="in">
859 <desc>ID of the machine this event relates to.</desc>
860 </param>
861 <param name="snapshotId" type="uuid" dir="in">
862 <desc>
863 ID of the discarded snapshot. <tt>null</tt> means the
864 current machine state has been discarded (restored from
865 the current snapshot).
866 </desc>
867 </param>
868 </method>
869
870 <method name="onSnapshotChange">
871 <desc>
872 Snapshot properties (name and/or description) have been changed.
873 <see>ISnapshot</see>
874 </desc>
875 <param name="machineId" type="uuid" dir="in">
876 <desc>ID of the machine this event relates to.</desc>
877 </param>
878 <param name="snapshotId" type="uuid" dir="in">
879 <desc>ID of the changed snapshot.</desc>
880 </param>
881 </method>
882
883 <method name="onGuestPropertyChange">
884 <desc>
885 Notification when a guest property has changed.
886 </desc>
887 <param name="machineId" type="uuid" dir="in">
888 <desc>
889 ID of the machine this event relates to.
890 </desc>
891 </param>
892 <param name="name" type="wstring" dir="in">
893 <desc>
894 The name of the property that has changed.
895 </desc>
896 </param>
897 <param name="value" type="wstring" dir="in">
898 <desc>
899 The new property value.
900 </desc>
901 </param>
902 <param name="flags" type="wstring" dir="in">
903 <desc>
904 The new property flags.
905 </desc>
906 </param>
907 </method>
908
909 </interface>
910
911 <interface
912 name="IVirtualBox" extends="$dispatched"
913 uuid="557a07bc-e6ae-4520-a361-4a8493199137"
914 wsmap="managed"
915 >
916 <desc>
917 The IVirtualBox interface represents the main interface exposed by the
918 product that provides virtual machine management.
919
920 An instance of IVirtualBox is required for the product to do anything
921 useful. Even though the interface does not expose this, internally,
922 IVirtualBox is implemented as a singleton and actually lives in the
923 process of the VirtualBox server (VBoxSVC.exe). This makes sure that
924 IVirtualBox can track the state of all virtual machines on a particular
925 host, regardless of which frontend started them.
926
927 To enumerate all the virtual machines on the host, use the
928 <link to="IVirtualBox::machines"/> attribute.
929 </desc>
930
931 <attribute name="version" type="wstring" readonly="yes">
932 <desc>
933 A string representing the version number of the product. The
934 format is 3 integer numbers divided by dots (e.g. 1.0.1). The
935 last number represents the build number and will frequently change.
936 </desc>
937 </attribute>
938
939 <attribute name="packageType" type="wstring" readonly="yes">
940 <desc>
941 A string representing the package type of this product. The
942 format is OS_ARCH_DIST where OS is either WINDOWS, LINUX,
943 SOLARIS, DARWIN. ARCH is either 32BITS or 64BITS. DIST
944 is either GENERIC, UBUNTU_606, UBUNTU_710, or something like
945 this.
946 </desc>
947 </attribute>
948
949 <attribute name="homeFolder" type="wstring" readonly="yes">
950 <desc>
951 Full path to the directory where the global settings file,
952 <tt>VirtualBox.xml</tt>, is stored.
953
954 In this version of VirtualBox, the value of this property is
955 always <tt>&lt;user_dir&gt;/.VirtualBox</tt> (where
956 <tt>&lt;user_dir&gt;</tt> is the path to the user directory,
957 as determined by the host OS), and cannot be changed.
958
959 This path is also used as the base to resolve relative paths in
960 places where relative paths are allowed (unless otherwise
961 expressly indicated).
962 </desc>
963 </attribute>
964
965 <attribute name="settingsFilePath" type="wstring" readonly="yes">
966 <desc>
967 Full name of the global settings file.
968 The value of this property corresponds to the value of
969 <link to="#homeFolder"/> plus <tt>/VirtualBox.xml</tt>.
970 </desc>
971 </attribute>
972
973 <attribute name="settingsFileVersion" type="wstring" readonly="yes">
974 <desc>
975 Current version of the format of the global VirtualBox settings file
976 (<tt>VirtualBox.xml</tt>).
977
978 The version string has the following format:
979 <pre>
980 x.y-platform
981 </pre>
982 where <tt>x</tt> and <tt>y</tt> are the major and the minor format
983 versions, and <tt>platform</tt> is the platform identifier.
984
985 The current version usually matches the value of the
986 <link to="#settingsFormatVersion"/> attribute unless the
987 settings file was created by an older version of VirtualBox and there
988 was a change of the settings file format since then.
989
990 Note that VirtualBox automatically converts settings files from older
991 versions to the most recent version when reading them (usually at
992 VirtualBox startup) but it doesn't save the changes back until
993 you call a method that implicitly saves settings (such as
994 <link to="#setExtraData()"/>) or call <link to="#saveSettings()"/>
995 explicitly. Therefore, if the value of this attribute differs from the
996 value of <link to="#settingsFormatVersion"/>, then it
997 means that the settings file was converted but the result of the
998 conversion is not yet saved to disk.
999
1000 The above feature may be used by interactive front-ends to inform users
1001 about the settings file format change and offer them to explicitly save
1002 all converted settings files (the global and VM-specific ones),
1003 optionally create bacup copies of the old settings files before saving,
1004 etc.
1005
1006 <see>settingsFormatVersion, saveSettingsWithBackup()</see>
1007 </desc>
1008 </attribute>
1009
1010 <attribute name="settingsFormatVersion" type="wstring" readonly="yes">
1011 <desc>
1012 Most recent version of the settings file format.
1013
1014 The version string has the following format:
1015 <pre>
1016 x.y-platform
1017 </pre>
1018 where <tt>x</tt> and <tt>y</tt> are the major and the minor format
1019 versions, and <tt>platform</tt> is the platform identifier.
1020
1021 VirtualBox uses this version of the format when saving settings files
1022 (either as a result of method calls that require to save settings or as
1023 a result of an explicit call to <link to="#saveSettings()"/>).
1024
1025 <see>settingsFileVersion</see>
1026 </desc>
1027 </attribute>
1028
1029 <attribute name="host" type="IHost" readonly="yes">
1030 <desc>Associated host object.</desc>
1031 </attribute>
1032
1033 <attribute name="systemProperties" type="ISystemProperties" readonly="yes">
1034 <desc>Associated system information object.</desc>
1035 </attribute>
1036
1037 <attribute name="machines" type="IMachineCollection" readonly="yes">
1038 <desc>
1039 Collection of machine objects registered within this VirtualBox
1040 instance.
1041 </desc>
1042 </attribute>
1043
1044 <attribute name="machines2" type="IMachine" readonly="yes" safearray="yes">
1045 <desc>
1046 Array of machine objects registered within this VirtualBox instance.
1047 </desc>
1048 </attribute>
1049
1050 <attribute name="hardDisks" type="IHardDiskCollection" readonly="yes">
1051 <desc>
1052 Collection of hard disk objects registered within this VirtualBox
1053 instance.
1054
1055 This collection contains only "top-level" (basic or independent) hard
1056 disk images, but not differencing ones. All differencing images of the
1057 given top-level image (i.e. all its children) can be enumerated using
1058 <link to="IHardDisk::children"/>.
1059 </desc>
1060 </attribute>
1061
1062 <attribute name="DVDImages" type="IDVDImageCollection" readonly="yes"/>
1063
1064 <attribute name="FloppyImages" type="IFloppyImageCollection" readonly="yes"/>
1065
1066 <attribute name="progressOperations" type="IProgressCollection" readonly="yes"/>
1067
1068 <attribute name="guestOSTypes" type="IGuestOSTypeCollection" readonly="yes"/>
1069
1070 <attribute name="sharedFolders" type="ISharedFolderCollection" readonly="yes">
1071 <desc>
1072 Collection of global shared folders. Global shared folders are
1073 available to all virtual machines.
1074
1075 New shared folders are added to the collection using
1076 <link to="#createSharedFolder"/>. Existing shared folders can be
1077 removed using <link to="#removeSharedFolder"/>.
1078
1079 <note>
1080 In the current version of the product, global shared folders are not
1081 implemented and therefore this collection is always empty.
1082 </note>
1083 </desc>
1084 </attribute>
1085
1086 <attribute name="performanceCollector" type="IPerformanceCollector" readonly="yes">
1087 <desc>
1088 Associated performance collector object.
1089 </desc>
1090 </attribute>
1091
1092 <method name="createMachine">
1093 <desc>
1094 Creates a new virtual machine.
1095
1096 The new machine will have "empty" default settings and will not
1097 yet be registered. The typical sequence to create a virtual machine
1098 is therefore something like this:
1099
1100 <ol>
1101 <li>Call this method (IVirtualBox::createMachine) to have a new
1102 machine created. The machine object returned is "mutable", i.e.
1103 automatically locked for the current session, as if
1104 <link to="#openSession" /> had been called on it.</li>
1105
1106 <li>Assign meaningful settings to the new machine by calling the
1107 respective methods.</li>
1108
1109 <li>Call <link to="IMachine::saveSettings" /> to have the settings written
1110 to the machine's XML settings file. The configuration of the newly
1111 created machine will not be saved to disk (and the settings subfolder
1112 and file, as described below, will not be created) until this method
1113 is called.</li>
1114
1115 <li>Call <link to="#registerMachine" /> to have the
1116 machine show up in the list of machines registered with VirtualBox.</li>
1117 </ol>
1118
1119 Every machine has a <i>settings file</i> that is used to store
1120 the machine configuration. This file is stored in the directory
1121 called <i>machine settings subfolder</i>. Unless specified otherwise,
1122 both the subfolder and the settings file will have a name that
1123 corresponds to the name of the virtual machine. You can specify
1124 where to create the machine settings subfolder using the @a
1125 baseFolder argument. The base folder can be absolute (full path)
1126 or relative to the <link to="IVirtualBox::homeFolder">
1127 VirtualBox home directory</link>.
1128
1129 If a null or empty string is given as the base folder (which is
1130 recommended), the <link to="ISystemProperties::defaultMachineFolder">
1131 default machine settings folder</link> will be used as the base
1132 folder to create the machine settings subfolder and file. In
1133 any case, the full path to the settings file will look like:
1134 <pre>
1135 &lt;base_folder&gt;/&lt;machine_name&gt;/&lt;machine_name&gt;.xml
1136 </pre>
1137
1138 Optionally the UUID of the machine can be predefined. If this is
1139 not desired (i.e. a new UUID should be generated), pass just an
1140 empty or null UUID.
1141
1142 You should also specify a valid name for the machine.
1143 See the <link to="IMachine::name"/> property
1144 description for more details about the machine name.
1145
1146 The created machine remains
1147 unregistered until you call <link to="#registerMachine()"/>.
1148
1149 <note>
1150 There is no way to change the name of the settings file or
1151 subfolder of the created machine directly.
1152 </note>
1153 </desc>
1154 <param name="baseFolder" type="wstring" dir="in">
1155 <desc>
1156 Name of the folder where to create the machine settings
1157 subfolder containing the settings file.
1158 </desc>
1159 </param>
1160 <param name="name" type="wstring" dir="in">
1161 <desc>Machine name.</desc>
1162 </param>
1163 <param name="id" type="uuid" dir="in">
1164 <desc>
1165 UUID of the newly created VM, when non-null or non-empty.
1166 Otherwise a UUID is automatically generated.
1167 </desc>
1168 </param>
1169 <param name="machine" type="IMachine" dir="return">
1170 <desc>Created machine object.</desc>
1171 </param>
1172 </method>
1173
1174 <method name="createLegacyMachine">
1175 <desc>
1176 Creates a new virtual machine in "legacy" mode, using the
1177 specified settings file to store machine settings.
1178
1179 As opposed to machines created by <link to="#createMachine()"/>,
1180 the settings file of the machine created in "legacy" mode
1181 is not automatically renamed when the machine name is
1182 changed -- it will always remain the same as specified in this
1183 method call.
1184
1185 The specified settings file name can be absolute
1186 (full path) or relative to the <link to="IVirtualBox::homeFolder">
1187 VirtualBox home directory</link>. If the file name doesn't
1188 contain an extension, the default extension (.xml) will be
1189 appended.
1190
1191 Optionally the UUID of the machine can be predefined. If this is
1192 not desired (i.e. a new UUID should be generated), pass just an
1193 empty or null UUID.
1194
1195 Note that the configuration of the newly created machine is not
1196 saved to disk (and therefore no settings file is created)
1197 until <link to="IMachine::saveSettings()"/> is called. If the
1198 specified settings file already exists,
1199 <link to="IMachine::saveSettings()"/> will return an error.
1200
1201 You should also specify a valid name for the machine.
1202 See the <link to="IMachine::name"/> property
1203 description for more details about the machine name.
1204
1205 The created machine remains
1206 unregistered until you call <link to="#registerMachine()"/>.
1207
1208 @deprecated This method may be removed later. It is better
1209 to use <link to="IVirtualBox::createMachine()"/>.
1210
1211 <note>
1212 There is no way to change the name of the settings file
1213 of the created machine.
1214 </note>
1215 </desc>
1216 <param name="settingsFile" type="wstring" dir="in">
1217 <desc>
1218 Name of the file where to store machine settings.
1219 </desc>
1220 </param>
1221 <param name="name" type="wstring" dir="in">
1222 <desc>Machine name.</desc>
1223 </param>
1224 <param name="id" type="uuid" dir="in">
1225 <desc>
1226 UUID of the newly created VM, when non-null or non-empty.
1227 Otherwise a UUID is automatically generated.
1228 </desc>
1229 </param>
1230 <param name="machine" type="IMachine" dir="return">
1231 <desc>Created machine object.</desc>
1232 </param>
1233 </method>
1234
1235 <method name="openMachine">
1236 <desc>
1237 Opens a virtual machine from the existing settings file.
1238 The opened machine remains unregistered until you call
1239 <link to="#registerMachine()"/>.
1240
1241 The specified settings file name can be absolute
1242 (full path) or relative to the <link to="IVirtualBox::homeFolder">
1243 VirtualBox home directory</link>. This file must exist
1244 and must be a valid machine settings file whose contents
1245 will be used to construct the machine object.
1246
1247 @deprecated Will be removed soon.
1248 </desc>
1249 <param name="settingsFile" type="wstring" dir="in">
1250 <desc>
1251 Name of the machine settings file.
1252 </desc>
1253 </param>
1254 <param name="machine" type="IMachine" dir="return">
1255 <desc>Opened machine object.</desc>
1256 </param>
1257 <note>
1258 <link to="IMachine::settingsModified"/> will return
1259 false for the created machine, until any of machine settigs
1260 are changed.
1261 </note>
1262 </method>
1263
1264 <method name="registerMachine">
1265 <desc>
1266
1267 Registers the machine previously created using
1268 <link to="#createMachine()"/> or opened using
1269 <link to="#openMachine()"/> within this VirtualBox installation. After
1270 successful method invocation, the
1271 <link to="IVirtualBoxCallback::onMachineRegistered"/> signal is sent
1272 to all registered callbacks.
1273
1274 <note>
1275 This method implicitly calls <link to="IMachine::saveSettings"/>
1276 to save all current machine settings before registering it.
1277 </note>
1278
1279 </desc>
1280 <param name="machine" type="IMachine" dir="in"/>
1281 </method>
1282
1283 <method name="getMachine">
1284 <desc>
1285 Attempts to find a virtual machine given its UUID.
1286 To look up a machine by name, use <link to="IVirtualBox::findMachine" /> instead.
1287 </desc>
1288 <param name="id" type="uuid" dir="in"/>
1289 <param name="machine" type="IMachine" dir="return"/>
1290 </method>
1291
1292 <method name="findMachine">
1293 <desc>
1294 Attempts to find a virtual machine given its name.
1295 To look up a machine by UUID, use <link to="IVirtualBox::getMachine" /> instead.
1296 </desc>
1297 <param name="name" type="wstring" dir="in"/>
1298 <param name="machine" type="IMachine" dir="return"/>
1299 </method>
1300
1301 <method name="unregisterMachine">
1302 <desc>
1303
1304 Unregisters the machine previously registered using
1305 <link to="#registerMachine"/>. After successful method invocation, the
1306 <link to="IVirtualBoxCallback::onMachineRegistered"/> signal is sent
1307 to all registered callbacks.
1308
1309 <note>
1310 The specified machine must not be in the Saved state, have an open
1311 (or a spawning) direct session associated with it, have snapshots or
1312 have hard disks attached.
1313 </note>
1314
1315 <note>
1316 This method implicitly calls <link to="IMachine::saveSettings"/> to
1317 save all current machine settings before unregistering it.
1318 </note>
1319
1320 <note>
1321 If the given machine is inaccessible (see
1322 <link to="IMachine::accessible"/>), it will be unregistered and
1323 fully uninitialized right afterwards. As a result, the returned
1324 machine object will be unusable and an attempt to call
1325 <b>any</b> method will return the "Object not ready" error.
1326 </note>
1327
1328 </desc>
1329 <param name="id" type="uuid" dir="in">
1330 <desc>UUID of the machine to unregister.</desc>
1331 </param>
1332 <param name="machine" type="IMachine" dir="return">
1333 <desc>Unregistered machine object.</desc>
1334 </param>
1335 </method>
1336
1337 <method name="createHardDisk">
1338 <desc>
1339
1340 Creates a new unregistered hard disk that will use the given
1341 storage type.
1342
1343 Most properties of the created hard disk object are
1344 uninitialized. Valid values must be assigned to them (and probalby
1345 some actions performed) to make the actual usage of this hard disk
1346 (<link to="#registerHardDisk()">register</link>, attach to a virtual
1347 machine, etc.). See the description of <link to="IHardDisk"/> and
1348 descriptions of storage type specific interfaces for more information.
1349
1350 <note>
1351 For hard disks using
1352 the <link
1353 to="HardDiskStorageType::VirtualDiskImage">VirtualDiskImage</link>
1354 storage type, an image file is not actually created until you call
1355 <link to="IVirtualDiskImage::createDynamicImage()"/> or
1356 <link to="IVirtualDiskImage::createFixedImage()"/>.
1357 </note>
1358
1359 </desc>
1360
1361 <param name="storageType" type="HardDiskStorageType" dir="in">
1362 <desc>Storage type of the hard disk image to create.</desc>
1363 </param>
1364 <param name="hardDisk" type="IHardDisk" dir="return">
1365 <desc>Created hard disk object of the given storage type.</desc>
1366 </param>
1367
1368 </method>
1369
1370 <method name="openHardDisk">
1371 <desc>
1372
1373 Opens a hard disk from an existing location.
1374
1375 This method tries to guess the
1376 <link to="HardDiskStorageType">hard disk storage type</link> from the
1377 format of the location string and from the contents of the resource the
1378 location points to. Currently, a <i>file path</i> is the only
1379 supported format for the location string which must point to either a
1380 VDI file or to a VMDK file. On success, an IHardDisk object will be
1381 returned that also implements the corresponding interface
1382 (IVirtualDiskImage or IVMDKImage, respectively). The
1383 <link to="IHardDisk::storageType"/> property may also be used to
1384 determine the storage type of the returned object (instead of trying
1385 to query one of these interfaces).
1386
1387 <note>
1388 The specified file path can be absolute (full path) or relative to
1389 the <link to="IVirtualBox::homeFolder">VirtualBox home
1390 directory</link>. If only a file name without any path is given,
1391 the <link to="ISystemProperties::defaultVDIFolder"> default VDI
1392 folder</link> will be used as a path to the image file.
1393 </note>
1394
1395 The opened hard disk remains unregistered
1396 until <link to="#registerHardDisk()"/> is called.
1397
1398 </desc>
1399
1400 <param name="location" type="wstring" dir="in">
1401 <desc>
1402 Location of the resource that contains a valid hard disk.
1403 </desc>
1404 </param>
1405 <param name="hardDisk" type="IHardDisk" dir="return">
1406 <desc>Opened hard disk object.</desc>
1407 </param>
1408 </method>
1409
1410 <method name="openVirtualDiskImage">
1411 <desc>
1412
1413 Opens a hard disk from an existing Virtual Disk Image file.
1414 The opened hard disk remains unregistered
1415 until <link to="#registerHardDisk()"/> is called.
1416
1417 @deprecated Use <link to="IVirtualBox::openHardDisk()"/> instead.
1418
1419 <note>Opening differencing images is not supported.</note>
1420
1421 <note>The specified file path can be absolute (full path) or
1422 relative to the <link to="IVirtualBox::homeFolder"> VirtualBox
1423 home directory</link>. If only a file name without any path is
1424 given, the <link to="ISystemProperties::defaultVDIFolder">
1425 default VDI folder</link> will be used as a path to the image
1426 file.</note>
1427
1428 </desc>
1429
1430 <param name="filePath" type="wstring" dir="in">
1431 <desc>
1432 Name of the file that contains a valid Virtual Disk Image.
1433 </desc>
1434 </param>
1435 <param name="image" type="IVirtualDiskImage" dir="return">
1436 <desc>Opened hard disk object.</desc>
1437 </param>
1438 </method>
1439
1440 <method name="registerHardDisk">
1441 <desc>
1442
1443 Registers the given hard disk within this VirtualBox
1444 installation. The hard disk must not be registered, must be
1445 <link to="IHardDisk::accessible"/> and must not be a
1446 differencing hard disk, otherwise the registration will fail.
1447
1448 </desc>
1449 <param name="hardDisk" type="IHardDisk" dir="in">
1450 <desc>Hard disk object to register.</desc>
1451 </param>
1452 </method>
1453
1454 <method name="getHardDisk" const="yes">
1455 <desc>
1456 Returns the registered hard disk with the given UUID.
1457 </desc>
1458 <param name="id" type="uuid" dir="in">
1459 <desc>UUID of the hard disk to look for.</desc>
1460 </param>
1461 <param name="hardDisk" type="IHardDisk" dir="return">
1462 <desc>Found hard disk object.</desc>
1463 </param>
1464 </method>
1465
1466 <method name="findHardDisk">
1467 <desc>
1468
1469 Returns a registered hard disk that uses the given location to
1470 store data. The search is done by comparing the
1471 value of the @a location argument to the
1472 <link to="IHardDisk::location"/> attribute of each registered
1473 hard disk.
1474
1475 For locations repesented by file paths (such as VDI and VMDK
1476 images), the specified location can be either an absolute file
1477 path or a path relative to
1478 the <link to="IVirtualBox::homeFolder"> VirtualBox home
1479 directory</link>. If only a file name without any path is
1480 given, the <link to="ISystemProperties::defaultVDIFolder">
1481 default VDI folder</link> will be used as a path to construct
1482 the absolute image file name to search for. Note that on host
1483 systems with case sensitive filesystems, a case sensitive
1484 comparison is performed, otherwise the case of symbols in the
1485 file path is ignored.
1486
1487 </desc>
1488 <param name="location" type="wstring" dir="in">
1489 <desc>Hard disk location specification to search for.</desc>
1490 </param>
1491 <param name="hardDisk" type="IHardDisk" dir="return">
1492 <desc>Found hard disk object.</desc>
1493 </param>
1494 </method>
1495
1496 <method name="findVirtualDiskImage">
1497 <desc>
1498
1499 Returns a registered hard disk that uses the given image file.
1500
1501 @deprecated Use <link to="IVirtualBox::findHardDisk()"/> instead.
1502
1503 <note>The specified file path can be absolute (full path) or
1504 relative to the <link to="IVirtualBox::homeFolder"> VirtualBox
1505 home directory</link>. If only a file name without any path is
1506 given, the <link to="ISystemProperties::defaultVDIFolder">
1507 default VDI folder</link> will be used as a path to the image
1508 file.</note>
1509
1510 <note>On host systems with case sensitive filesystems, a case
1511 sensitive comparison is performed, otherwise the case of symbols
1512 in the file path is ignored.</note>
1513
1514 </desc>
1515 <param name="filePath" type="wstring" dir="in">
1516 <desc>Virtual Disk Image file path to look for.</desc>
1517 </param>
1518 <param name="image" type="IVirtualDiskImage" dir="return">
1519 <desc>Found hard disk object.</desc>
1520 </param>
1521 </method>
1522
1523 <method name="unregisterHardDisk">
1524 <desc>
1525 Unregisters a hard disk previously registered using
1526 <link to="#registerHardDisk()"/>.
1527 <note>
1528 The specified hard disk must not be attached to any of
1529 the existing virtual machines and must not have children
1530 (differencing) hard disks.
1531 </note>
1532 </desc>
1533 <param name="id" type="uuid" dir="in">
1534 <desc>UUID of the hard disk to unregister.</desc>
1535 </param>
1536 <param name="hardDisk" type="IHardDisk" dir="return">
1537 <desc>Unregistered hard disk object.</desc>
1538 </param>
1539 </method>
1540
1541 <method name="openDVDImage">
1542 <desc>
1543 Opens the CD/DVD image contained in the specified file of
1544 the supported format and assigns it the given UUID. The opened
1545 image remains unregistered
1546 until <link to="#registerDVDImage()"/> is called.
1547 </desc>
1548 <param name="filePath" type="wstring" dir="in">
1549 <desc>
1550 Full name of the file that contains a valid
1551 CD/DVD image. Currently, only ISO images are supported.
1552 <note>
1553 The specified file name can be absolute or relative
1554 to the <link to="IVirtualBox::homeFolder">
1555 VirtualBox home directory</link>.
1556 </note>
1557 </desc>
1558 </param>
1559 <param name="id" type="uuid" dir="in">
1560 <desc>
1561 UUID to assign to the given image file within this
1562 VirtualBox installation. If an empty (null) UUID is
1563 specified, the system will randomly generate an UUID.
1564 </desc>
1565 </param>
1566 <param name="image" type="IDVDImage" dir="return">
1567 <desc>Opened CD/DVD image object.</desc>
1568 </param>
1569 </method>
1570
1571 <method name="registerDVDImage">
1572 <desc>
1573 Registers a CD/DVD image within this VirtualBox
1574 installation. The image must not be registered and must not
1575 be associated with the same image file as any of the already
1576 registered images, otherwise the registration will fail.
1577 </desc>
1578 <param name="image" type="IDVDImage" dir="in">
1579 <desc>CD/DVD image object to register.</desc>
1580 </param>
1581 </method>
1582
1583 <method name="getDVDImage">
1584 <desc>
1585 Returns a registered CD/DVD image with the given UUID.
1586 </desc>
1587 <param name="id" type="uuid" dir="in">
1588 <desc>UUID of the image to look for.</desc>
1589 </param>
1590 <param name="image" type="IDVDImage" dir="return">
1591 <desc>Found CD/DVD image object.</desc>
1592 </param>
1593 </method>
1594
1595 <method name="findDVDImage">
1596 <desc>
1597 Returns a registered CD/DVD image with the given image file.
1598 <note>
1599 On host systems with case sensitive filesystems, a case
1600 sensitive comparison is performed, otherwise the case of
1601 symbols in the file path is ignored.
1602 </note>
1603 </desc>
1604 <param name="filePath" type="wstring" dir="in">
1605 <desc>CD/DVD image file path to look for.</desc>
1606 </param>
1607 <param name="image" type="IDVDImage" dir="return">
1608 <desc>Found CD/DVD image object.</desc>
1609 </param>
1610 </method>
1611
1612 <method name="getDVDImageUsage">
1613 <desc>
1614 Returns the list of of UUIDs of all virtual machines that use
1615 the given CD/DVD image.
1616 </desc>
1617 <param name="id" type="uuid" dir="in">
1618 <desc>UUID of the image to get the usage information for.</desc>
1619 </param>
1620 <param name="usage" type="ResourceUsage" dir="in">
1621 <desc>Type of the usage (permanent, temporary or all).</desc>
1622 </param>
1623 <param name="machineIDs" type="wstring" dir="return">
1624 <desc>
1625 List of UUIDs of all machines that use the given image
1626 in the way specified by the usage parameter.
1627 The list is returned as a string containing UUIDs separated
1628 by spaces. A null string means that the image is not used.
1629 <note>
1630 When the usage type is <link to="ResourceUsage::All"/> and the image
1631 is used by the VM both permanently and temporarily, the VM's UUID
1632 will be present only once in the list.
1633 </note>
1634 </desc>
1635 </param>
1636 </method>
1637
1638 <method name="unregisterDVDImage">
1639 <desc>
1640 Unregisters the CD/DVD image previously registered using
1641 <link to="#registerDVDImage()"/>.
1642 <note>
1643 The specified image must not be mounted to any of
1644 the existing virtual machines.
1645 </note>
1646 </desc>
1647 <param name="id" type="uuid" dir="in">
1648 <desc>UUID of the CD/DVD image to unregister.</desc>
1649 </param>
1650 <param name="image" type="IDVDImage" dir="return">
1651 <desc>Unregistered image object.</desc>
1652 </param>
1653 </method>
1654
1655 <method name="openFloppyImage">
1656 <desc>
1657 Opens a floppy image contained in the specified file of
1658 the supported format and assigns it the given UUID. The opened
1659 image remains unregistered
1660 until <link to="#registerFloppyImage()"/> is called.
1661 </desc>
1662 <param name="filePath" type="wstring" dir="in">
1663 <desc>
1664 Full name of the file that contains a valid
1665 floppy image.
1666 <note>
1667 The specified file name can be absolute or relative
1668 to the <link to="IVirtualBox::homeFolder">
1669 VirtualBox home directory</link>.
1670 </note>
1671 </desc>
1672 </param>
1673 <param name="id" type="uuid" dir="in">
1674 <desc>
1675 UUID to assign to the given image file within this
1676 VirtualBox installation. If an empty (null) UUID is
1677 specified, the system will randomly generate an UUID.
1678 </desc>
1679 </param>
1680 <param name="image" type="IFloppyImage" dir="return">
1681 <desc>Opened CD/DVD image object.</desc>
1682 </param>
1683 </method>
1684
1685 <method name="registerFloppyImage">
1686 <desc>
1687 Registers a floppy image within this VirtualBox
1688 installation. The image must not be registered and must not
1689 be associated with the same image file as any of the already
1690 registered images, otherwise the registration will fail.
1691 </desc>
1692 <param name="image" type="IFloppyImage" dir="in">
1693 <desc>Floppy image object to register.</desc>
1694 </param>
1695 </method>
1696
1697 <method name="getFloppyImage">
1698 <desc>
1699 Returns a registered floppy image with the given UUID.
1700 </desc>
1701 <param name="id" type="uuid" dir="in">
1702 <desc>UUID of the image to look for.</desc>
1703 </param>
1704 <param name="image" type="IFloppyImage" dir="return">
1705 <desc>Found floppy image object.</desc>
1706 </param>
1707 </method>
1708
1709 <method name="findFloppyImage">
1710 <desc>
1711 Returns a registered floppy image with the given image file.
1712 <note>
1713 On host systems with case sensitive filesystems, a case
1714 sensitive comparison is performed, otherwise the case of
1715 symbols in the file path is ignored.
1716 </note>
1717 </desc>
1718 <param name="filePath" type="wstring" dir="in">
1719 <desc>Floppy image file path to look for.</desc>
1720 </param>
1721 <param name="image" type="IFloppyImage" dir="return">
1722 <desc>Found floppy image object.</desc>
1723 </param>
1724 </method>
1725
1726 <method name="getFloppyImageUsage">
1727 <desc>
1728 Returns the list of of UUIDs of all virtual machines that use
1729 the given floppy image.
1730 </desc>
1731 <param name="id" type="uuid" dir="in">
1732 <desc>UUID of the image to get the usage information for.</desc>
1733 </param>
1734 <param name="usage" type="ResourceUsage" dir="in">
1735 <desc>Type of the usage (permanent, temporary or all).</desc>
1736 </param>
1737 <param name="machineIDs" type="wstring" dir="return">
1738 <desc>
1739 List of UUIDs of all machines that use the given image
1740 in the way specified by the usage parameter.
1741 The list is returned as a string containing UUIDs separated
1742 by spaces. A null string means that the image is not used.
1743 <note>
1744 When the usage type is <link to="ResourceUsage::All"/> and the image
1745 is used by the VM both permanently and temporarily, the VM's UUID
1746 will be present only once in the list.
1747 </note>
1748 </desc>
1749 </param>
1750 </method>
1751
1752 <method name="unregisterFloppyImage">
1753 <desc>
1754 Unregisters the floppy image previously registered using
1755 <link to="#registerFloppyImage()"/>.
1756 <note>
1757 The specified image must not be mounted to any of
1758 the existing virtual machines.
1759 </note>
1760 </desc>
1761 <param name="id" type="uuid" dir="in">
1762 <desc>UUID of the floppy image to unregister.</desc>
1763 </param>
1764 <param name="image" type="IFloppyImage" dir="return">
1765 <desc>Unregistered image object.</desc>
1766 </param>
1767 </method>
1768
1769 <method name="getGuestOSType">
1770 <param name="id" type="wstring" dir="in"/>
1771 <param name="type" type="IGuestOSType" dir="return"/>
1772 </method>
1773
1774 <method name="createSharedFolder">
1775 <desc>
1776 Creates a new global shared folder by associating the given logical
1777 name with the given host path, adds it to the collection of shared
1778 folders and starts sharing it. Refer to the description of
1779 <link to="ISharedFolder"/> to read more about logical names.
1780 </desc>
1781 <param name="name" type="wstring" dir="in">
1782 <desc>Unique logical name of the shared folder.</desc>
1783 </param>
1784 <param name="hostPath" type="wstring" dir="in">
1785 <desc>Full path to the shared folder in the host file system.</desc>
1786 </param>
1787 <param name="writable" type="boolean" dir="in">
1788 <desc>Whether the share is writable or readonly</desc>
1789 </param>
1790 </method>
1791
1792 <method name="removeSharedFolder">
1793 <desc>
1794 Removes the global shared folder with the given name previously
1795 created by <link to="#createSharedFolder"/> from the collection of
1796 shared folders and stops sharing it.
1797 </desc>
1798 <param name="name" type="wstring" dir="in">
1799 <desc>Logical name of the shared folder to remove.</desc>
1800 </param>
1801 </method>
1802
1803 <method name="getNextExtraDataKey">
1804 <desc>
1805 Returns the global extra data key name following the supplied key.
1806
1807 An error is returned if the supplied @a key does not exist. @c NULL is
1808 returned in @a nextKey if the supplied key is the last key. When
1809 supplying @c NULL for the @a key, the first key item is returned in @a
1810 nextKey (if there is any). @a nextValue is an optional parameter and
1811 if supplied, the next key's value is returned in it.
1812 </desc>
1813 <param name="key" type="wstring" dir="in">
1814 <desc>Name of the data key to follow.</desc>
1815 </param>
1816 <param name="nextKey" type="wstring" dir="out">
1817 <desc>Name of the next data key.</desc>
1818 </param>
1819 <param name="nextValue" type="wstring" dir="out">
1820 <desc>Value of the next data key.</desc>
1821 </param>
1822 </method>
1823
1824 <method name="getExtraData">
1825 <desc>
1826 Returns associated global extra data.
1827
1828 If the requested data @a key does not exist, this function will
1829 succeed and return @c NULL in the @a value argument.
1830 </desc>
1831 <param name="key" type="wstring" dir="in">
1832 <desc>Name of the data key to get.</desc>
1833 </param>
1834 <param name="value" type="wstring" dir="return">
1835 <desc>Value of the requested data key.</desc>
1836 </param>
1837 </method>
1838
1839 <method name="setExtraData">
1840 <desc>
1841 Sets associated global extra data.
1842
1843 If you pass @c NULL as a key @a value, the given @a key will be
1844 deleted.
1845
1846 <note>
1847 Before performing the actual data change, this method will ask all
1848 registered callbacks using the
1849 <link to="IVirtualBoxCallback::onExtraDataCanChange()"/>
1850 notification for a permission. If one of the callbacks refuses the
1851 new value, the change will not be performed.
1852 </note>
1853 <note>
1854 On success, the
1855 <link to="IVirtualBoxCallback::onExtraDataChange()"/> notification
1856 is called to inform all registered callbacks about a successful data
1857 change.
1858 </note>
1859 </desc>
1860 <param name="key" type="wstring" dir="in">
1861 <desc>Name of the data key to set.</desc>
1862 </param>
1863 <param name="value" type="wstring" dir="in">
1864 <desc>Value to assign to the key.</desc>
1865 </param>
1866 </method>
1867
1868 <method name="openSession">
1869 <desc>
1870 Opens a new direct session with the given virtual machine.
1871
1872 Within the direct session context, it is possible to change
1873 all VM settings, as well as to execute the VM in the process
1874 space of the session object. There can be only one direct
1875 session open at a time for every virtual machine. In VirtualBox
1876 terminology, the machine becomes "mutable" after a session has
1877 been opened.
1878
1879 Upon successful return, the session object can be used to
1880 get access to the machine and to the VM console.
1881
1882 Note that the "mutable" machine object, on which you may want
1883 to invoke IMachine methods to change its settings, will be a
1884 different object from the immutable IMachine objects returned
1885 by various IVirtualBox methods. To obtain a mutable
1886 IMachine object, upon which you can invoke settings methods,
1887 use the "machine" attribute of the ISession object which represents
1888 your open session.
1889
1890 In other words, to change settings on a machine, the following
1891 sequence is typically performed:
1892
1893 <ol>
1894 <li>Call this method (openSession) to have a machine locked for
1895 the current session.</li>
1896
1897 <li>Obtain a mutable IMachine object from ISession::machine.</li>
1898
1899 <li>Change the settings of the machine.</li>
1900
1901 <li>Call IMachine::saveSettings.</li>
1902
1903 <li>Close the session by calling <link to="#close" />.</li>
1904 </ol>
1905 </desc>
1906 <param name="session" type="ISession" dir="in">
1907 <desc>
1908 Session object that will represent the opened session after
1909 successful method invocation. This object must not represent
1910 the already open session.
1911 <note>
1912 This session will be automatically closed if the
1913 VirtualBox server is terminated for some reason.
1914 </note>
1915 </desc>
1916 </param>
1917 <param name="machineId" type="uuid" dir="in">
1918 <desc>ID of the virtual machine to open a session with.</desc>
1919 </param>
1920 </method>
1921
1922 <method name="openRemoteSession">
1923 <desc>
1924 Opens a new remote session with the given virtual machine.
1925
1926 Opening a remote session causes the VirtualBox server to start a new
1927 process that opens a direct session with the given VM. The remote
1928 session provides some level of control over the VM execution to the
1929 caller (using the IConsole interface); however, within the remote
1930 session context, not all VM settings are available for modification.
1931
1932 This operation can take some time (a new VM is started in a new process,
1933 for which memory and other resources need to be set up, which can take
1934 a few seconds). Because of this, a progress object is returned to allow the
1935 caller to wait for this asynchronous operation to be completed. Until then,
1936 the remote session object remains in the closed state and accessing the
1937 machine or its console through it is invalid. It is recommended to use
1938 <link to="IProgress::waitForCompletion" /> or similar calls to wait for
1939 completion.
1940
1941 Currently supported session types (values of the @a type
1942 argument) are:
1943 <ul>
1944 <li><tt>gui</tt>: VirtualBox Qt GUI session</li>
1945 <li><tt>vrdp</tt>: VirtualBox VRDP Server session</li>
1946 </ul>
1947
1948 The @a environment argument is a string containing definitions of
1949 environment variables in the following format:
1950 @code
1951 NAME[=VALUE]\n
1952 NAME[=VALUE]\n
1953 ...
1954 @endcode
1955 where <tt>\\n</tt> is the new line character. These environment
1956 variables will be appended to the environment of the VirtualBox server
1957 process. If an environment variable exists both in the server process
1958 and in this list, the value from this list takes precedence over the
1959 server's variable. If the value of the environment variable is
1960 omitted, this variable will be removed from the resulting environment.
1961 If the environment string is @c null, the server environment is
1962 inherited by the started process as is.
1963
1964 <note>
1965 It is an error to open a remote session with the machine
1966 that already has an open direct session or waits until the
1967 previous request to open the remote session is completed
1968 (see <link to="IMachine::sessionState"/>).
1969 </note>
1970
1971 <note>
1972 The opened @a session will be automatically closed when
1973 the corresponding direct session dies or gets closed.
1974 </note>
1975
1976 <see>openExistingSession</see>
1977 </desc>
1978 <param name="session" type="ISession" dir="in">
1979 <desc>
1980 Session object that will represent the opened remote session
1981 after successful method invocation (this object must not
1982 represent an already open session).
1983 </desc>
1984 </param>
1985 <param name="machineId" type="uuid" dir="in">
1986 <desc>ID of the virtual machine to open a session with.</desc>
1987 </param>
1988 <param name="type" type="wstring" dir="in">
1989 <desc>
1990 Type of the remote session (case sensitive).
1991 </desc>
1992 </param>
1993 <param name="environment" type="wstring" dir="in">
1994 <desc>
1995 Environment to pass to the opened session (may be @c null).
1996 </desc>
1997 </param>
1998 <param name="progress" type="IProgress" dir="return">
1999 <desc>Progress object to track the operation completion.</desc>
2000 </param>
2001 </method>
2002
2003 <method name="openExistingSession">
2004 <desc>
2005 Opens a new remote session with the virtual machine for
2006 which a direct session is already open.
2007
2008 The remote session provides some level of control over the VM
2009 execution (using the IConsole interface) to the caller; however,
2010 within the remote session context, not all VM settings are available
2011 for modification.
2012
2013 As opposed to <link to="#openRemoteSession()"/>, the number of
2014 remote sessions opened this way is not limited by the API
2015
2016 <note>
2017 It is an error to open a remote session with the machine that
2018 doesn't have an open direct session.
2019 </note>
2020
2021 <see>openRemoteSession</see>
2022 </desc>
2023 <param name="session" type="ISession" dir="in">
2024 <desc>
2025 Session object that will represent the open remote session
2026 after successful method invocation. This object must not
2027 represent an already open session.
2028 <note>
2029 This session will be automatically closed when the peer
2030 (direct) session dies or gets closed.
2031 </note>
2032 </desc>
2033 </param>
2034 <param name="machineId" type="uuid" dir="in">
2035 <desc>ID of the virtual machine to open a session with.</desc>
2036 </param>
2037 </method>
2038
2039 <method name="registerCallback">
2040 <desc>
2041 Registers a new global VirtualBox callback. The methods of the given
2042 callback object will be called by VirtualBox when an appropriate
2043 event occurs.
2044 </desc>
2045 <param name="callback" type="IVirtualBoxCallback" dir="in">
2046 <desc>Callback object to register.</desc>
2047 </param>
2048 </method>
2049
2050 <method name="unregisterCallback">
2051 <desc>
2052 Unregisters the previously registered global VirtualBox callback.
2053 </desc>
2054 <param name="callback" type="IVirtualBoxCallback" dir="in">
2055 <desc>Callback object to unregister.</desc>
2056 </param>
2057 </method>
2058
2059 <method name="waitForPropertyChange">
2060 <desc>
2061 Blocks the caller until any of the properties represented by the @a
2062 what argument changes the value or until the given timeout interval
2063 expires.
2064
2065 The @a what argument is a comma separated list of propertiy masks that
2066 describe properties the caller is interested in. The property mask is
2067 a string in the following format:
2068
2069 @code
2070 [[group.]subgroup.]name
2071 @endcode
2072
2073 where @c name is the property name and @c group, @c subgroup are zero
2074 or or more property group specifiers. Each element (group or name) in
2075 the property mask may be either a latin string or an asterisk symbol
2076 (@c "*") which is used to match any string for the given element. A
2077 property mask that doesn't contain asterisk symbols represents a
2078 single fully qualified property name.
2079
2080 Groups in the fully qualified property name go from more generic (the
2081 left-most part) to more specific (the right-most part). The first
2082 element is usually a name of the object the property belongs to. The
2083 second element may be either a property name, or a child object name,
2084 or an index if the preceeding element names an object which is one of
2085 many objects of the same type. This way, property names form a
2086 hierarchy of properties. Here are some examples of property names:
2087
2088 <table>
2089 <tr>
2090 <td><tt>VirtualBox.version</tt></td>
2091 <td><link to="IVirtualBox::version"/> property</td>
2092 </tr>
2093 <tr>
2094 <td><tt>Machine.&lt;UUID&gt;.name</tt></td>
2095 <td><link to="IMachine::name"/> property of the machine with the
2096 given UUID</td>
2097 </tr>
2098 </table>
2099
2100 Most property names directly correspond to the properties of objects
2101 (components) provided by the VirtualBox library and may be used to
2102 track changes to these properties. However, there may be
2103 pseudo-property names that don't correspond to any existing object's
2104 property directly, as well as there may be object properties that
2105 don't have a corresponding property name that is understood by this
2106 method, and therefore changes to such properties cannot be
2107 tracked. See individual object's property descrcriptions to get a
2108 fully qualified property name that can be used with this method (if
2109 any).
2110
2111 There is a special property mask @c "*" (i.e. a string consisting of a
2112 single asterisk symbol) that can be used to match all properties.
2113 Below are more examples of property masks:
2114
2115 <table>
2116 <tr>
2117 <td><tt>VirtualBox.*</tt></td>
2118 <td>Track all properties of the VirtualBox object</td>
2119 </tr>
2120 <tr>
2121 <td><tt>Machine.*.name</tt></td>
2122 <td>Track changes to the <link to="IMachine::name"/> property of
2123 all registered virtual machines</td>
2124 </tr>
2125 </table>
2126
2127 </desc>
2128 <param name="what" type="wstring" dir="in">
2129 <desc>Comma separated list of property masks.</desc>
2130 </param>
2131 <param name="timeout" type="unsigned long" dir="in">
2132 <desc>
2133 Wait timeout in milliseconds.
2134 Specify -1 for an indefinite wait.
2135 </desc>
2136 </param>
2137 <param name="changed" type="wstring" dir="out">
2138 <desc>
2139 Comma separated list of properties that have been changed and caused
2140 this method to return to the caller.
2141 </desc>
2142 </param>
2143 <param name="values" type="wstring" dir="out">
2144 <desc>Reserved, not currently used.</desc>
2145 </param>
2146 </method>
2147
2148 <method name="saveSettings">
2149 <desc>
2150 Saves the global settings to the global settings file
2151 (<link to="#settingsFilePath"/>).
2152
2153 This method is only useful for explicitly saving the global settings
2154 file after it has been auto-converted from the old format to the most
2155 recent format (see <link to="#settingsFileVersion"/> for details).
2156 Normally, the global settings file is implicitly saved when a global
2157 setting is changed.
2158 </desc>
2159 </method>
2160
2161 <method name="saveSettingsWithBackup">
2162 <desc>
2163 Creates a backup copy of the global settings file
2164 (<link to="#settingsFilePath"/>) in case of auto-conversion, and then
2165 calls <link to="#saveSettings()"/>.
2166
2167 Note that the backup copy is created <b>only</b> if the settings file
2168 auto-conversion took place (see <link to="#settingsFileVersion"/> for
2169 details). Otherwise, this call is fully equivalent to
2170 <link to="#saveSettings()"/> and no backup copying is done.
2171
2172 The backup copy is created in the same directory where the original
2173 settings file is located. It is given the following file name:
2174 <pre>
2175 original.xml.x.y-platform.bak
2176 </pre>
2177 where <tt>original.xml</tt> is the original settings file name
2178 (excluding path), and <tt>x.y-platform</tt> is the version of the old
2179 format of the settings file (before auto-conversion).
2180
2181 If the given backup file already exists, this method will try to add the
2182 <tt>.N</tt> suffix to the backup file name (where <tt>N</tt> counts from
2183 0 to 9) and copy it again until it succeeds. If all suffixes are
2184 occupied, or if any other copy error occurs, this method will return a
2185 failure.
2186
2187 If the copy operation succeeds, the @a bakFileName return argument will
2188 receive a full path to the created backup file (for informational
2189 purposes). Note that this will happen even if the subsequent
2190 <link to="#saveSettings()"/> call performed by this method after the
2191 copy operation, fails.
2192
2193 <note>
2194 The VirtualBox API never calls this method. It is intended purely for
2195 the purposes of creating backup copies of the settings files by
2196 front-ends before saving the results of the automatically performed
2197 settings conversion to disk.
2198 </note>
2199
2200 <see>settingsFileVersion</see>
2201 </desc>
2202 <param name="bakFileName" type="wstring" dir="return">
2203 <desc>Full path to the created backup copy.</desc>
2204 </param>
2205 </method>
2206
2207 </interface>
2208
2209 <!--
2210 // IMachine
2211 /////////////////////////////////////////////////////////////////////////
2212 -->
2213
2214 <enumerator
2215 name="IMachineEnumerator" type="IMachine"
2216 uuid="1b554149-be0a-4465-9252-9ff8f420af55"
2217 />
2218
2219 <collection
2220 name="IMachineCollection" type="IMachine" enumerator="IMachineEnumerator"
2221 uuid="FD443EC1-3007-4F5B-9282-D72760A66916"
2222 readonly="yes"
2223 />
2224
2225 <interface
2226 name="IInternalMachineControl" extends="$unknown"
2227 uuid="de04566a-7125-444b-949e-34e9f3ec3676"
2228 internal="yes"
2229 wsmap="suppress"
2230 >
2231 <method name="updateState">
2232 <desc>
2233 Updates the VM state.
2234 <note>
2235 This operation will also update the settings file with
2236 the correct information about the saved state file
2237 and delete this file from disk when appropriate.
2238 </note>
2239 </desc>
2240 <param name="state" type="MachineState" dir="in"/>
2241 </method>
2242
2243 <method name="getIPCId">
2244 <param name="id" type="wstring" dir="return"/>
2245 </method>
2246
2247 <method name="runUSBDeviceFilters">
2248 <desc>
2249 Asks the server to run USB devices filters of the associated
2250 machine against the given USB device and tell if there is
2251 a match.
2252 <note>
2253 Intended to be used only for remote USB devices. Local
2254 ones don't require to call this method (this is done
2255 implicitly by the Host and USBProxyService).
2256 </note>
2257 </desc>
2258 <param name="device" type="IUSBDevice" dir="in"/>
2259 <param name="matched" type="boolean" dir="out"/>
2260 <param name="maskedInterfaces" type="unsigned long" dir="out"/>
2261 </method>
2262
2263 <method name="captureUSBDevice">
2264 <desc>
2265 Requests a capture of the given host USB device.
2266 When the request is completed, the VM process will
2267 get a <link to="IInternalSessionControl::onUSBDeviceAttach"/>
2268 notification.
2269 </desc>
2270 <param name="id" type="uuid" dir="in"/>
2271 </method>
2272
2273 <method name="detachUSBDevice">
2274 <desc>
2275 Notification that a VM is going to detach (done = false) or has
2276 already detached (done = true) the given USB device.
2277 When the done = true request is completed, the VM process will
2278 get a <link to="IInternalSessionControl::onUSBDeviceDetach"/>
2279 notification.
2280 <note>
2281 In the done = true case, the server must run its own filters
2282 and filters of all VMs but this one on the detached device
2283 as if it were just attached to the host computer.
2284 </note>
2285 </desc>
2286 <param name="id" type="uuid" dir="in"/>
2287 <param name="done" type="boolean" dir="in"/>
2288 </method>
2289
2290 <method name="autoCaptureUSBDevices">
2291 <desc>
2292 Requests a capture all matching USB devices attached to the host.
2293 When the request is completed, the VM process will
2294 get a <link to="IInternalSessionControl::onUSBDeviceAttach"/>
2295 notification per every captured device.
2296 </desc>
2297 </method>
2298
2299 <method name="detachAllUSBDevices">
2300 <desc>
2301 Notification that a VM that is being powered down. The done
2302 parameter indicates whether which stage of the power down
2303 we're at. When done = false the VM is announcing its
2304 intentions, while when done = true the VM is reporting
2305 what it has done.
2306 <note>
2307 In the done = true case, the server must run its own filters
2308 and filters of all VMs but this one on all detach devices as
2309 if they were just attached to the host computer.
2310 </note>
2311 </desc>
2312 <param name="done" type="boolean" dir="in"/>
2313 </method>
2314
2315 <method name="onSessionEnd">
2316 <desc>
2317 Triggered by the given session object when the session is about
2318 to close normally.
2319 </desc>
2320 <param name="session" type="ISession" dir="in">
2321 <desc>Session that is being closed</desc>
2322 </param>
2323 <param name="progress" type="IProgress" dir="return">
2324 <desc>
2325 Used to wait until the corresponding machine is actually
2326 deassociated from the given session on the server.
2327 Returned only when this session is a direct one.
2328 </desc>
2329 </param>
2330 </method>
2331
2332 <method name="beginSavingState">
2333 <desc>
2334 Called by the VM process to inform the server it wants to
2335 save the current state and stop the VM execution.
2336 </desc>
2337 <param name="progress" type="IProgress" dir="in">
2338 <desc>
2339 Progress object created by the VM process to wait until
2340 the state is saved.
2341 </desc>
2342 </param>
2343 <param name="stateFilePath" type="wstring" dir="out">
2344 <desc>
2345 File path the VM process must save the execution state to.
2346 </desc>
2347 </param>
2348 </method>
2349
2350 <method name="endSavingState">
2351 <desc>
2352 Called by the VM process to inform the server that saving
2353 the state previously requested by #beginSavingState is either
2354 successfully finished or there was a failure.
2355 </desc>
2356
2357 <param name="success" type="boolean" dir="in">
2358 <desc><tt>true</tt> to indicate success and <tt>false</tt> otherwise</desc>
2359 </param>
2360 </method>
2361
2362 <method name="adoptSavedState">
2363 <desc>
2364 Gets called by IConsole::adoptSavedState.
2365 </desc>
2366 <param name="savedStateFile" type="wstring" dir="in">
2367 <desc>Path to the saved state file to adopt.</desc>
2368 </param>
2369 </method>
2370
2371 <method name="beginTakingSnapshot">
2372 <desc>
2373 Called by the VM process to inform the server it wants to
2374 take a snapshot.
2375 </desc>
2376 <param name="initiator" type="IConsole" dir="in">
2377 <desc>The console object that initiated this call.</desc>
2378 </param>
2379 <param name="name" type="wstring" dir="in">
2380 <desc>Snapshot name</desc>
2381 </param>
2382 <param name="description" type="wstring" dir="in">
2383 <desc>Snapshot description</desc>
2384 </param>
2385 <param name="progress" type="IProgress" dir="in">
2386 <desc>
2387 Progress object created by the VM process to wait until
2388 the state is saved (only for online snapshots).
2389 </desc>
2390 </param>
2391 <param name="stateFilePath" type="wstring" dir="out">
2392 <desc>
2393 File path the VM process must save the execution state to.
2394 </desc>
2395 </param>
2396 <param name="serverProgress" type="IProgress" dir="out">
2397 <desc>
2398 Progress object created by the server process to wait until
2399 the snapshot is taken (VDI diff creation, etc.).
2400 </desc>
2401 </param>
2402 </method>
2403
2404 <method name="endTakingSnapshot">
2405 <desc>
2406 Called by the VM process to inform the server that the snapshot
2407 previously requested by #beginTakingSnapshot is either
2408 successfully taken or there was a failure.
2409 </desc>
2410
2411 <param name="success" type="boolean" dir="in">
2412 <desc><tt>true</tt> to indicate success and <tt>false</tt> otherwise</desc>
2413 </param>
2414 </method>
2415
2416 <method name="discardSnapshot">
2417 <desc>
2418 Gets called by IConsole::discardSnapshot.
2419 </desc>
2420 <param name="initiator" type="IConsole" dir="in">
2421 <desc>The console object that initiated this call.</desc>
2422 </param>
2423 <param name="id" type="uuid" dir="in">
2424 <desc>UUID of the snapshot to discard.</desc>
2425 </param>
2426 <param name="machineState" type="MachineState" dir="out">
2427 <desc>New machine state after this operation is started.</desc>
2428 </param>
2429 <param name="progress" type="IProgress" dir="return">
2430 <desc>Progress object to track the operation completion.</desc>
2431 </param>
2432 </method>
2433
2434 <method name="discardCurrentState">
2435 <desc>
2436 Gets called by IConsole::discardCurrentState.
2437 </desc>
2438 <param name="initiator" type="IConsole" dir="in">
2439 <desc>The console object that initiated this call.</desc>
2440 </param>
2441 <param name="machineState" type="MachineState" dir="out">
2442 <desc>New machine state after this operation is started.</desc>
2443 </param>
2444 <param name="progress" type="IProgress" dir="return">
2445 <desc>Progress object to track the operation completion.</desc>
2446 </param>
2447 </method>
2448
2449 <method name="discardCurrentSnapshotAndState">
2450 <desc>
2451 Gets called by IConsole::discardCurrentSnapshotAndState.
2452 </desc>
2453 <param name="initiator" type="IConsole" dir="in">
2454 <desc>The console object that initiated this call.</desc>
2455 </param>
2456 <param name="machineState" type="MachineState" dir="out">
2457 <desc>New machine state after this operation is started.</desc>
2458 </param>
2459 <param name="progress" type="IProgress" dir="return">
2460 <desc>Progress object to track the operation completion.</desc>
2461 </param>
2462 </method>
2463
2464 <method name="pullGuestProperties">
2465 <desc>
2466 Get the list of the guest properties matching a set of patterns along
2467 with their values, timestamps and flags and give responsibility for
2468 managing properties to the console.
2469 </desc>
2470 <param name="name" type="wstring" dir="out" safearray="yes">
2471 <desc>
2472 The names of the properties returned.
2473 </desc>
2474 </param>
2475 <param name="value" type="wstring" dir="out" safearray="yes">
2476 <desc>
2477 The values of the properties returned. The array entries match the
2478 corresponding entries in the @a name array.
2479 </desc>
2480 </param>
2481 <param name="timestamp" type="unsigned long long" dir="out" safearray="yes">
2482 <desc>
2483 The timestamps of the properties returned. The array entries match
2484 the corresponding entries in the @a name array.
2485 </desc>
2486 </param>
2487 <param name="flags" type="wstring" dir="out" safearray="yes">
2488 <desc>
2489 The flags of the properties returned. The array entries match the
2490 corresponding entries in the @a name array.
2491 </desc>
2492 </param>
2493 </method>
2494
2495 <method name="pushGuestProperties">
2496 <desc>
2497 Set the list of the guest properties matching a set of patterns along
2498 with their values, timestamps and flags and return responsibility for
2499 managing properties to IMachine.
2500 </desc>
2501 <param name="name" type="wstring" dir="in" safearray="yes">
2502 <desc>
2503 The names of the properties returned.
2504 </desc>
2505 </param>
2506 <param name="value" type="wstring" dir="in" safearray="yes">
2507 <desc>
2508 The values of the properties returned. The array entries match the
2509 corresponding entries in the @a name array.
2510 </desc>
2511 </param>
2512 <param name="timestamp" type="unsigned long long" dir="in" safearray="yes">
2513 <desc>
2514 The timestamps of the properties returned. The array entries match
2515 the corresponding entries in the @a name array.
2516 </desc>
2517 </param>
2518 <param name="flags" type="wstring" dir="in" safearray="yes">
2519 <desc>
2520 The flags of the properties returned. The array entries match the
2521 corresponding entries in the @a name array.
2522 </desc>
2523 </param>
2524 </method>
2525 </interface>
2526
2527 <interface
2528 name="IBIOSSettings" extends="$unknown"
2529 uuid="38b54279-dc35-4f5e-a431-835b867c6b5e"
2530 wsmap="struct"
2531 >
2532 <desc>
2533 The IBIOSSettings interface represents BIOS settings of the virtual
2534 machine. This is used only in the <link to="IMachine::BIOSSettings" /> attribute.
2535
2536 <note>With the COM API, this is an interface like all the others. With the webservice,
2537 this is mapped to a structure, so querying the attribute will not return an object,
2538 but a complete structure.</note>
2539 </desc>
2540 <attribute name="logoFadeIn" type="boolean">
2541 <desc>Fade in flag for BIOS logo animation.</desc>
2542 </attribute>
2543
2544 <attribute name="logoFadeOut" type="boolean">
2545 <desc>Fade out flag for BIOS logo animation.</desc>
2546 </attribute>
2547
2548 <attribute name="logoDisplayTime" type="unsigned long">
2549 <desc>BIOS logo display time in milliseconds (0 = default).</desc>
2550 </attribute>
2551
2552 <attribute name="logoImagePath" type="wstring">
2553 <desc>Local file system path for external BIOS image.</desc>
2554 </attribute>
2555
2556 <attribute name="bootMenuMode" type="BIOSBootMenuMode">
2557 <desc>Mode of the BIOS boot device menu.</desc>
2558 </attribute>
2559
2560 <attribute name="ACPIEnabled" type="boolean">
2561 <desc>ACPI support flag.</desc>
2562 </attribute>
2563
2564 <attribute name="IOAPICEnabled" type="boolean">
2565 <desc>
2566 IO APIC support flag. If set, VirtualBox will provide an IO APIC
2567 and support IRQs above 15.
2568 </desc>
2569 </attribute>
2570
2571 <attribute name="timeOffset" type="long long">
2572 <desc>
2573 Offset in milliseconds from the host system time. This allows for
2574 guests running with a different system date/time than the host.
2575 It is equivalent to setting the system date/time in the BIOS other
2576 than it's not an absolute value but a relative one. Guest Additions
2577 time synchronization also honors this offset.
2578 </desc>
2579 </attribute>
2580
2581 <attribute name="PXEDebugEnabled" type="boolean">
2582 <desc>
2583 PXE debug logging flag. If set, VirtualBox will write extensive
2584 PXE trace information to the release log.
2585 </desc>
2586 </attribute>
2587
2588 <attribute name="IDEControllerType" type="IDEControllerType">
2589 <desc>
2590 Type of the virtual IDE controller. Depending on this value,
2591 VirtualBox will provide different virtual IDE hardware
2592 devices to the guest.
2593 </desc>
2594 </attribute>
2595
2596 </interface>
2597
2598 <interface
2599 name="IMachine" extends="$unknown"
2600 uuid="1e509de4-d96c-4f44-8b94-860194f710ac"
2601 wsmap="managed"
2602 >
2603 <desc>
2604 The IMachine interface represents a virtual machine, or guest, created
2605 in VirtualBox.
2606
2607 This interface is used in two contexts. First of all, a collection of
2608 objects implementing this interface is stored in the
2609 <link to="IVirtualBox::machines"/> attribute which lists all the virtual
2610 machines that are currently registered with this VirtualBox
2611 installation. Also, once a session has been opened for the given virtual
2612 machine (e.g. the virtual machine is running), the machine object
2613 associated with the open session can be queried from the session object;
2614 see <link to="ISession"/> for details.
2615
2616 The main role of this interface is to expose the settings of the virtual
2617 machine and provide methods to change various aspects of the virtual
2618 machine's configuration. For machine objects stored in the
2619 <link to="IVirtualBox::machines"/> collection, all attributes are
2620 read-only unless explicitely stated otherwise in individual attribute
2621 and method descriptions. In order to change a machine setting, a session
2622 for this machine must be opened using one of
2623 <link to="IVirtualBox::openSession"/>,
2624 <link to="IVirtualBox::openRemoteSession"/> or
2625 <link to="IVirtualBox::openExistingSession"/> methdods. After the
2626 session has been successfully opened, a mutable machine object needs to
2627 be queried from the session object and then the desired settings changes
2628 can be applied to the returned object using IMachine attributes and
2629 methods. See the ISession interface description for more information
2630 about sessions.
2631
2632 Note that the IMachine interface does not provide methods to control
2633 virtual machine execution (such as start the machine, or power it
2634 down) -- these methods are grouped in a separate IConsole
2635 interface. Refer to the IConsole interface description to get more
2636 information about this topic.
2637
2638 <see>ISession, IConsole</see>
2639 </desc>
2640
2641 <attribute name="parent" type="IVirtualBox" readonly="yes">
2642 <desc>Associated parent obect.</desc>
2643 </attribute>
2644
2645 <attribute name="accessible" type="boolean" readonly="yes">
2646 <desc>
2647 Whether this virtual machine is currently accessible or not.
2648
2649 The machine is considered to be inaccessible when:
2650 <ul>
2651 <li>It is a registered virtual machine, and
2652 </li>
2653 <li>Its settings file is inaccessible (for example, it is
2654 located on a network share that is not accessible during
2655 VirtualBox startup, or becomes inaccessible later, or if
2656 the settings file can be read but is invalid).
2657 </li>
2658 </ul>
2659
2660 Otherwise, the value of this property is always <tt>true</tt>.
2661
2662 Every time this property is read, the accessibility state of
2663 this machine is re-evaluated. If the returned value is |false|,
2664 the <link to="#accessError"/> property may be used to get the
2665 detailed error information describing the reason of
2666 inaccessibility.
2667
2668 When the machine is inaccessible, only the following properties
2669 can be used on it:
2670 <ul>
2671 <li><link to="#parent"/></li>
2672 <li><link to="#id"/></li>
2673 <li><link to="#settingsFilePath"/></li>
2674 <li><link to="#accessible"/></li>
2675 <li><link to="#accessError"/></li>
2676 </ul>
2677
2678 An attempt to access any other property or method will return
2679 an error.
2680
2681 The only possible action you can perform on an inaccessible
2682 machine is to unregister it using the
2683 <link to="IVirtualBox::unregisterMachine"/> call (or, to check
2684 for the accessibility state once more by querying this
2685 property).
2686
2687 <note>
2688 In the current implementation, once this property returns
2689 <tt>true</tt>, the machine will never become inaccessible
2690 later, even if its settings file cannot be successfully
2691 read/written any more (at least, until the VirtualBox
2692 server is restarted). This limitation may be removed in
2693 future releases.
2694 </note>
2695 </desc>
2696 </attribute>
2697
2698 <attribute name="accessError" type="IVirtualBoxErrorInfo" readonly="yes">
2699 <desc>
2700 Error information describing the reason of machine
2701 inaccessibility.
2702
2703 Reading this property is only valid after the last call to
2704 <link to="#accessible"/> returned <tt>false</tt> (i.e. the
2705 machine is currently unaccessible). Otherwise, a null
2706 IVirtualBoxErrorInfo object will be returned.
2707 </desc>
2708 </attribute>
2709
2710 <attribute name="name" type="wstring">
2711 <desc>
2712 Name of the virtual machine.
2713
2714 Besides being used for human-readable identification purposes
2715 everywhere in VirtualBox, the virtual machine name is also used
2716 as a name of the machine's settings file and as a name of the
2717 subdirectory this settings file resides in. Thus, every time you
2718 change the value of this property, the settings file will be
2719 renamed once you call <link to="#saveSettings()"/> to confirm the
2720 change. The containing subdirectory will be also renamed, but
2721 only if it has exactly the same name as the settings file
2722 itself prior to changing this property (for backward compatibility
2723 with previous API releases). The above implies the following
2724 limitations:
2725 <ul>
2726 <li>The machine name cannot be empty.</li>
2727 <li>The machine name can contain only characters that are valid
2728 file name characters according to the rules of the file
2729 system used to store VirtualBox configuration.</li>
2730 <li>You cannot have two or more machines with the same name
2731 if they use the same subdirectory for storing the machine
2732 settings files.</li>
2733 <li>You cannot change the name of the machine if it is running,
2734 or if any file in the directory containing the settings file
2735 is being used by another running machine or by any other
2736 process in the host operating system at a time when
2737 <link to="#saveSettings()"/> is called.
2738 </li>
2739 </ul>
2740 If any of the above limitations are hit, <link to="#saveSettings()"/>
2741 will return an appropriate error message explaining the exact
2742 reason and the changes you made to this machine will not be
2743 saved.
2744 <note>
2745 For "legacy" machines created using the
2746 <link to="IVirtualBox::createLegacyMachine()"/> call,
2747 the above naming limitations do not apply because the
2748 machine name does not affect the settings file name.
2749 The settings file name remains the same as it was specified
2750 during machine creation and never changes.
2751 </note>
2752 </desc>
2753 </attribute>
2754
2755 <attribute name="description" type="wstring">
2756 <desc>
2757 Description of the virtual machine.
2758
2759 The description attribute can contain any text and is
2760 typically used to describe the hardware and software
2761 configuration of the virtual machine in detail (i.e. network
2762 settings, versions of the installed software and so on).
2763 </desc>
2764 </attribute>
2765
2766 <attribute name="id" type="uuid" readonly="yes">
2767 <desc>UUID of the virtual machine.</desc>
2768 </attribute>
2769
2770 <attribute name="OSTypeId" type="wstring">
2771 <desc>
2772 User-defined identifier of the Guest OS type.
2773 You may use <link to="IVirtualBox::getGuestOSType"/> to obtain
2774 an IGuestOSType object representing details about the given
2775 Guest OS type.
2776 <note>
2777 This value may differ from the value returned by
2778 <link to="IGuest::OSTypeId"/> if Guest Additions are
2779 installed to the guest OS.
2780 </note>
2781 </desc>
2782 </attribute>
2783
2784 <attribute name="memorySize" type="unsigned long">
2785 <desc>System memory size in megabytes.</desc>
2786 </attribute>
2787
2788 <attribute name="memoryBalloonSize" type="unsigned long">
2789 <desc>Initial memory balloon size in megabytes.</desc>
2790 </attribute>
2791
2792 <attribute name="statisticsUpdateInterval" type="unsigned long">
2793 <desc>Initial interval to update guest statistics in seconds.</desc>
2794 </attribute>
2795
2796 <attribute name="VRAMSize" type="unsigned long">
2797 <desc>Video memory size in megabytes.</desc>
2798 </attribute>
2799
2800 <attribute name="MonitorCount" type="unsigned long">
2801 <desc>
2802 Number of virtual monitors.
2803 <note>
2804 Only effective on Windows XP and later guests with
2805 Guest Additions installed.
2806 </note>
2807 </desc>
2808 </attribute>
2809
2810 <attribute name="BIOSSettings" type="IBIOSSettings" readonly="yes">
2811 <desc>Object containing all BIOS settings.</desc>
2812 </attribute>
2813
2814 <attribute name="HWVirtExEnabled" type="TSBool">
2815 <desc>
2816 This setting determines whether VirtualBox will try to make use of
2817 the host CPU's hardware virtualization extensions such as Intel VT-x
2818 and AMD-V. Note that in case such extensions are not available,
2819 they will not be used.
2820 </desc>
2821 </attribute>
2822
2823 <attribute name="HWVirtExNestedPagingEnabled" type="boolean" default="true">
2824 <desc>
2825 This setting determines whether VirtualBox will try to make use of
2826 the nested paging extension of Intel VT-x and AMD-V. Note that in case
2827 such extensions are not available, they will not be used.
2828 </desc>
2829 </attribute>
2830
2831 <attribute name="PAEEnabled" type="boolean" default="false">
2832 <desc>
2833 This setting determines whether VirtualBox will expose the Physical Address
2834 Extension (PAE) feature of the host CPU to the guest. Note that in case PAE
2835 is not available, it will not be reported.
2836 </desc>
2837 </attribute>
2838
2839 <attribute name="snapshotFolder" type="wstring">
2840 <desc>
2841 Full path to the directory used to store snapshot data
2842 (difrerencing hard disks and saved state files) of this machine.
2843
2844 The initial value of this property is
2845 <tt>&lt;</tt><link to="#settingsFilePath">
2846 path_to_settings_file</link><tt>&gt;/&lt;</tt>
2847 <link to="#id">machine_uuid</link>
2848 <tt>&gt;</tt>.
2849
2850 Currently, it is an error to try to change this property on
2851 a machine that has snapshots (because this would require to
2852 move possibly large files to a different location).
2853 A separate method will be available for this purpose later.
2854
2855 <note>
2856 Setting this property to <tt>null</tt> will restore the
2857 initial value.
2858 </note>
2859 <note>
2860 When setting this property, the specified path can be
2861 absolute (full path) or relative to the directory where the
2862 <link to="#settingsFilePath">machine settings file</link>
2863 is located. When reading this property, a full path is
2864 always returned.
2865 </note>
2866 <note>
2867 The specified path may not exist, it will be created
2868 when necessary.
2869 </note>
2870 </desc>
2871 </attribute>
2872
2873 <attribute name="VRDPServer" type="IVRDPServer" readonly="yes">
2874 <desc>VRDP server object.</desc>
2875 </attribute>
2876
2877 <attribute name="hardDiskAttachments" type="IHardDiskAttachmentCollection" readonly="yes">
2878 <desc>Collection of hard disks attached to the machine.</desc>
2879 </attribute>
2880
2881 <attribute name="DVDDrive" type="IDVDDrive" readonly="yes">
2882 <desc>Associated DVD drive object.</desc>
2883 </attribute>
2884
2885 <attribute name="FloppyDrive" type="IFloppyDrive" readonly="yes">
2886 <desc>Associated floppy drive object.</desc>
2887 </attribute>
2888
2889 <attribute name="USBController" type="IUSBController" readonly="yes">
2890 <desc>
2891 Associated USB controller object.
2892
2893 <note>
2894 This method may set a @ref com_warnings "warning result code".
2895 </note>
2896 <note>
2897 If USB functionality is not avaliable in the given edition of
2898 VirtualBox, this method will set the result code to @c E_NOTIMPL.
2899 </note>
2900 </desc>
2901 </attribute>
2902
2903 <attribute name="audioAdapter" type="IAudioAdapter" readonly="yes">
2904 <desc>Associated audio adapter, always present.</desc>
2905 </attribute>
2906
2907 <attribute name="SATAController" type="ISATAController" readonly="yes">
2908 <desc>
2909 Associated SATA controller object.
2910 </desc>
2911 </attribute>
2912
2913 <attribute name="settingsFilePath" type="wstring" readonly="yes">
2914 <desc>
2915 Full name of the file containing machine settings data.
2916 </desc>
2917 </attribute>
2918
2919 <attribute name="settingsFileVersion" type="wstring" readonly="yes">
2920 <desc>
2921 Current version of the format of the settings file of this machine
2922 (<link to="#settingsFilePath"/>).
2923
2924 The version string has the following format:
2925 <pre>
2926 x.y-platform
2927 </pre>
2928 where <tt>x</tt> and <tt>y</tt> are the major and the minor format
2929 versions, and <tt>platform</tt> is the platform identifier.
2930
2931 The current version usually matches the value of the
2932 <link to="IVirtualBox::settingsFormatVersion"/> attribute unless the
2933 settings file was created by an older version of VirtualBox and there
2934 was a change of the settings file format since then.
2935
2936 Note that VirtualBox automatically converts settings files from older
2937 versions to the most recent version when reading them (usually at
2938 VirtualBox startup) but it doesn't save the changes back until
2939 you call a method that implicitly saves settings (such as
2940 <link to="#setExtraData()"/>) or call <link to="#saveSettings()"/>
2941 explicitly. Therefore, if the value of this attribute differs from the
2942 value of <link to="IVirtualBox::settingsFormatVersion"/>, then it
2943 means that the settings file was converted but the result of the
2944 conversion is not yet saved to disk.
2945
2946 The above feature may be used by interactive front-ends to inform users
2947 about the settings file format change and offer them to explicitly save
2948 all converted settings files (the global and VM-specific ones),
2949 optionally create bacup copies of the old settings files before saving,
2950 etc.
2951
2952 <see>IVirtualBox::settingsFormatVersion, saveSettingsWithBackup()</see>
2953 </desc>
2954 </attribute>
2955
2956 <attribute name="settingsModified" type="boolean" readonly="yes">
2957 <desc>
2958 Whether the settings of this machine have been modified
2959 (but neither yet saved nor discarded).
2960 <note>
2961 Reading this property is only valid on instances returned
2962 by <link to="ISession::machine"/> and on new machines
2963 created by <link to="IVirtualBox::createMachine"/> or opened
2964 by <link to="IVirtualBox::openMachine"/> but not
2965 yet registered, or on unregistered machines after calling
2966 <link to="IVirtualBox::unregisterMachine"/>. For all other
2967 cases, the settigs can never be modified.
2968 </note>
2969 <note>
2970 For newly created unregistered machines, the value of this
2971 property is always TRUE until <link to="#saveSettings()"/>
2972 is called (no matter if any machine settings have been
2973 changed after the creation or not). For opened machines
2974 the value is set to FALSE (and then follows to normal rules).
2975 </note>
2976 </desc>
2977 </attribute>
2978
2979 <attribute name="sessionState" type="SessionState" readonly="yes">
2980 <desc>Current session state for this machine.</desc>
2981 </attribute>
2982
2983 <attribute name="sessionType" type="wstring" readonly="yes">
2984 <desc>
2985 Type of the session. If <link to="#sessionState"/> is
2986 SessionSpawning or SessionOpen, this attribute contains the
2987 same value as passed to the
2988 <link to="IVirtualBox::openRemoteSession()"/> method in the @a
2989 type parameter. If the session was opened directly using
2990 <link to="IVirtualBox::openSession()"/>, or if
2991 <link to="#sessionState"/> is SessionClosed, the value of this
2992 attribute is @c null.
2993 </desc>
2994 </attribute>
2995
2996 <attribute name="sessionPid" type="unsigned long" readonly="yes">
2997 <desc>
2998 Identifier of the session process. This attribute contains the
2999 platform-dependent identifier of the process that has opened a
3000 direct session for this machine using the
3001 <link to="IVirtualBox::openSession()"/> call. The returned value
3002 is only valid if <link to="#sessionState"/> is SessionOpen or
3003 SessionClosing (i.e. a session is currently open or being
3004 closed) by the time this property is read.
3005 </desc>
3006 </attribute>
3007
3008 <attribute name="state" type="MachineState" readonly="yes">
3009 <desc>Current execution state of this machine.</desc>
3010 </attribute>
3011
3012 <attribute name="lastStateChange" type="long long" readonly="yes">
3013 <desc>
3014 Time stamp of the last execution state change,
3015 in milliseconds since 1970-01-01 UTC.
3016 </desc>
3017 </attribute>
3018
3019 <attribute name="stateFilePath" type="wstring" readonly="yes">
3020 <desc>
3021 Full path to the file that stores the execution state of
3022 the machine when it is in the <link to="MachineState::Saved"/>
3023 state.
3024 <note>
3025 When the machine is not in the Saved state, this attribute
3026 <tt>null</tt>.
3027 </note>
3028 </desc>
3029 </attribute>
3030
3031 <attribute name="logFolder" type="wstring" readonly="yes">
3032 <desc>
3033 Full path to the folder that stores a set of rotated log files
3034 recorded during machine execution. The most recent log file is
3035 named <tt>VBox.log</tt>, the previous log file is
3036 named <tt>VBox.log.1</tt> and so on (upto <tt>VBox.log.3</tt>
3037 in the current version).
3038 </desc>
3039 </attribute>
3040
3041 <attribute name="currentSnapshot" type="ISnapshot" readonly="yes">
3042 <desc>
3043 Current snapshot of this machine.
3044 <note>
3045 A <tt>null</tt> object is returned if the machine doesn't
3046 have snapshots.
3047 </note>
3048 <see><link to="ISnapshot"/></see>
3049 </desc>
3050 </attribute>
3051
3052 <attribute name="snapshotCount" type="unsigned long" readonly="yes">
3053 <desc>
3054 Number of snapshots taken on this machine. Zero means the
3055 machine doesn't have any snapshots.
3056 </desc>
3057 </attribute>
3058
3059 <attribute name="currentStateModified" type="boolean" readonly="yes">
3060 <desc>
3061 Returns <tt>true</tt> if the current state of the machine is not
3062 identical to the state stored in the current snapshot.
3063
3064 The current state is identical to the current snapshot right
3065 after one of the following calls are made:
3066 <ul>
3067 <li><link to="IConsole::discardCurrentState"/> or
3068 <link to="IConsole::discardCurrentSnapshotAndState"/>
3069 </li>
3070 <li><link to="IConsole::takeSnapshot"/> (issued on a
3071 powered off or saved machine, for which
3072 <link to="#settingsModified"/> returns <tt>false</tt>)
3073 </li>
3074 <li><link to="IMachine::setCurrentSnapshot"/>
3075 </li>
3076 </ul>
3077
3078 The current state remains identical until one of the following
3079 happens:
3080 <ul>
3081 <li>settings of the machine are changed</li>
3082 <li>the saved state is discarded</li>
3083 <li>the current snapshot is discarded</li>
3084 <li>an attempt to execute the machine is made</li>
3085 </ul>
3086
3087 <note>
3088 For machines that don't have snapshots, this property is
3089 always <tt>false</tt>.
3090 </note>
3091 </desc>
3092 </attribute>
3093
3094 <attribute name="sharedFolders" type="ISharedFolderCollection" readonly="yes">
3095 <desc>
3096 Collection of shared folders for this machine (permanent shared
3097 folders). These folders are shared automatically at machine startup
3098 and available only to the guest OS installed within this machine.
3099
3100 New shared folders are added to the collection using
3101 <link to="#createSharedFolder"/>. Existing shared folders can be
3102 removed using <link to="#removeSharedFolder"/>.
3103 </desc>
3104 </attribute>
3105
3106 <attribute name="clipboardMode" type="ClipboardMode">
3107 <desc>
3108 Synchronization mode between the host OS clipboard
3109 and the guest OS clipboard.
3110 </desc>
3111 </attribute>
3112
3113 <method name="setBootOrder">
3114 <desc>
3115 Puts the given device to the specified position in
3116 the boot order.
3117
3118 To indicate that no device is associated with the given position,
3119 <link to="DeviceType::Null"/> should be used.
3120
3121 @todo setHardDiskBootOrder(), setNetworkBootOrder()
3122 </desc>
3123 <param name="position" type="unsigned long" dir="in">
3124 <desc>
3125 Position in the boot order (<tt>1</tt> to the total number of
3126 devices the machine can boot from, as returned by
3127 <link to="ISystemProperties::maxBootPosition"/>).
3128 </desc>
3129 </param>
3130 <param name="device" type="DeviceType" dir="in">
3131 <desc>
3132 The type of the device used to boot at the given position.
3133 </desc>
3134 </param>
3135 </method>
3136
3137 <method name="getBootOrder" const="yes">
3138 <desc>
3139 Returns the device type that occupies the specified
3140 position in the boot order.
3141
3142 @todo [remove?]
3143 If the machine can have more than one device of the returned type
3144 (such as hard disks), then a separate method should be used to
3145 retrieve the individual device that occupies the given position.
3146
3147 If here are no devices at the given position, then
3148 <link to="DeviceType::Null"/> is returned.
3149
3150 @todo getHardDiskBootOrder(), getNetworkBootOrder()
3151 </desc>
3152 <param name="order" type="unsigned long" dir="in">
3153 <desc>
3154 Position in the boot order (<tt>1</tt> to the total number of
3155 devices the machine can boot from, as returned by
3156 <link to="ISystemProperties::maxBootPosition"/>).
3157 </desc>
3158 </param>
3159 <param name="device" type="DeviceType" dir="return">
3160 <desc>
3161 Device at the given position.
3162 </desc>
3163 </param>
3164 </method>
3165
3166 <method name="attachHardDisk">
3167 <desc>
3168
3169 Attaches a virtual hard disk identified by the given UUID to the
3170 given device slot of the given channel on the given bus. The
3171 specified device slot must not have another disk attached and the
3172 given hard disk must not be already attached to this machine.
3173
3174 See <link to="IHardDisk"/> for detailed information about
3175 attaching hard disks.
3176
3177 <note>You cannot attach a hard disk to a running machine. Also,
3178 you cannot attach a hard disk to a newly created machine until
3179 it is registered.</note>
3180
3181 <note>Attaching a hard disk to a machine creates a <i>lazy</i>
3182 attachment. In particular, no differeincing images are
3183 actually created until <link to="#saveSettings()"/> is called to
3184 commit all changed settings.</note>
3185
3186 </desc>
3187 <param name="id" type="uuid" dir="in">
3188 <desc>UUID of the hard disk to attach.</desc>
3189 </param>
3190 <param name="bus" type="StorageBus" dir="in">
3191 <desc>Type of storage bus to use (IDE or SATA).</desc>
3192 </param>
3193 <param name="channel" type="long" dir="in">
3194 <desc>Channel to attach the hard disk to. For IDE controllers,
3195 this can either be 0 or 1, for the primary or secondary controller,
3196 respectively.</desc>
3197 </param>
3198 <param name="device" type="long" dir="in">
3199 <desc>Device slot in the given channel to attach the hard disk to.
3200 For IDE devices, within each channel (0 or 1), this can again be
3201 0 or 1, for master or slave, respectively.</desc>
3202 </param>
3203 </method>
3204
3205 <method name="getHardDisk" const="yes">
3206 <desc>
3207 Returns the hard disk attached to the
3208 given controller under the specified device number.
3209 </desc>
3210 <param name="bus" type="StorageBus" dir="in"/>
3211 <param name="channel" type="long" dir="in"/>
3212 <param name="device" type="long" dir="in"/>
3213 <param name="hardDisk" type="IHardDisk" dir="return"/>
3214 </method>
3215
3216 <method name="detachHardDisk">
3217 <desc>
3218
3219 Detaches the hard disk drive attached to the given device slot
3220 of the given controller.
3221
3222 See <link to="IHardDisk"/> for detailed information about
3223 attaching hard disks.
3224
3225 <note>You cannot detach a hard disk from a running
3226 machine.</note>
3227
3228 <note>
3229 Detaching a hard disk from a machine creates a <i>lazy</i>
3230 detachment. In particular, if the detached hard disk is a
3231 differencing hard disk, it is not actually deleted until
3232 <link to="#saveSettings()"/> is called to commit all changed settings.
3233 Keep in mind, that doing <link to="#saveSettings()"/> will
3234 <b>physically delete</b> all detached differencing hard disks,
3235 so be careful.
3236 </note>
3237
3238 </desc>
3239 <param name="bus" type="StorageBus" dir="in">
3240 <desc>Bus to dettach the hard disk from.</desc>
3241 </param>
3242 <param name="channel" type="long" dir="in">
3243 <desc>Channel number to dettach the hard disk from.</desc>
3244 </param>
3245 <param name="device" type="long" dir="in">
3246 <desc>Device slot number to dettach the hard disk from.</desc>
3247 </param>
3248 </method>
3249
3250 <method name="getNetworkAdapter" const="yes">
3251 <desc>
3252 Returns the network adapter associated with the given slot.
3253 Slots are numbered sequentially, starting with zero. The total
3254 number of adapters per every machine is defined by the
3255 <link to="ISystemProperties::networkAdapterCount"/> property,
3256 so the maximum slot number is one less than that property's value.
3257 </desc>
3258 <param name="slot" type="unsigned long" dir="in"/>
3259 <param name="adapter" type="INetworkAdapter" dir="return"/>
3260 </method>
3261
3262 <method name="getSerialPort" const="yes">
3263 <desc>
3264 Returns the serial port associated with the given slot.
3265 Slots are numbered sequentially, starting with zero. The total
3266 number of serial ports per every machine is defined by the
3267 <link to="ISystemProperties::serialPortCount"/> property,
3268 so the maximum slot number is one less than that property's value.
3269 </desc>
3270 <param name="slot" type="unsigned long" dir="in"/>
3271 <param name="port" type="ISerialPort" dir="return"/>
3272 </method>
3273
3274 <method name="getParallelPort" const="yes">
3275 <desc>
3276 Returns the parallel port associated with the given slot.
3277 Slots are numbered sequentially, starting with zero. The total
3278 number of parallel ports per every machine is defined by the
3279 <link to="ISystemProperties::parallelPortCount"/> property,
3280 so the maximum slot number is one less than that property's value.
3281 </desc>
3282 <param name="slot" type="unsigned long" dir="in"/>
3283 <param name="port" type="IParallelPort" dir="return"/>
3284 </method>
3285
3286 <method name="getNextExtraDataKey">
3287 <desc>
3288 Returns the machine-specific extra data key name following the
3289 supplied key.
3290
3291 An error is returned if the supplied @a key does not exist. @c NULL is
3292 returned in @a nextKey if the supplied key is the last key. When
3293 supplying @c NULL for the @a key, the first key item is returned in @a
3294 nextKey (if there is any). @a nextValue is an optional parameter and
3295 if supplied, the next key's value is returned in it.
3296 </desc>
3297 <param name="key" type="wstring" dir="in">
3298 <desc>Name of the data key to follow.</desc>
3299 </param>
3300 <param name="nextKey" type="wstring" dir="out">
3301 <desc>Name of the next data key.</desc>
3302 </param>
3303 <param name="nextValue" type="wstring" dir="out">
3304 <desc>Value of the next data key.</desc>
3305 </param>
3306 </method>
3307
3308 <method name="getExtraData">
3309 <desc>
3310 Returns associated machine-specific extra data.
3311
3312 If the reuqested data @a key does not exist, this function will
3313 succeed and return @c NULL in the @a value argument.
3314 </desc>
3315 <param name="key" type="wstring" dir="in">
3316 <desc>Name of the data key to get.</desc>
3317 </param>
3318 <param name="value" type="wstring" dir="return">
3319 <desc>Value of the requested data key.</desc>
3320 </param>
3321 </method>
3322
3323 <method name="setExtraData">
3324 <desc>
3325 Sets associated machine-specific extra data.
3326
3327 If you pass @c NULL as a key @a vaule, the given @a key will be
3328 deleted.
3329
3330 <note>
3331 Before performing the actual data change, this method will ask all
3332 registered callbacks using the
3333 <link to="IVirtualBoxCallback::onExtraDataCanChange()"/>
3334 notification for a permission. If one of the callbacks refuses the
3335 new value, the change will not be performed.
3336 </note>
3337 <note>
3338 On success, the
3339 <link to="IVirtualBoxCallback::onExtraDataChange()"/> notification
3340 is called to inform all registered callbacks about a successful data
3341 change.
3342 </note>
3343 <note>
3344 This method can be called outside the machine session and therefore
3345 it's a caller's responsibility to handle possible race conditions
3346 when several clients change the same key at the same time.
3347 </note>
3348 </desc>
3349 <param name="key" type="wstring" dir="in">
3350 <desc>Name of the data key to set.</desc>
3351 </param>
3352 <param name="value" type="wstring" dir="in">
3353 <desc>Value to assign to the key.</desc>
3354 </param>
3355 </method>
3356
3357 <method name="saveSettings">
3358 <desc>
3359 Saves any changes to machine settings made since the session
3360 has been opened or a new machine has been created, or since the
3361 last call to <link to="#saveSettings()"/> or <link to="#discardSettings()"/>.
3362 For registered machines, new settings become visible to all
3363 other VirtualBox clients after successful invocation of this
3364 method.
3365 <note>
3366 The method sends <link to="IVirtualBoxCallback::onMachineDataChange()"/>
3367 notification event after the configuration has been successfully
3368 saved (only for registered machines).
3369 </note>
3370 <note>
3371 Calling this method is only valid on instances returned
3372 by <link to="ISession::machine"/> and on new machines
3373 created by <link to="IVirtualBox::createMachine"/> but not
3374 yet registered, or on unregistered machines after calling
3375 <link to="IVirtualBox::unregisterMachine"/>.
3376 </note>
3377 </desc>
3378 </method>
3379
3380 <method name="saveSettingsWithBackup">
3381 <desc>
3382 Creates a backup copy of the machine settings file (<link
3383 to="#settingsFilePath"/>) in case of auto-conversion, and then calls
3384 <link to="#saveSettings()"/>.
3385
3386 Note that the backup copy is created <b>only</b> if the settings file
3387 auto-conversion took place (see <link to="#settingsFileVersion"/> for
3388 details). Otherwise, this call is fully equivalent to
3389 <link to="#saveSettings()"/> and no backup copying is done.
3390
3391 The backup copy is created in the same directory where the original
3392 settings file is located. It is given the following file name:
3393 <pre>
3394 original.xml.x.y-platform.bak
3395 </pre>
3396 where <tt>original.xml</tt> is the original settings file name
3397 (excluding path), and <tt>x.y-platform</tt> is the version of the old
3398 format of the settings file (before auto-conversion).
3399
3400 If the given backup file already exists, this method will try to add the
3401 <tt>.N</tt> suffix to the backup file name (where <tt>N</tt> counts from
3402 0 to 9) and copy it again until it succeeds. If all suffixes are
3403 occupied, or if any other copy error occurs, this method will return a
3404 failure.
3405
3406 If the copy operation succeeds, the @a bakFileName return argument will
3407 receive a full path to the created backup file (for informational
3408 purposes). Note that this will happen even if the subsequent
3409 <link to="#saveSettings()"/> call performed by this method after the
3410 copy operation, fails.
3411
3412 <note>
3413 The VirtualBox API never calls this method. It is intended purely for
3414 the purposes of creating backup copies of the settings files by
3415 front-ends before saving the results of the automatically performed
3416 settings conversion to disk.
3417 </note>
3418
3419 <see>settingsFileVersion</see>
3420 </desc>
3421 <param name="bakFileName" type="wstring" dir="return">
3422 <desc>Full path to the created backup copy.</desc>
3423 </param>
3424 </method>
3425
3426 <method name="discardSettings">
3427 <desc>
3428 Discards any changes to the machine settings made since the session
3429 has been opened or since the last call to <link to="#saveSettings()"/>
3430 or <link to="#discardSettings"/>.
3431 <note>
3432 Calling this method is only valid on instances returned
3433 by <link to="ISession::machine"/> and on new machines
3434 created by <link to="IVirtualBox::createMachine"/> or
3435 opened by <link to="IVirtualBox::openMachine"/> but not
3436 yet registered, or on unregistered machines after calling
3437 <link to="IVirtualBox::unregisterMachine"/>.
3438 </note>
3439 </desc>
3440 </method>
3441
3442 <method name="deleteSettings">
3443 <desc>
3444 Deletes the settings file of this machine from disk.
3445 The machine must not be registered in order for this operation
3446 to succeed.
3447 <note>
3448 <link to="#settingsModified"/> will return TRUE after this
3449 method successfully returns.
3450 </note>
3451 <note>
3452 Calling this method is only valid on instances returned
3453 by <link to="ISession::machine"/> and on new machines
3454 created by <link to="IVirtualBox::createMachine"/> or
3455 opened by <link to="IVirtualBox::openMachine"/> but not
3456 yet registered, or on unregistered machines after calling
3457 <link to="IVirtualBox::unregisterMachine"/>.
3458 </note>
3459 <note>
3460 The deleted machine settings file can be restored (saved again)
3461 by calling <link to="#saveSettings()"/>.
3462 </note>
3463 </desc>
3464 </method>
3465
3466 <method name="getSnapshot">
3467 <desc>
3468 Returns a snapshot of this machine with the given UUID.
3469 A <tt>null</tt> UUID can be used to obtain the first snapshot
3470 taken on this machine. This is useful if you want to traverse
3471 the whole tree of snapshots starting from the root.
3472 </desc>
3473 <param name="id" type="uuid" dir="in">
3474 <desc>UUID of the snapshot to get</desc>
3475 </param>
3476 <param name="snapshot" type="ISnapshot" dir="return">
3477 <desc>Snapshot object with the given UUID.</desc>
3478 </param>
3479 </method>
3480
3481 <method name="findSnapshot">
3482 <desc>
3483 Returns a snapshot of this machine with the given name.
3484 </desc>
3485 <param name="name" type="wstring" dir="in">
3486 <desc>Name of the snapshot to find</desc>
3487 </param>
3488 <param name="snapshot" type="ISnapshot" dir="return">
3489 <desc>Snapshot object with the given name.</desc>
3490 </param>
3491 </method>
3492
3493 <method name="setCurrentSnapshot">
3494 <desc>
3495 Sets the current snapshot of this machine.
3496 <note>
3497 In the current implementation, this operation is not
3498 implemented.
3499 </note>
3500 </desc>
3501 <param name="id" type="uuid" dir="in">
3502 <desc>UUID of the snapshot to set as the current snapshot.</desc>
3503 </param>
3504 </method>
3505
3506 <method name="createSharedFolder">
3507 <desc>
3508 Creates a new permanent shared folder by associating the given logical
3509 name with the given host path, adds it to the collection of shared
3510 folders and starts sharing it. Refer to the description of
3511 <link to="ISharedFolder"/> to read more about logical names.
3512 </desc>
3513 <param name="name" type="wstring" dir="in">
3514 <desc>Unique logical name of the shared folder.</desc>
3515 </param>
3516 <param name="hostPath" type="wstring" dir="in">
3517 <desc>Full path to the shared folder in the host file system.</desc>
3518 </param>
3519 <param name="writable" type="boolean" dir="in">
3520 <desc>Whether the share is writable or readonly</desc>
3521 </param>
3522 </method>
3523
3524 <method name="removeSharedFolder">
3525 <desc>
3526 Removes the permanent shared folder with the given name previously
3527 created by <link to="#createSharedFolder"/> from the collection of
3528 shared folders and stops sharing it.
3529 </desc>
3530 <param name="name" type="wstring" dir="in">
3531 <desc>Logical name of the shared folder to remove.</desc>
3532 </param>
3533 </method>
3534
3535 <method name="canShowConsoleWindow">
3536 <desc>
3537 Returns @c true if the VM console process can activate the
3538 console window and bring it to foreground on the desktop of
3539 the host PC.
3540 <note>
3541 This method will fail if a session for this machine is not
3542 currently open.
3543 </note>
3544 </desc>
3545 <param name="canShow" type="boolean" dir="return">
3546 <desc>
3547 @c true if the console window can be shown and @c
3548 false otherwise.
3549 </desc>
3550 </param>
3551 </method>
3552
3553 <method name="showConsoleWindow">
3554 <desc>
3555 Activates the console window and brings it to foreground on
3556 the desktop of the host PC. Many modern window managers on
3557 many platforms implement some sort of focus stealing
3558 prevention logic, so that it may be impossible to activate
3559 a window without the help of the currently active
3560 application. In this case, this method will return a non-zero
3561 identifier that represents the top-level window of the VM
3562 console process. The caller, if it represents a currently
3563 active process, is responsible to use this identifier (in a
3564 platform-dependent manner) to perform actual window
3565 activation.
3566 <note>
3567 This method will fail if a session for this machine is not
3568 currently open.
3569 </note>
3570 </desc>
3571 <param name="winId" type="unsigned long long" dir="return">
3572 <desc>
3573 Platform-dependent identifier of the top-level VM console
3574 window, or zero if this method has performed all actions
3575 necessary to implement the <i>show window</i> semantics for
3576 the given platform and/or VirtualBox front-end.
3577 </desc>
3578 </param>
3579 </method>
3580
3581 <method name="getGuestProperty">
3582 <desc>
3583 Reads an entry from the machine's guest property store.
3584 </desc>
3585 <param name="name" type="wstring" dir="in">
3586 <desc>
3587 The name of the property to read.
3588 </desc>
3589 </param>
3590 <param name="value" type="wstring" dir="out">
3591 <desc>
3592 The value of the property. If the property does not exist then this
3593 will be empty.
3594 </desc>
3595 </param>
3596 <param name="timestamp" type="unsigned long long" dir="out">
3597 <desc>
3598 The time at which the property was last modified, as seen by the
3599 server process.
3600 </desc>
3601 </param>
3602 <param name="flags" type="wstring" dir="out">
3603 <desc>
3604 Additional property parameters, passed as a comma-separated list of
3605 "name=value" type entries.
3606 </desc>
3607 </param>
3608 </method>
3609
3610 <method name="getGuestPropertyValue">
3611 <desc>
3612 Reads a value from the machine's guest property store.
3613 </desc>
3614 <param name="property" type="wstring" dir="in">
3615 <desc>
3616 The name of the property to read.
3617 </desc>
3618 </param>
3619 <param name="value" type="wstring" dir="return">
3620 <desc>
3621 The value of the property. If the property does not exist then this
3622 will be empty.
3623 </desc>
3624 </param>
3625 </method>
3626
3627 <method name="getGuestPropertyTimestamp">
3628 <desc>
3629 Reads a property timestamp from the machine's guest property store.
3630 </desc>
3631 <param name="property" type="wstring" dir="in">
3632 <desc>
3633 The name of the property to read.
3634 </desc>
3635 </param>
3636 <param name="value" type="unsigned long long" dir="return">
3637 <desc>
3638 The timestamp. If the property does not exist then this will be
3639 empty.
3640 </desc>
3641 </param>
3642 </method>
3643
3644 <method name="setGuestProperty">
3645 <desc>
3646 Sets, changes or deletes an entry in the machine's guest property
3647 store.
3648 </desc>
3649 <param name="property" type="wstring" dir="in">
3650 <desc>
3651 The name of the property to set, change or delete.
3652 </desc>
3653 </param>
3654 <param name="value" type="wstring" dir="in">
3655 <desc>
3656 The new value of the property to set, change or delete. If the
3657 property does not yet exist and value is non-empty, it will be
3658 created. If the value is empty, the key will be deleted if it
3659 exists.
3660 </desc>
3661 </param>
3662 <param name="flags" type="wstring" dir="in">
3663 <desc>
3664 Additional property parameters, passed as a comma-separated list of
3665 "name=value" type entries.
3666 </desc>
3667 </param>
3668 </method>
3669
3670 <method name="setGuestPropertyValue">
3671 <desc>
3672 Sets, changes or deletes a value in the machine's guest property
3673 store. The flags field will be left unchanged or created empty for a
3674 new property.
3675 </desc>
3676 <param name="property" type="wstring" dir="in">
3677 <desc>
3678 The name of the property to set, change or delete.
3679 </desc>
3680 </param>
3681 <param name="value" type="wstring" dir="in">
3682 <desc>
3683 The new value of the property to set, change or delete. If the
3684 property does not yet exist and value is non-empty, it will be
3685 created. If value is empty, the property will be deleted if it
3686 exists.
3687 </desc>
3688 </param>
3689 </method>
3690
3691 <method name="enumerateGuestProperties">
3692 <desc>
3693 Return a list of the guest properties matching a set of patterns along
3694 with their values, timestamps and flags.
3695 </desc>
3696 <param name="patterns" type="wstring" dir="in">
3697 <desc>
3698 The patterns to match the properties against as a comma-separated
3699 string with no spaces. If this is empty, all properties currently
3700 set will be returned.
3701 </desc>
3702 </param>
3703 <param name="name" type="wstring" dir="out" safearray="yes">
3704 <desc>
3705 The names of the properties returned.
3706 </desc>
3707 </param>
3708 <param name="value" type="wstring" dir="out" safearray="yes">
3709 <desc>
3710 The values of the properties returned. The array entries match the
3711 corresponding entries in the @a name array.
3712 </desc>
3713 </param>
3714 <param name="timestamp" type="unsigned long long" dir="out" safearray="yes">
3715 <desc>
3716 The timestamps of the properties returned. The array entries match
3717 the corresponding entries in the @a name array.
3718 </desc>
3719 </param>
3720 <param name="flags" type="wstring" dir="out" safearray="yes">
3721 <desc>
3722 The flags of the properties returned. The array entries match the
3723 corresponding entries in the @a name array.
3724 </desc>
3725 </param>
3726 </method>
3727 </interface>
3728
3729 <!--
3730 // IConsole
3731 /////////////////////////////////////////////////////////////////////////
3732 -->
3733
3734 <interface
3735 name="IConsoleCallback" extends="$unknown"
3736 uuid="13dfbef3-b74d-487d-bada-2304529aefa6"
3737 wsmap="suppress"
3738 >
3739
3740 <method name="onMousePointerShapeChange">
3741 <desc>
3742 Notification when the guest mouse pointer shape has
3743 changed. The new shape data is given.
3744 </desc>
3745 <param name="visible" type="boolean" dir="in">
3746 <desc>
3747 Flag whether the pointer is visible.
3748 </desc>
3749 </param>
3750 <param name="alpha" type="boolean" dir="in">
3751 <desc>
3752 Flag whether the pointer has an alpha channel.
3753 </desc>
3754 </param>
3755 <param name="xHot" type="unsigned long" dir="in">
3756 <desc>
3757 The pointer hot spot x coordinate.
3758 </desc>
3759 </param>
3760 <param name="yHot" type="unsigned long" dir="in">
3761 <desc>
3762 The pointer hot spot y coordinate.
3763 </desc>
3764 </param>
3765 <param name="width" type="unsigned long" dir="in">
3766 <desc>
3767 Width of the pointer shape in pixels.
3768 </desc>
3769 </param>
3770 <param name="height" type="unsigned long" dir="in">
3771 <desc>
3772 Height of the pointer shape in pixels.
3773 </desc>
3774 </param>
3775 <param name="shape" type="octet" mod="ptr" dir="in">
3776 <desc>
3777 Address of the shape buffer.
3778
3779 The buffer contains 1 bpp (bits per pixel) AND mask followed by 32 bpp XOR (color) mask.
3780
3781 For pointers without alpha channel the XOR mask pixels are 32 bit values: (lsb)BGR0(msb).
3782 For pointers with alpha channel the XOR mask consists of (lsb)BGRA(msb) 32 bit values.
3783
3784 AND mask presents for pointers with alpha channel, so if the callback does not
3785 support alpha, the pointer could be displayed as a normal color pointer.
3786
3787 The AND mask is 1 bpp bitmap with byte aligned scanlines. Size of AND mask,
3788 therefore, is <tt>cbAnd = (width + 7) / 8 * height</tt>. The padding bits at the
3789 end of any scanline are undefined.
3790
3791 The XOR mask follows the AND mask on the next 4 bytes aligned offset:
3792 <tt>uint8_t *pXor = pAnd + (cbAnd + 3) &amp; ~3</tt>
3793 Bytes in the gap between the AND and the XOR mask are undefined.
3794 XOR mask scanlines have no gap between them and size of XOR mask is:
3795 <tt>cXor = width * 4 * height</tt>.
3796
3797 <note>
3798 If 'shape' is equal to 0, only pointer visibility is being changed.
3799 </note>
3800 </desc>
3801 </param>
3802 </method>
3803
3804 <method name="onMouseCapabilityChange">
3805 <desc>
3806 Notification when the mouse capabilities reported by the
3807 guest have changed. The new capabilities are passed.
3808 </desc>
3809 <param name="supportsAbsolute" type="boolean" dir="in"/>
3810 <param name="needsHostCursor" type="boolean" dir="in"/>
3811 </method>
3812
3813 <method name="onKeyboardLedsChange">
3814 <desc>
3815 Notification when the guest OS executes the KBD_CMD_SET_LEDS command
3816 to alter the state of the keyboard LEDs.
3817 </desc>
3818 <param name="numLock" type="boolean" dir="in"/>
3819 <param name="capsLock" type="boolean" dir="in"/>
3820 <param name="scrollLock" type="boolean" dir="in"/>
3821 </method>
3822
3823 <method name="onStateChange">
3824 <desc>
3825 Notification when the execution state of the machine has changed.
3826 The new state will be given.
3827 </desc>
3828 <param name="state" type="MachineState" dir="in"/>
3829 </method>
3830
3831 <method name="onAdditionsStateChange">
3832 <desc>
3833 Notification when a Guest Additions property changes.
3834 Interested callees should query IGuest attributes to
3835 find out what has changed.
3836 </desc>
3837 </method>
3838
3839 <method name="onDVDDriveChange">
3840 <desc>
3841 Notification when a property of the
3842 virtual <link to="IMachine::DVDDrive">DVD drive</link> changes.
3843 Interested callees should use IDVDDrive methods to find out what has
3844 changed.
3845 </desc>
3846 </method>
3847
3848 <method name="onFloppyDriveChange">
3849 <desc>
3850 Notification when a property of the
3851 virtual <link to="IMachine::FloppyDrive">floppy drive</link> changes.
3852 Interested callees should use IFloppyDrive methods to find out what
3853 has changed.
3854 </desc>
3855 </method>
3856
3857 <method name="onNetworkAdapterChange">
3858 <desc>
3859 Notification when a property of one of the
3860 virtual <link to="IMachine::getNetworkAdapter">network adapters</link>
3861 changes. Interested callees should use INetworkAdapter methods and
3862 attributes to find out what has changed.
3863 </desc>
3864 <param name="networkAdapter" type="INetworkAdapter" dir="in">
3865 <desc>Network adapter that is subject to change.</desc>
3866 </param>
3867 </method>
3868
3869 <method name="onSerialPortChange">
3870 <desc>
3871 Notification when a property of one of the
3872 virtual <link to="IMachine::getSerialPort">serial ports</link> changes.
3873 Interested callees should use ISerialPort methods and attributes
3874 to find out what has changed.
3875 </desc>
3876 <param name="serialPort" type="ISerialPort" dir="in">
3877 <desc>Serial port that is subject to change.</desc>
3878 </param>
3879 </method>
3880
3881 <method name="onParallelPortChange">
3882 <desc>
3883 Notification when a property of one of the
3884 virtual <link to="IMachine::getParallelPort">parallel ports</link>
3885 changes. Interested callees should use ISerialPort methods and
3886 attributes to find out what has changed.
3887 </desc>
3888 <param name="parallelPort" type="IParallelPort" dir="in">
3889 <desc>Parallel port that is subject to change.</desc>
3890 </param>
3891 </method>
3892
3893 <method name="onVRDPServerChange">
3894 <desc>
3895 Notification when a property of the
3896 <link to="IMachine::VRDPServer">VRDP server</link> changes.
3897 Interested callees should use IVRDPServer methods and attributes to
3898 find out what has changed.
3899 </desc>
3900 </method>
3901
3902 <method name="onUSBControllerChange">
3903 <desc>
3904 Notification when a property of the virtual
3905 <link to="IMachine::USBController">USB controller</link> changes.
3906 Interested callees should use IUSBController methods and attributes to
3907 find out what has changed.
3908 </desc>
3909 </method>
3910
3911 <method name="onUSBDeviceStateChange">
3912 <desc>
3913 Notification when a USB device is attached to or detached from
3914 the virtual USB controller.
3915
3916 This notification is sent as a result of the indirect
3917 request to attach the device because it matches one of the
3918 machine USB filters, or as a result of the direct request
3919 issued by <link to="IConsole::attachUSBDevice"/> or
3920 <link to="IConsole::detachUSBDevice"/>.
3921
3922 This notification is sent in case of both a succeeded and a
3923 failed request completion. When the request succeeds, the @a
3924 error parameter is @c null, and the given device has been
3925 already added to (when @a attached is @c true) or removed from
3926 (when @a attached is @c false) the collection represented by
3927 <link to="IConsole::USBDevices"/>. On failure, the collection
3928 doesn't change and the @a error perameter represents the error
3929 message describing the failure.
3930
3931 </desc>
3932 <param name="device" type="IUSBDevice" dir="in">
3933 <desc>Device that is subject to state change.</desc>
3934 </param>
3935 <param name="attached" type="boolean" dir="in">
3936 <desc>
3937 <tt>true</tt> if the device was attached
3938 and <tt>false</tt> otherwise.
3939 </desc>
3940 </param>
3941 <param name="error" type="IVirtualBoxErrorInfo" dir="in">
3942 <desc>
3943 <tt>null</tt> on success or an error message object on
3944 failure.
3945 </desc>
3946 </param>
3947 </method>
3948
3949 <method name="onSharedFolderChange">
3950 <desc>
3951 Notification when a shared folder is added or removed.
3952 The @a scope argument defines one of three scopes:
3953 <link to="IVirtualBox::sharedFolders">global shared folders</link>
3954 (<link to="Scope::Global">Global</link>),
3955 <link to="IMachine::sharedFolders">permanent shared folders</link> of
3956 the machine (<link to="Scope::Machine">Machine</link>) or <link
3957 to="IConsole::sharedFolders">transient shared folders</link> of the
3958 machine (<link to="Scope::Session">Session</link>). Interested callees
3959 should use query the corresponding collections to find out what has
3960 changed.
3961 </desc>
3962 <param name="scope" type="Scope" dir="in">
3963 <desc>Sope of the notification.</desc>
3964 </param>
3965 </method>
3966
3967 <method name="onRuntimeError">
3968 <desc>
3969 Notification when an error happens during the virtual
3970 machine execution.
3971
3972 There are three kinds of runtime errors:
3973 <ul>
3974 <li><i>fatal</i></li>
3975 <li><i>non-fatal with retry</i></li>
3976 <li><i>non-fatal warnings</i></li>
3977 </ul>
3978
3979 <b>Fatal</b> errors are indicated by the @a fatal parameter set
3980 to <tt>true</tt>. In case of fatal errors, the virtual machine
3981 execution is always paused before calling this notification, and
3982 the notification handler is supposed either to immediately save
3983 the virtual machine state using <link to="IConsole::saveState()"/>
3984 or power it off using <link to="IConsole::powerDown()"/>.
3985 Resuming the execution can lead to unpredictable results.
3986
3987 <b>Non-fatal</b> errors and warnings are indicated by the
3988 @a fatal parameter set to <tt>false</tt>. If the virtual machine
3989 is in the Paused state by the time the error notification is
3990 received, it means that the user can <i>try to resume</i> the machine
3991 execution after attempting to solve the probem that caused the
3992 error. In this case, the notification handler is supposed
3993 to show an appropriate message to the user (depending on the
3994 value of the @a id parameter) that offers several actions such
3995 as <i>Retry</i>, <i>Save</i> or <i>Power Off</i>. If the user
3996 wants to retry, the notification handler should continue
3997 the machine execution using the <link to="IConsole::resume()"/>
3998 call. If the machine execution is not Paused during this
3999 notification, then it means this notification is a <i>warning</i>
4000 (for example, about a fatal condition that can happen very soon);
4001 no immediate action is required from the user, the machine
4002 continues its normal execution.
4003
4004 Note that in either case the notification handler
4005 <b>must not</b> perform any action directly on a thread
4006 where this notification is called. Everything it is allowed to
4007 do is to post a message to another thread that will then talk
4008 to the user and take the corresponding action.
4009
4010 Currently, the following error identificators are known:
4011 <ul>
4012 <li><tt>"HostMemoryLow"</tt></li>
4013 <li><tt>"HostAudioNotResponding"</tt></li>
4014 <li><tt>"VDIStorageFull"</tt></li>
4015 </ul>
4016
4017 <note>
4018 This notification is not designed to be implemented by
4019 more than one callback at a time. If you have multiple
4020 IConsoleCallback instances registered on the given
4021 IConsole object, make sure you simply do nothing but
4022 return @c S_OK from all but one of them that does actual
4023 user notification and performs necessary actions.
4024 </note>
4025
4026 </desc>
4027 <param name="fatal" type="boolean" dir="in">
4028 <desc>Whether the error is fatal or not</desc>
4029 </param>
4030 <param name="id" type="wstring" dir="in">
4031 <desc>Error identificator</desc>
4032 </param>
4033 <param name="message" type="wstring" dir="in">
4034 <desc>Optional error message</desc>
4035 </param>
4036 </method>
4037
4038 <method name="onCanShowWindow">
4039 <desc>
4040 Notification when a call to
4041 <link to="IMachine::canShowConsoleWindow()"/> is made by a
4042 front-end to check if a subsequent call to
4043 <link to="IMachine::showConsoleWindow()"/> can succeed.
4044
4045 The callee should give an answer appropriate to the current
4046 machine state in the @a canShow argument. This answer must
4047 remain valid at least until the next
4048 <link to="IConsole::state">machine state</link> change.
4049
4050 <note>
4051 This notification is not designed to be implemented by
4052 more than one callback at a time. If you have multiple
4053 IConsoleCallback instances registered on the given
4054 IConsole object, make sure you simply do nothing but
4055 return @c true and @c S_OK from all but one of them that
4056 actually manages console window activation.
4057 </note>
4058 </desc>
4059 <param name="canShow" type="boolean" dir="return">
4060 <desc>
4061 @c true if the console window can be shown and @c
4062 false otherwise.
4063 </desc>
4064 </param>
4065 </method>
4066
4067 <method name="onShowWindow">
4068 <desc>
4069 Notification when a call to
4070 <link to="IMachine::showConsoleWindow()"/>
4071 requests the console window to be activated and brought to
4072 foreground on the desktop of the host PC.
4073
4074 This notification should cause the VM console process to
4075 perform the requested action as described above. If it is
4076 impossible to do it at a time of this notification, this
4077 method should return a failure.
4078
4079 Note that many modern window managers on many platforms
4080 implement some sort of focus stealing prevention logic, so
4081 that it may be impossible to activate a window without the
4082 help of the currently active application (which is supposedly
4083 an initiator of this notification). In this case, this method
4084 must return a non-zero identifier that represents the
4085 top-level window of the VM console process. The caller, if it
4086 represents a currently active process, is responsible to use
4087 this identifier (in a platform-dependent manner) to perform
4088 actual window activation.
4089
4090 This method must set @a winId to zero if it has performed all
4091 actions necessary to complete the request and the console
4092 window is now active and in foreground, to indicate that no
4093 further action is required on the caller's side.
4094
4095 <note>
4096 This notification is not designed to be implemented by
4097 more than one callback at a time. If you have multiple
4098 IConsoleCallback instances registered on the given
4099 IConsole object, make sure you simply do nothing but
4100 return@c S_OK from all but one of them that actually
4101 manages console window activation.
4102 </note>
4103 </desc>
4104 <param name="winId" type="unsigned long long" dir="return">
4105 <desc>
4106 Platform-dependent identifier of the top-level VM console
4107 window, or zero if this method has performed all actions
4108 necessary to implement the <i>show window</i> semantics for
4109 the given platform and/or this VirtualBox front-end.
4110 </desc>
4111 </param>
4112 </method>
4113
4114 </interface>
4115
4116 <interface
4117 name="IRemoteDisplayInfo" extends="$unknown"
4118 uuid="550104cd-2dfd-4a6c-857d-f6f8e088e62c"
4119 wsmap="struct"
4120 >
4121 <desc>
4122 Contains information about the remote display (VRDP) capabilities and status.
4123 This is used in the <link to="IConsole::remoteDisplayInfo" /> attribute.
4124
4125 <note>With the COM API, this is an interface like all the others. With the webservice,
4126 this is mapped to a structure, so querying the attribute will not return an object,
4127 but a complete structure.</note>
4128 </desc>
4129
4130 <attribute name="active" type="boolean" readonly="yes">
4131 <desc>
4132 Whether the remote display connection is active.
4133 </desc>
4134 </attribute>
4135
4136 <attribute name="numberOfClients" type="unsigned long" readonly="yes">
4137 <desc>
4138 How many times a client connected.
4139 </desc>
4140 </attribute>
4141
4142 <attribute name="beginTime" type="long long" readonly="yes">
4143 <desc>
4144 When the last connection was established, in milliseconds since 1970-01-01 UTC.
4145 </desc>
4146 </attribute>
4147
4148 <attribute name="endTime" type="long long" readonly="yes">
4149 <desc>
4150 When the last connection was terminated or the current time, if
4151 connection is still active, in milliseconds since 1970-01-01 UTC.
4152 </desc>
4153 </attribute>
4154
4155 <attribute name="bytesSent" type="unsigned long long" readonly="yes">
4156 <desc>
4157 How many bytes were sent in last or current, if still active, connection.
4158 </desc>
4159 </attribute>
4160
4161 <attribute name="bytesSentTotal" type="unsigned long long" readonly="yes">
4162 <desc>
4163 How many bytes were sent in all connections.
4164 </desc>
4165 </attribute>
4166
4167 <attribute name="bytesReceived" type="unsigned long long" readonly="yes">
4168 <desc>
4169 How many bytes were received in last or current, if still active, connection.
4170 </desc>
4171 </attribute>
4172
4173 <attribute name="bytesReceivedTotal" type="unsigned long long" readonly="yes">
4174 <desc>
4175 How many bytes were received in all connections.
4176 </desc>
4177 </attribute>
4178
4179 <attribute name="user" type="wstring" readonly="yes">
4180 <desc>
4181 Login user name supplied by the client.
4182 </desc>
4183 </attribute>
4184
4185 <attribute name="domain" type="wstring" readonly="yes">
4186 <desc>
4187 Login domain name supplied by the client.
4188 </desc>
4189 </attribute>
4190
4191 <attribute name="clientName" type="wstring" readonly="yes">
4192 <desc>
4193 The client name supplied by the client.
4194 </desc>
4195 </attribute>
4196
4197 <attribute name="clientIP" type="wstring" readonly="yes">
4198 <desc>
4199 The IP address of the client.
4200 </desc>
4201 </attribute>
4202
4203 <attribute name="clientVersion" type="unsigned long" readonly="yes">
4204 <desc>
4205 The client software version number.
4206 </desc>
4207 </attribute>
4208
4209 <attribute name="encryptionStyle" type="unsigned long" readonly="yes">
4210 <desc>
4211 Public key exchange method used when connection was established.
4212 Values: 0 - RDP4 public key exchange scheme.
4213 1 - X509 sertificates were sent to client.
4214 </desc>
4215 </attribute>
4216
4217 </interface>
4218
4219 <interface
4220 name="IConsole" extends="$unknown"
4221 uuid="d5a1cbda-f5d7-4824-9afe-d640c94c7dcf"
4222 wsmap="managed"
4223 >
4224 <desc>
4225 The IConsole interface represents an interface to control virtual
4226 machine execution.
4227
4228 The console object that implements the IConsole interface is obtained
4229 from a session object after the session for the given machine has been
4230 opened using one of <link to="IVirtualBox::openSession"/>,
4231 <link to="IVirtualBox::openRemoteSession"/> or
4232 <link to="IVirtualBox::openExistingSession"/> methdods.
4233
4234 Methods of the IConsole interface allow the caller to query the current
4235 virtual machine execution state, pause the machine or power it down, save
4236 the machine state or take a snapshot, attach and detach removable media
4237 and so on.
4238
4239 <see>ISession</see>
4240 </desc>
4241
4242 <attribute name="machine" type="IMachine" readonly="yes">
4243 <desc>
4244 Machine object this console is sessioned with.
4245 <note>
4246 This is a convenience property, it has the same value as
4247 <link to="ISession::machine"/> of the corresponding session
4248 object.
4249 </note>
4250 </desc>
4251 </attribute>
4252
4253 <attribute name="state" type="MachineState" readonly="yes">
4254 <desc>
4255 Current execution state of the machine.
4256 <note>
4257 This property always returns the same value as the corresponding
4258 property of the IMachine object this console is sessioned with.
4259 For the process that owns (executes) the VM, this is the
4260 preferable way of querying the VM state, because no IPC
4261 calls are made.
4262 </note>
4263 </desc>
4264 </attribute>
4265
4266 <attribute name="guest" type="IGuest" readonly="yes">
4267 <desc>Guest object.</desc>
4268 </attribute>
4269
4270 <attribute name="keyboard" type="IKeyboard" readonly="yes">
4271 <desc>
4272 Virtual keyboard object.
4273 <note>
4274 If the machine is not running, any attempt to use
4275 the returned object will result in an error.
4276 </note>
4277 </desc>
4278 </attribute>
4279
4280 <attribute name="mouse" type="IMouse" readonly="yes">
4281 <desc>
4282 Virtual mouse object.
4283 <note>
4284 If the machine is not running, any attempt to use
4285 the returned object will result in an error.
4286 </note>
4287 </desc>
4288 </attribute>
4289
4290 <attribute name="display" type="IDisplay" readonly="yes">
4291 <desc>Virtual display object.
4292 <note>
4293 If the machine is not running, any attempt to use
4294 the returned object will result in an error.
4295 </note>
4296 </desc>
4297 </attribute>
4298
4299 <attribute name="debugger" type="IMachineDebugger" readonly="yes">
4300 <desc>Debugging interface.</desc>
4301 </attribute>
4302
4303 <attribute name="USBDevices" type="IUSBDeviceCollection" readonly="yes">
4304 <desc>
4305 Collection of USB devices currently attached to the virtual
4306 USB controller.
4307 <note>
4308 The collection is empty if the machine is not running.
4309 </note>
4310 </desc>
4311 </attribute>
4312
4313 <attribute name="remoteUSBDevices" type="IHostUSBDeviceCollection" readonly="yes">
4314 <desc>
4315 List of USB devices currently attached to the remote VRDP client.
4316 Once a new device is physically attached to the remote host computer,
4317 it appears in this list and remains there until detached.
4318 </desc>
4319 </attribute>
4320
4321 <attribute name="sharedFolders" type="ISharedFolderCollection" readonly="yes">
4322 <desc>
4323 Collection of shared folders for the current session. These folders
4324 are called transient shared folders because they are available to the
4325 guest OS running inside the associated virtual machine only for the
4326 duration of the session (as opposed to
4327 <link to="IMachine::sharedFolders"/> which represent permanent shared
4328 folders). When the session is closed (e.g. the machine is powered down),
4329 these folders are automatically discarded.
4330
4331 New shared folders are added to the collection using
4332 <link to="#createSharedFolder"/>. Existing shared folders can be
4333 removed using <link to="#removeSharedFolder"/>.
4334 </desc>
4335 </attribute>
4336
4337 <attribute name="remoteDisplayInfo" type="IRemoteDisplayInfo" readonly="yes">
4338 <desc>
4339 Interface that provides information on Remote Display (VRDP) connection.
4340 </desc>
4341 </attribute>
4342
4343 <method name="powerUp">
4344 <desc>
4345 Starts the virtual machine execution using the current machine
4346 state (i.e. its current execution state, current settings and
4347 current hard disks).
4348
4349 If the machine is powered off or aborted, the execution will
4350 start from the beginning (as if the real hardware were just
4351 powered on).
4352
4353 If the machine is in the <link to="MachineState::Saved"/> state,
4354 it will continue its execution the point where the state has
4355 been saved.
4356
4357 <note>
4358 Unless you are trying to write a new VirtualBox front-end that
4359 performs direct machine execution (like the VirtualBox or VBoxSDL
4360 front-ends), don't call <link to="IConsole::powerUp"/> in a direct
4361 session opened by <link to="IVirtualBox::openSession"/> and use this
4362 session only to change virtual machine settings. If you simply want to
4363 start virtual machine execution using one of the existing front-ends
4364 (for example the VirtualBox GUI or headless server), simply use
4365 <link to="IVirtualBox::openRemoteSession"/>; these front-ends
4366 will power up the machine automatically for you.
4367 </note>
4368
4369 <see>#saveState</see>
4370 </desc>
4371 <param name="progress" type="IProgress" dir="return">
4372 <desc>Progress object to track the operation completion.</desc>
4373 </param>
4374 </method>
4375
4376 <method name="powerDown">
4377 <desc>
4378 Stops the virtual machine execution.
4379 After this operation completes, the machine will go to the
4380 PoweredOff state.
4381 </desc>
4382 </method>
4383
4384 <method name="reset">
4385 <desc>Resets the virtual machine.</desc>
4386 </method>
4387
4388 <method name="pause">
4389 <desc>Pauses the virtual machine execution.</desc>
4390 </method>
4391
4392 <method name="resume">
4393 <desc>Resumes the virtual machine execution.</desc>
4394 </method>
4395
4396 <method name="powerButton">
4397 <desc>Send the ACPI power button event to the guest.</desc>
4398 </method>
4399
4400 <method name="sleepButton">
4401 <desc>Send the ACPI sleep button event to the guest.</desc>
4402 </method>
4403
4404 <method name="getPowerButtonHandled">
4405 <desc>Check if the last power button event was handled by guest.</desc>
4406 <param name="handled" type="boolean" dir="return"/>
4407 </method>
4408
4409 <method name="saveState">
4410 <desc>
4411 Saves the current execution state of a running virtual machine
4412 and stops its execution.
4413
4414 After this operation completes, the machine will go to the
4415 Saved state. Next time it is powered up, this state will
4416 be restored and the machine will continue its execution from
4417 the place where it was saved.
4418
4419 This operation differs from taking a snapshot to the effect
4420 that it doesn't create new differencing hard disks. Also, once
4421 the machine is powered up from the state saved using this method,
4422 the saved state is deleted, so it will be impossible to return
4423 to this state later.
4424
4425 <note>
4426 On success, this method implicitly calls
4427 <link to="IMachine::saveSettings()"/> to save all current machine
4428 settings (including runtime changes to the DVD drive, etc.).
4429 Together with the impossibility to change any VM settings when it is
4430 in the Saved state, this guarantees the adequate hardware
4431 configuration of the machine when it is restored from the saved
4432 state file.
4433 </note>
4434
4435 <note>
4436 The machine must be in the Running or Paused state, otherwise
4437 the operation will fail.
4438 </note>
4439
4440 <see><link to="#takeSnapshot"/></see>
4441 </desc>
4442 <param name="progress" type="IProgress" dir="return">
4443 <desc>Progress object to track the operation completion.</desc>
4444 </param>
4445 </method>
4446
4447 <method name="adoptSavedState">
4448 <desc>
4449 Associates the given saved state file to the virtual machine.
4450
4451 On success, the machine will go to the Saved state. Next time it is
4452 powered up, it will be restored from the adopted saved state and
4453 continue execution from the place where the saved state file was
4454 created.
4455
4456 The specified saved state file path may be full or relative to the
4457 folder the VM normally saves the state to (usually,
4458 <link to="IMachine::snapshotFolder"/>).
4459
4460 <note>
4461 It's a caller's responsibility to make sure the given saved state
4462 file is compatible with the settings of this virtual machine that
4463 represent its virtual hardware (memory size, hard disk configuration
4464 etc.). If there is a mismatch, the behavior of the virtual machine
4465 is undefined.
4466 </note>
4467 </desc>
4468 <param name="savedStateFile" type="wstring" dir="in">
4469 <desc>Path to the saved state file to adopt.</desc>
4470 </param>
4471 </method>
4472
4473 <method name="discardSavedState">
4474 <desc>
4475 Discards (deletes) the saved state of the virtual machine
4476 previously created by <link to="#saveState"/>. Next time the
4477 machine is powered up, a clean boot will occur.
4478 <note>
4479 This operation is equivalent to resetting or powering off
4480 the machine without doing a proper shutdown in the guest OS.
4481 </note>
4482 </desc>
4483 </method>
4484
4485 <method name="getDeviceActivity">
4486 <desc>
4487 Gets the current activity type of a given device or device group.
4488 </desc>
4489 <param name="type" type="DeviceType" dir="in"/>
4490 <param name="activity" type="DeviceActivity" dir="return"/>
4491 </method>
4492
4493 <method name="attachUSBDevice">
4494 <desc>
4495 Attaches a host USB device with the given UUID to the
4496 USB controller of the virtual machine.
4497
4498 The device needs to be in one of the following states:
4499 <link to="USBDeviceState::Busy">Busy</link>,
4500 <link to="USBDeviceState::Available">Available</link> or
4501 <link to="USBDeviceState::Held">Held</link>,
4502 otherwise an error is immediately returned.
4503
4504 When the device state is
4505 <link to="USBDeviceState::Busy">Busy</link>, an error may also
4506 be returned if the host computer refuses to release it for some reason.
4507
4508 <see>IUSBController::deviceFilters, USBDeviceState</see>
4509 </desc>
4510 <param name="id" type="uuid" dir="in">
4511 <desc>UUID of the host USB device to attach.</desc>
4512 </param>
4513 </method>
4514
4515 <method name="detachUSBDevice">
4516 <desc>
4517 Detaches an USB device with the given UUID from the USB controller
4518 oif the virtual machine.
4519
4520 After this method succeeds, the VirtualBox server reinitiates
4521 all USB filters as if the device were just physically attached
4522 to the host, but filters of this machine are ignored to avoid
4523 a possible automatic reattachment.
4524
4525 <see>IUSBController::deviceFilters, USBDeviceState</see>
4526 </desc>
4527 <param name="id" type="uuid" dir="in">
4528 <desc>UUID of the USB device to detach.</desc>
4529 </param>
4530 <param name="device" type="IUSBDevice" dir="return">
4531 <desc>Detached USB device.</desc>
4532 </param>
4533 </method>
4534
4535 <method name="createSharedFolder">
4536 <desc>
4537 Creates a transient new shared folder by associating the given logical
4538 name with the given host path, adds it to the collection of shared
4539 folders and starts sharing it. Refer to the description of
4540 <link to="ISharedFolder"/> to read more about logical names.
4541 </desc>
4542 <param name="name" type="wstring" dir="in">
4543 <desc>Unique logical name of the shared folder.</desc>
4544 </param>
4545 <param name="hostPath" type="wstring" dir="in">
4546 <desc>Full path to the shared folder in the host file system.</desc>
4547 </param>
4548 <param name="writable" type="boolean" dir="in">
4549 <desc>Whether the share is writable or readonly</desc>
4550 </param>
4551 </method>
4552
4553 <method name="removeSharedFolder">
4554 <desc>
4555 Removes a transient shared folder with the given name previously
4556 created by <link to="#createSharedFolder"/> from the collection of
4557 shared folders and stops sharing it.
4558 </desc>
4559 <param name="name" type="wstring" dir="in">
4560 <desc>Logical name of the shared folder to remove.</desc>
4561 </param>
4562 </method>
4563
4564 <method name="takeSnapshot">
4565 <desc>
4566 Saves the current execution state and all settings of the
4567 machine and creates differencing images for all
4568 normal (non-independent) hard disks.
4569
4570 This method can be called for a PoweredOff, Saved, Running or
4571 Paused virtual machine. When the machine is PoweredOff, an
4572 offline <link to="ISnapshot">snapshot</link> is created,
4573 in all other cases -- an online snapshot.
4574
4575 The taken snapshot is always based on the
4576 <link to="IMachine::currentSnapshot">current
4577 snapshot</link> of the associated virtual machine and becomes
4578 a new current snapshot.
4579
4580 <note>
4581 This method implicitly calls <link to="IMachine::saveSettings()"/> to
4582 save all current machine settings before taking an offline snapshot.
4583 </note>
4584
4585 <see>ISnapshot, <link to="#saveState"/></see>
4586 </desc>
4587 <param name="name" type="wstring" dir="in">
4588 <desc>Short name for the snapshot.</desc>
4589 </param>
4590 <param name="description" type="wstring" dir="in">
4591 <desc>Optional description of the snapshot.</desc>
4592 </param>
4593 <param name="progress" type="IProgress" dir="return">
4594 <desc>Progress object to track the operation completion.</desc>
4595 </param>
4596 </method>
4597
4598 <method name="discardSnapshot">
4599 <desc>
4600
4601 Starts discarding the specified snapshot. The execution state
4602 and settings of the associated machine stored in the snapshot
4603 will be deleted. The contents of all differencing hard disks of
4604 this snapshot will be merged with the contents of their
4605 dependent child hard disks to keep the, disks valid (in other
4606 words, all changes represented by hard disks being discarded
4607 will be propagated to their child hard disks). After that, this
4608 snapshot's differencing hard disks will be deleted. The parent
4609 of this snapshot will become a new parent for all its child
4610 snapshots.
4611
4612 If the discarded snapshot is the current one, its parent
4613 snapshot will become a new current snapshot. The current machine
4614 state is not directly affected in this case, except that
4615 currently attached differencing hard disks based on hard disks
4616 of the discarded snapshot will be also merged as described
4617 above.
4618
4619 If the discarded snapshot is the first one (the root snapshot)
4620 and it has exactly one child snapshot, this child snapshot will
4621 become the first snapshot after discarding. If there are no
4622 children at all (i.e. the first snapshot is the only snapshot of
4623 the machine), both the current and the first snapshot of the
4624 machine will be set to null. In all other cases, the first
4625 snapshot cannot be discarded.
4626
4627 You cannot discard the snapshot if it
4628 stores <link to="HardDiskType::Normal">normal</link> (non-differencing)
4629 hard disks that have differencing hard disks based on them. Snapshots of
4630 such kind can be discarded only when every normal hard disk has either
4631 no children at all or exactly one child. In the former case, the normal
4632 hard disk simply becomes unused (i.e. not attached to any VM). In the
4633 latter case, it receives all the changes strored in the child hard disk,
4634 and then it replaces the child hard disk in the configuration of the
4635 corresponding snapshot or machine.
4636
4637 Also, you cannot discard the snapshot if it stores hard disks
4638 (of any type) having differencing child hard disks that belong
4639 to other machines. Such snapshots can be only discarded after
4640 you discard all snapshots of other machines containing "foreign"
4641 child disks, or detach these "foreign" child disks from machines
4642 they are attached to.
4643
4644 One particular example of the snapshot storing normal hard disks
4645 is the first snapshot of a virtual machine that had normal hard
4646 disks attached when taking the snapshot. Be careful when
4647 discarding such snapshots because this implicitly commits
4648 changes (made since the snapshot being discarded has been taken)
4649 to normal hard disks (as described above), which may be not what
4650 you want.
4651
4652 The virtual machine is put to
4653 the <link to="MachineState::Discarding">Discarding</link> state until
4654 the discard operation is completed.
4655
4656 <note>
4657 The machine must not be running, otherwise the operation
4658 will fail.
4659 </note>
4660
4661 <note>
4662 Child hard disks of all normal hard disks of the discarded snapshot
4663 must be <link to="IHardDisk::accessible">accessible</link> for this
4664 operation to succeed. In particular, this means that all virtual
4665 machines, whose hard disks are directly or indirectly based on the
4666 hard disks of discarded snapshot, must be powered off.
4667 </note>
4668 <note>
4669 Merging hard disk contents can be very time and disk space
4670 consuming, if these disks are big in size and have many
4671 children. However, if the snapshot being discarded is the last
4672 (head) snapshot on the branch, the operation will be rather
4673 quick.
4674 </note>
4675 <note>
4676 Note that discarding the current snapshot
4677 will imlicitly call <link to="IMachine::saveSettings()"/> to
4678 make all current machine settings permanent.
4679 </note>
4680 </desc>
4681 <param name="id" type="uuid" dir="in">
4682 <desc>UUID of the snapshot to discard.</desc>
4683 </param>
4684 <param name="progress" type="IProgress" dir="return">
4685 <desc>Progress object to track the operation completion.</desc>
4686 </param>
4687 </method>
4688
4689 <method name="discardCurrentState">
4690 <desc>
4691 This operation is similar to <link to="#discardSnapshot()"/> but
4692 affects the current machine state. This means that the state stored in
4693 the current snapshot will become a new current state, and all current
4694 settings of the machine and changes stored in differencing hard disks
4695 will be lost.
4696
4697 After this operation is successfully completed, new empty differencing
4698 hard disks are created for all normal hard disks of the machine.
4699
4700 If the current snapshot of the machine is an online snapshot, the
4701 machine will go to the <link to="MachineState::Saved"> saved
4702 state</link>, so that the next time it is powered on, the execution
4703 state will be restored from the current snapshot.
4704
4705 <note>
4706 The machine must not be running, otherwise the operation will fail.
4707 </note>
4708
4709 <note>
4710 If the machine state is <link to="MachineState::Saved">Saved</link>
4711 prior to this operation, the saved state file will be implicitly
4712 discarded (as if <link to="IConsole::discardSavedState()"/> were
4713 called).
4714 </note>
4715
4716 </desc>
4717 <param name="progress" type="IProgress" dir="return">
4718 <desc>Progress object to track the operation completion.</desc>
4719 </param>
4720 </method>
4721
4722 <method name="discardCurrentSnapshotAndState">
4723 <desc>
4724
4725 This method is equivalent to
4726 doing <link to="#discardSnapshot">discardSnapshot</link>
4727 (<link
4728 to="IMachine::currentSnapshot">currentSnapshot</link>.<link
4729 to="ISnapshot::id">id()</link>, ...) followed by
4730 <link to="#discardCurrentState()"/>.
4731
4732 As a result, the machine will be fully restored from the
4733 snapshot preceeding the current snapshot, while both the current
4734 snapshot and the current machine state will be discarded.
4735
4736 If the current snapshot is the first snapshot of the machine (i.e. it
4737 has the only snapshot), the current machine state will be
4738 discarded <b>before</b> discarding the snapshot. In other words, the
4739 machine will be restored from its last snapshot, before discarding
4740 it. This differs from performing a single
4741 <link to="#discardSnapshot()"/> call (note that no
4742 <link to="#discardCurrentState()"/> will be possible after it) to the
4743 effect that the latter will preserve the current state instead of
4744 discarding it.
4745
4746 Unless explicitly mentioned otherwise, all remarks and
4747 limitations of the above two methods also apply to this method.
4748
4749 <note>
4750 The machine must not be running, otherwise the operation
4751 will fail.
4752 </note>
4753
4754 <note>
4755 If the machine state is <link to="MachineState::Saved">Saved</link>
4756 prior to this operation, the saved state file will be implicitly
4757 discarded (as if <link to="IConsole::discardSavedState()"/> were
4758 called).</note>
4759
4760 <note>
4761 This method is more efficient than calling two above
4762 methods separately: it requires less IPC calls and provides
4763 a single progress object.
4764 </note>
4765
4766 </desc>
4767 <param name="progress" type="IProgress" dir="return">
4768 <desc>Progress object to track the operation completion.</desc>
4769 </param>
4770 </method>
4771
4772 <method name="registerCallback">
4773 <desc>
4774 Registers a new console callback on this instance. The methods of the
4775 callback interface will be called by this instance when the appropriate
4776 event occurs.
4777 </desc>
4778 <param name="callback" type="IConsoleCallback" dir="in"/>
4779 </method>
4780
4781 <method name="unregisterCallback">
4782 <desc>
4783 Unregisters the console callback previously registered using
4784 <link to="#registerCallback"/>.
4785 </desc>
4786 <param name="callback" type="IConsoleCallback" dir="in"/>
4787 </method>
4788 </interface>
4789
4790 <!--
4791 // IHost
4792 /////////////////////////////////////////////////////////////////////////
4793 -->
4794
4795 <interface
4796 name="IHostDVDDrive" extends="$unknown"
4797 uuid="21f86694-202d-4ce4-8b05-a63ff82dbf4c"
4798 wsmap="managed"
4799 >
4800 <desc>
4801 The IHostDVDDrive interface represents the physical CD/DVD drive
4802 hardware on the host. Used indirectly in <link to="IHost::DVDDrives"/>.
4803 </desc>
4804
4805 <attribute name="name" type="wstring" readonly="yes">
4806 <desc>
4807 Returns the platform-specific device identifier.
4808 On DOS-like platforms, it is a drive name (e.g. R:).
4809 On Unix-like platforms, it is a device name (e.g. /dev/hdc).
4810 </desc>
4811 </attribute>
4812 <attribute name="description" type="wstring" readonly="yes">
4813 <desc>
4814 Returns a human readable description for the drive. This
4815 description usually contains the product and vendor name. A
4816 @c null string is returned if the description is not available.
4817 </desc>
4818 </attribute>
4819 <attribute name="udi" type="wstring" readonly="yes">
4820 <desc>
4821 Returns the unique device identifier for the drive. This
4822 attribute is reserved for future use instead of
4823 <link to="#name"/>. Currently it is not used and may return
4824 @c null on some platforms.
4825 </desc>
4826 </attribute>
4827
4828 </interface>
4829
4830 <enumerator
4831 name="IHostDVDDriveEnumerator" type="IHostDVDDrive"
4832 uuid="1ed7cfaf-c363-40df-aa4e-89c1afb7d96b"
4833 />
4834
4835 <collection
4836 name="IHostDVDDriveCollection" type="IHostDVDDrive"
4837 enumerator="IHostDVDDriveEnumerator"
4838 uuid="1909c533-1a1e-445f-a4e1-a267cffc30ed"
4839 readonly="yes"
4840 >
4841 <method name="findByName">
4842 <desc>
4843 Searches this collection for a host drive with the given name.
4844 <note>
4845 The method returns an error if the given name does not
4846 correspond to any host drive in the collection.
4847 </note>
4848 </desc>
4849 <param name="name" type="wstring" dir="in">
4850 <desc>Name of the host drive to search for</desc>
4851 </param>
4852 <param name="drive" type="IHostDVDDrive" dir="return">
4853 <desc>Found host drive object</desc>
4854 </param>
4855 </method>
4856 </collection>
4857
4858 <interface
4859 name="IHostFloppyDrive" extends="$unknown"
4860 uuid="b6a4d1a9-4221-43c3-bd52-021a5daa9ed2"
4861 wsmap="managed"
4862 >
4863 <desc>
4864 The IHostFloppyDrive interface represents the physical floppy drive
4865 hardware on the host. Used indirectly in <link to="IHost::floppyDrives"/>.
4866 </desc>
4867 <attribute name="name" type="wstring" readonly="yes">
4868 <desc>
4869 Returns the platform-specific device identifier.
4870 On DOS-like platforms, it is a drive name (e.g. A:).
4871 On Unix-like platforms, it is a device name (e.g. /dev/fd0).
4872 </desc>
4873 </attribute>
4874 <attribute name="description" type="wstring" readonly="yes">
4875 <desc>
4876 Returns a human readable description for the drive. This
4877 description usually contains the product and vendor name. A
4878 @c null string is returned if the description is not available.
4879 </desc>
4880 </attribute>
4881 <attribute name="udi" type="wstring" readonly="yes">
4882 <desc>
4883 Returns the unique device identifier for the drive. This
4884 attribute is reserved for future use instead of
4885 <link to="#name"/>. Currently it is not used and may return
4886 @c null on some platforms.
4887 </desc>
4888 </attribute>
4889 </interface>
4890
4891 <enumerator
4892 name="IHostFloppyDriveEnumerator" type="IHostFloppyDrive"
4893 uuid="ce04c924-4f54-432a-9dec-11fddc3ea875"
4894 />
4895
4896 <collection
4897 name="IHostFloppyDriveCollection" type="IHostFloppyDrive"
4898 enumerator="IHostFloppyDriveEnumerator"
4899 uuid="fd84bb86-c59a-4037-a557-755ff263a460"
4900 readonly="yes"
4901 >
4902 <method name="findByName">
4903 <desc>
4904 Searches this collection for a host drive with the given name.
4905 <note>
4906 The method returns an error if the given name does not
4907 correspond to any host drive in the collection.
4908 </note>
4909 </desc>
4910 <param name="name" type="wstring" dir="in">
4911 <desc>Name of the host drive to search for</desc>
4912 </param>
4913 <param name="drive" type="IHostFloppyDrive" dir="return">
4914 <desc>Found host drive object</desc>
4915 </param>
4916 </method>
4917 </collection>
4918
4919 <interface
4920 name="IHostNetworkInterface" extends="$unknown"
4921 uuid="F4512D7C-B074-4e97-99B8-6D2BD27C3F5A"
4922 wsmap="managed"
4923 >
4924 <attribute name="name" type="wstring" readonly="yes">
4925 <desc>Returns the host network interface name.</desc>
4926 </attribute>
4927
4928 <attribute name="id" type="uuid" readonly="yes">
4929 <desc>Returns the interface UUID.</desc>
4930 </attribute>
4931 </interface>
4932
4933 <enumerator
4934 name="IHostNetworkInterfaceEnumerator" type="IHostNetworkInterface"
4935 uuid="7B52FEF7-56E8-4aec-92F5-15E6D11EC630"
4936 />
4937
4938 <collection
4939 name="IHostNetworkInterfaceCollection" type="IHostNetworkInterface"
4940 enumerator="IHostNetworkInterfaceEnumerator"
4941 uuid="BF1D41F2-B97B-4314-A0FB-D4823AF42FB5"
4942 readonly="yes"
4943 >
4944 <method name="findByName">
4945 <desc>
4946 Searches this collection for a host network interface with the given name.
4947 <note>
4948 The method returns an error if the given name does not
4949 correspond to any host network interface in the collection.
4950 </note>
4951 </desc>
4952 <param name="name" type="wstring" dir="in">
4953 <desc>Name of the host network interface to search for.</desc>
4954 </param>
4955 <param name="networkInterface" type="IHostNetworkInterface" dir="return">
4956 <desc>Found host network interface object.</desc>
4957 </param>
4958 </method>
4959 <method name="findById">
4960 <desc>
4961 Searches this collection for a host network interface with the given GUID.
4962 <note>
4963 The method returns an error if the given GUID does not
4964 correspond to any host network interface in the collection.
4965 </note>
4966 </desc>
4967 <param name="id" type="uuid" dir="in">
4968 <desc>GUID of the host network interface to search for.</desc>
4969 </param>
4970 <param name="networkInterface" type="IHostNetworkInterface" dir="return">
4971 <desc>Found host network interface object.</desc>
4972 </param>
4973 </method>
4974 </collection>
4975
4976 <interface
4977 name="IHost" extends="$unknown"
4978 uuid="489fb370-c227-4d43-9761-ceb28484fd9f"
4979 wsmap="managed"
4980 >
4981 <desc>
4982 The IHost interface represents the physical machine that this VirtualBox
4983 installation runs on.
4984
4985 An object implementing this interface is returned by the
4986 <link to="IVirtualBox::host" /> attribute. This interface contains
4987 read-only information about the host's physical hardware (such as what
4988 processors, and disks are available, what the host operating system is,
4989 and so on) and also allows for manipulating some of the host's hardware,
4990 such as global USB device filters and host interface networking.
4991
4992 </desc>
4993 <attribute name="DVDDrives" type="IHostDVDDriveCollection" readonly="yes">
4994 <desc>List of DVD drives available on the host.</desc>
4995 </attribute>
4996
4997 <attribute name="floppyDrives" type="IHostFloppyDriveCollection" readonly="yes">
4998 <desc>List of floppy drives available on the host.</desc>
4999 </attribute>
5000
5001 <attribute name="USBDevices" type="IHostUSBDeviceCollection" readonly="yes">
5002 <desc>
5003 List of USB devices currently attached to the host.
5004 Once a new device is physically attached to the host computer,
5005 it appears in this list and remains there until detached.
5006
5007 <note>
5008 This method may set a @ref com_warnings "warning result code".
5009 </note>
5010 <note>
5011 If USB functionality is not avaliable in the given edition of
5012 VirtualBox, this method will set the result code to @c E_NOTIMPL.
5013 </note>
5014 </desc>
5015 </attribute>
5016
5017 <attribute name="USBDeviceFilters" type="IHostUSBDeviceFilterCollection" readonly="yes">
5018 <desc>
5019 List of USB device filters in action.
5020 When a new device is physically attached to the host computer,
5021 filters from this list are applied to it (in order they are stored
5022 in the list). The first matched filter will determine the
5023 <link to="IHostUSBDeviceFilter::action">action</link>
5024 performed on the device.
5025
5026 Unless the device is ignored by these filters, filters of all
5027 currently running virtual machines
5028 (<link to="IUSBController::deviceFilters"/>) are applied to it.
5029
5030 <note>
5031 This method may set a @ref com_warnings "warning result code".
5032 </note>
5033 <note>
5034 If USB functionality is not avaliable in the given edition of
5035 VirtualBox, this method will set the result code to @c E_NOTIMPL.
5036 </note>
5037
5038 <see>IHostUSBDeviceFilter, USBDeviceState</see>
5039 </desc>
5040 </attribute>
5041
5042 <attribute name="networkInterfaces" type="IHostNetworkInterfaceCollection" readonly="yes">
5043 <desc>List of host network interfaces currently defined on the host.</desc>
5044 </attribute>
5045
5046 <attribute name="processorCount" type="unsigned long" readonly="yes">
5047 <desc>Number of (logical) CPUs installed in the host system.</desc>
5048 </attribute>
5049
5050 <attribute name="processorOnlineCount" type="unsigned long" readonly="yes">
5051 <desc>Number of (logical) CPUs online in the host system.</desc>
5052 </attribute>
5053
5054 <method name="getProcessorSpeed">
5055 <desc>Query the (approximate) maximum speed of a specified host CPU in Megahertz.</desc>
5056 <param name="cpuId" type="unsigned long" dir="in">
5057 <desc>
5058 Identifier of the CPU.
5059 </desc>
5060 </param>
5061 <param name="speed" type="unsigned long" dir="return">
5062 <desc>
5063 Speed value. 0 is returned if value is not known or @a cpuId is
5064 invalid.
5065 </desc>
5066 </param>
5067 </method>
5068
5069 <method name="getProcessorDescription">
5070 <desc>Query the model string of a specified host CPU.</desc>
5071 <param name="cpuId" type="unsigned long" dir="in">
5072 <desc>
5073 Identifier of the CPU.
5074 </desc>
5075 </param>
5076 <param name="description" type="wstring" dir="return">
5077 <desc>
5078 Model string. A NULL string is returned if value is not known or
5079 @a cpuId is invalid.
5080 </desc>
5081 </param>
5082 </method>
5083
5084 <attribute name="memorySize" type="unsigned long" readonly="yes">
5085 <desc>Amount of system memory in megabytes installed in the host system.</desc>
5086 </attribute>
5087
5088 <attribute name="memoryAvailable" type="unsigned long" readonly="yes">
5089 <desc>Available system memory in the host system.</desc>
5090 </attribute>
5091
5092 <attribute name="operatingSystem" type="wstring" readonly="yes">
5093 <desc>Name of the host system's operating system.</desc>
5094 </attribute>
5095
5096 <attribute name="OSVersion" type="wstring" readonly="yes">
5097 <desc>Host operating system's version string.</desc>
5098 </attribute>
5099
5100 <attribute name="UTCTime" type="long long" readonly="yes">
5101 <desc>Returns the current host time in milliseconds since 1970-01-01 UTC.</desc>
5102 </attribute>
5103
5104<if target="midl">
5105 <method name="createHostNetworkInterface">
5106 <desc>
5107 Creates a new adapter for Host Interface Networking.
5108 </desc>
5109 <param name="name" type="wstring" dir="in">
5110 <desc>
5111 Adapter name.
5112 </desc>
5113 </param>
5114 <param name="hostInterface" type="IHostNetworkInterface" dir="out">
5115 <desc>
5116 Created host interface object.
5117 </desc>
5118 </param>
5119 <param name="progress" type="IProgress" dir="return">
5120 <desc>
5121 Progress object to track the operation completion.
5122 </desc>
5123 </param>
5124 </method>
5125 <method name="removeHostNetworkInterface">
5126 <desc>
5127 Removes the given host network interface.
5128 </desc>
5129 <param name="id" type="uuid" dir="in">
5130 <desc>
5131 Adapter GUID.
5132 </desc>
5133 </param>
5134 <param name="hostInterface" type="IHostNetworkInterface" dir="out">
5135 <desc>
5136 Removed host interface object.
5137 </desc>
5138 </param>
5139 <param name="progress" type="IProgress" dir="return">
5140 <desc>
5141 Progress object to track the operation completion.
5142 </desc>
5143 </param>
5144 </method>
5145</if>
5146
5147 <method name="createUSBDeviceFilter">
5148 <desc>
5149 Creates a new USB device filter. All attributes except
5150 the filter name are set to <tt>null</tt> (any match),
5151 <i>active</i> is <tt>false</tt> (the filter is not active).
5152
5153 The created filter can be added to the list of filters using
5154 <link to="#insertUSBDeviceFilter()"/>.
5155
5156 <see>#USBDeviceFilters</see>
5157 </desc>
5158 <param name="name" type="wstring" dir="in">
5159 <desc>
5160 Filter name. See <link to="IHostUSBDeviceFilter::name"/>
5161 for more info.
5162 </desc>
5163 </param>
5164 <param name="filter" type="IHostUSBDeviceFilter" dir="return">
5165 <desc>Created filter object.</desc>
5166 </param>
5167 </method>
5168
5169 <method name="insertUSBDeviceFilter">
5170 <desc>
5171 Inserts the given USB device to the specified position
5172 in the list of filters.
5173
5174 Positions are numbered starting from <tt>0</tt>. If the specified
5175 position is equal to or greater than the number of elements in
5176 the list, the filter is added to the end of the collection.
5177
5178 <note>
5179 Duplicates are not allowed, so an attempt to insert a
5180 filter that is already in the list, will return an
5181 error.
5182 </note>
5183 <note>
5184 This method may set a @ref com_warnings "warning result code".
5185 </note>
5186 <note>
5187 If USB functionality is not avaliable in the given edition of
5188 VirtualBox, this method will set the result code to @c E_NOTIMPL.
5189 </note>
5190
5191 <see>#USBDeviceFilters</see>
5192 </desc>
5193 <param name="position" type="unsigned long" dir="in">
5194 <desc>Position to insert the filter to.</desc>
5195 </param>
5196 <param name="filter" type="IHostUSBDeviceFilter" dir="in">
5197 <desc>USB device filter to insert.</desc>
5198 </param>
5199 </method>
5200
5201 <method name="removeUSBDeviceFilter">
5202 <desc>
5203 Removes a USB device filter from the specified position in the
5204 list of filters.
5205
5206 Positions are numbered starting from <tt>0</tt>. Specifying a
5207 position equal to or greater than the number of elements in
5208 the list will produce an error.
5209
5210 <note>
5211 This method may set a @ref com_warnings "warning result code".
5212 </note>
5213 <note>
5214 If USB functionality is not avaliable in the given edition of
5215 VirtualBox, this method will set the result code to @c E_NOTIMPL.
5216 </note>
5217
5218 <see>#USBDeviceFilters</see>
5219 </desc>
5220 <param name="position" type="unsigned long" dir="in">
5221 <desc>Position to remove the filter from.</desc>
5222 </param>
5223 <param name="filter" type="IHostUSBDeviceFilter" dir="return">
5224 <desc>Removed USB device filter.</desc>
5225 </param>
5226 </method>
5227
5228 </interface>
5229
5230 <!--
5231 // ISystemProperties
5232 /////////////////////////////////////////////////////////////////////////
5233 -->
5234
5235 <interface
5236 name="ISystemProperties"
5237 extends="$unknown"
5238 uuid="12c2e31e-247f-4d51-82e5-5b9d4a6c7d5b"
5239 wsmap="managed"
5240 >
5241 <desc>
5242 The ISystemProperties interface represents global properties
5243 of the given VirtualBox installation.
5244
5245 These properties define limits and default values for various
5246 attributes and parameters. Most of the properties are read-only, but some can be
5247 changed by a user.
5248 </desc>
5249
5250 <attribute name="minGuestRAM" type="unsigned long" readonly="yes">
5251 <desc>Minium guest system memory in Megabytes.</desc>
5252 </attribute>
5253
5254 <attribute name="maxGuestRAM" type="unsigned long" readonly="yes">
5255 <desc>Maximum guest system memory in Megabytes.</desc>
5256 </attribute>
5257
5258 <attribute name="minGuestVRAM" type="unsigned long" readonly="yes">
5259 <desc>Minimum guest video memory in Megabytes.</desc>
5260 </attribute>
5261
5262 <attribute name="maxGuestVRAM" type="unsigned long" readonly="yes">
5263 <desc>Maximum guest video memory in Megabytes.</desc>
5264 </attribute>
5265
5266 <attribute name="maxVDISize" type="unsigned long long" readonly="yes">
5267 <desc>Maximum size of a virtual disk image in Megabytes.</desc>
5268 </attribute>
5269
5270 <attribute name="networkAdapterCount" type="unsigned long" readonly="yes">
5271 <desc>
5272 Number of network adapters associated with every
5273 <link to="IMachine"/> instance.
5274 </desc>
5275 </attribute>
5276
5277 <attribute name="serialPortCount" type="unsigned long" readonly="yes">
5278 <desc>
5279 Number of serial ports associated with every
5280 <link to="IMachine"/> instance.
5281 </desc>
5282 </attribute>
5283
5284 <attribute name="parallelPortCount" type="unsigned long" readonly="yes">
5285 <desc>
5286 Number of parallel ports associated with every
5287 <link to="IMachine"/> instance.
5288 </desc>
5289 </attribute>
5290
5291 <attribute name="maxBootPosition" type="unsigned long" readonly="yes">
5292 <desc>
5293 Maximum device position in the boot order. This value corresponds
5294 to the total number of devices a machine can boot from, to make it
5295 possible to include all possible devices to the boot list.
5296 <see><link to="IMachine::setBootOrder()"/></see>
5297 </desc>
5298 </attribute>
5299
5300 <attribute name="defaultVDIFolder" type="wstring">
5301 <desc>
5302 Full path to the default directory used to create new or open
5303 existing virtual disk images when an image file name contains no
5304 path.
5305
5306 The initial value of this property is
5307 <tt>&lt;</tt><link to="IVirtualBox::homeFolder">
5308 VirtualBox_home</link><tt>&gt;/VDI</tt>.
5309
5310 <note>
5311 Setting this property to <tt>null</tt> will restore the
5312 initial value.
5313 </note>
5314 <note>
5315 When settings this property, the specified path can be
5316 absolute (full path) or relative
5317 to the <link to="IVirtualBox::homeFolder">
5318 VirtualBox home directory</link>.
5319 When reading this property, a full path is
5320 always returned.
5321 </note>
5322 <note>
5323 The specified path may not exist, it will be created
5324 when necessary.
5325 </note>
5326
5327 <see>
5328 <link to="IVirtualBox::createHardDisk()"/>,
5329 <link to="IVirtualBox::openVirtualDiskImage()"/>
5330 </see>
5331 </desc>
5332 </attribute>
5333
5334 <attribute name="defaultMachineFolder" type="wstring">
5335 <desc>
5336 Full path to the default directory used to create new or open
5337 existing machines when a settings file name contains no
5338 path.
5339
5340 The initial value of this property is
5341 <tt>&lt;</tt><link to="IVirtualBox::homeFolder">
5342 VirtualBox_home</link><tt>&gt;/Machines</tt>.
5343
5344 <note>
5345 Setting this property to <tt>null</tt> will restore the
5346 initial value.
5347 </note>
5348 <note>
5349 When settings this property, the specified path can be
5350 absolute (full path) or relative
5351 to the <link to="IVirtualBox::homeFolder">
5352 VirtualBox home directory</link>.
5353 When reading this property, a full path is
5354 always returned.
5355 </note>
5356 <note>
5357 The specified path may not exist, it will be created
5358 when necessary.
5359 </note>
5360
5361 <see>
5362 <link to="IVirtualBox::createMachine()"/>,
5363 <link to="IVirtualBox::openMachine()"/>
5364 </see>
5365 </desc>
5366 </attribute>
5367
5368 <attribute name="remoteDisplayAuthLibrary" type="wstring">
5369 <desc>
5370 Library that provides authentication for VRDP clients. The library
5371 is used if a virtual machine's authentication type is set to "external"
5372 in the VM RemoteDisplay configuration.
5373
5374 The system library extension (".DLL" or ".so") must be omitted.
5375 A full path can be specified; if not, then the library must reside on the
5376 system's default library path.
5377
5378 The default value of this property is <tt>VRDPAuth</tt>. There is a library
5379 of that name in one of the default VirtualBox library directories.
5380
5381 For details about VirtualBox authentication libraries and how to implement
5382 them, please refer to the VirtualBox manual.
5383
5384 <note>
5385 Setting this property to <tt>null</tt> will restore the
5386 initial value.
5387 </note>
5388 </desc>
5389 </attribute>
5390
5391 <attribute name="webServiceAuthLibrary" type="wstring">
5392 <desc>
5393 Library that provides authentication for webservice clients. The library
5394 is used if a virtual machine's authentication type is set to "external"
5395 in the VM RemoteDisplay configuration and will be called from
5396 within the <link to="IWebsessionManager::logon" /> implementation.
5397
5398 As opposed to <link to="ISystemProperties::remoteDisplayAuthLibrary" />,
5399 there is no per-VM setting for this, as the webservice is a global
5400 resource (if it is running). Only for this setting (for the webservice),
5401 setting this value to a literal "null" string disables authentication,
5402 meaning that <link to="IWebsessionManager::logon" /> will always succeed,
5403 no matter what user name and password are supplied.
5404
5405 The initial value of this property is <tt>VRDPAuth</tt>,
5406 meaning that the webservice will use the same authentication
5407 library that is used by default for VBoxVRDP (again, see
5408 <link to="ISystemProperties::remoteDisplayAuthLibrary" />).
5409 The format and calling convetion of authentication libraries
5410 is the same for the webservice as it is for VBoxVRDP.
5411
5412 </desc>
5413 </attribute>
5414
5415 <attribute name="HWVirtExEnabled" type="boolean">
5416 <desc>
5417 This specifies the default value for hardware virtualization
5418 extensions. If enabled, virtual machines will make use of
5419 hardware virtualization extensions such as Intel VT-x and
5420 AMD-V by default. This value can be overridden by each VM
5421 using their <link to="IMachine::HWVirtExEnabled" /> property.
5422 </desc>
5423 </attribute>
5424
5425 <attribute name="LogHistoryCount" type="unsigned long">
5426 <desc>
5427 This value specifies how many old release log files are kept.
5428 </desc>
5429 </attribute>
5430 </interface>
5431
5432 <!--
5433 // IGuest
5434 /////////////////////////////////////////////////////////////////////////
5435 -->
5436
5437 <interface
5438 name="IGuestOSType" extends="$unknown"
5439 uuid="da94f478-1f37-4726-b750-2235950dc2fe"
5440 wsmap="struct"
5441 >
5442 <desc>
5443 <note>With the COM API, this is an interface like all the others. With the webservice,
5444 this is mapped to a structure, so querying the attribute will not return an object,
5445 but a complete structure.</note>
5446 </desc>
5447
5448 <attribute name="id" type="wstring" readonly="yes">
5449 <desc>Guest OS identifier string.</desc>
5450 </attribute>
5451
5452 <attribute name="description" type="wstring" readonly="yes">
5453 <desc>Human readable description of the guest OS.</desc>
5454 </attribute>
5455
5456 <attribute name="recommendedRAM" type="unsigned long" readonly="yes">
5457 <desc>Recommended RAM size in Megabytes.</desc>
5458 </attribute>
5459
5460 <attribute name="recommendedVRAM" type="unsigned long" readonly="yes">
5461 <desc>Recommended video RAM size in Megabytes.</desc>
5462 </attribute>
5463
5464 <attribute name="recommendedHDD" type="unsigned long" readonly="yes">
5465 <desc>Recommended hard disk size in Megabytes.</desc>
5466 </attribute>
5467 </interface>
5468
5469
5470 <enumerator
5471 name="IGuestOSTypeEnumerator" type="IGuestOSType"
5472 uuid="a3335e02-4669-4e3c-80c7-c4dc7056a07c"
5473 />
5474
5475 <collection
5476 name="IGuestOSTypeCollection" type="IGuestOSType" enumerator="IGuestOSTypeEnumerator"
5477 uuid="a5e36749-a610-498b-9f29-2e36c1042d65"
5478 readonly="yes"
5479 />
5480
5481 <interface
5482 name="IGuest" extends="$unknown"
5483 uuid="d8556fca-81bc-12af-fca3-365528fa38ca"
5484
5485 wsmap="suppress"
5486 >
5487 <desc>
5488 The IGuest interface represents information about the operating system
5489 running inside the virtual machine. Used in
5490 <link to="IConsole::guest"/>.
5491
5492 IGuest provides information about the guest operating system, whether
5493 Guest Additions are installed and other OS-specific virtual machine
5494 properties.
5495 </desc>
5496
5497 <attribute name="OSTypeId" type="wstring" readonly="yes">
5498 <desc>
5499 Identifier of the Guest OS type as reported by the Guest
5500 Additions.
5501 You may use <link to="IVirtualBox::getGuestOSType"/> to obtain
5502 an IGuestOSType object representing details about the given
5503 Guest OS type.
5504 <note>
5505 If Guest Additions are not installed, this value will be
5506 the same as <link to="IMachine::OSTypeId"/>.
5507 </note>
5508 </desc>
5509 </attribute>
5510
5511 <attribute name="additionsActive" type="boolean" readonly="yes">
5512 <desc>
5513 Flag whether the Guest Additions are installed and active
5514 in which case their version will be returned by the
5515 <link to="#additionsVersion"/> property.
5516 </desc>
5517 </attribute>
5518
5519 <attribute name="additionsVersion" type="wstring" readonly="yes">
5520 <desc>
5521 Version of the Guest Additions (3 decimal numbers separated
5522 by dots) or empty when the Additions are not installed. The
5523 Additions may also report a version but yet not be active as
5524 the version might be refused by VirtualBox (incompatible) or
5525 other failures occured.
5526 </desc>
5527 </attribute>
5528
5529 <attribute name="supportsSeamless" type="boolean" readonly="yes">
5530 <desc>
5531 Flag whether seamless guest display rendering (seamless desktop
5532 integration) is supported.
5533 </desc>
5534 </attribute>
5535
5536 <attribute name="supportsGraphics" type="boolean" readonly="yes">
5537 <desc>
5538 Flag whether the guest is in graphics mode. If it is not, then
5539 seamless rendering will not work, resize hints are not immediately
5540 acted on and guest display resizes are probably not initiated by
5541 the guest additions.
5542 </desc>
5543 </attribute>
5544
5545 <attribute name="memoryBalloonSize" type="unsigned long">
5546 <desc>Guest system memory balloon size in megabytes.</desc>
5547 </attribute>
5548
5549 <attribute name="statisticsUpdateInterval" type="unsigned long">
5550 <desc>Interval to update guest statistics in seconds.</desc>
5551 </attribute>
5552
5553 <method name="setCredentials">
5554 <desc>
5555 Store login credentials that can be queried by guest operating
5556 systems with Additions installed. The credentials are transient
5557 to the session and the guest may also choose to erase them. Note
5558 that the caller cannot determine whether the guest operating system
5559 has queried or made use of the credentials.
5560 </desc>
5561 <param name="userName" type="wstring" dir="in">
5562 <desc>User name string, can be empty</desc>
5563 </param>
5564 <param name="password" type="wstring" dir="in">
5565 <desc>Password string, can be empty</desc>
5566 </param>
5567 <param name="domain" type="wstring" dir="in">
5568 <desc>Domain name (guest logon scheme specific), can be emtpy</desc>
5569 </param>
5570 <param name="allowInteractiveLogon" type="boolean" dir="in">
5571 <desc>
5572 Flag whether the guest should alternatively allow the user to
5573 interactively specify different credentials. This flag might
5574 not be supported by all versions of the Additions.
5575 </desc>
5576 </param>
5577 </method>
5578
5579 <method name="getStatistic">
5580 <desc>
5581 Query specified guest statistics as reported by the VirtualBox Additions.
5582 </desc>
5583 <param name="cpuId" type="unsigned long" dir="in">
5584 <desc>Virtual CPU id; not relevant for all statistic types</desc>
5585 </param>
5586 <param name="statistic" type="GuestStatisticType" dir="in">
5587 <desc>Statistic type.</desc>
5588 </param>
5589 <param name="statVal" type="unsigned long" dir="out">
5590 <desc>Statistics value</desc>
5591 </param>
5592 </method>
5593
5594 </interface>
5595
5596
5597 <!--
5598 // IProgress
5599 /////////////////////////////////////////////////////////////////////////
5600 -->
5601
5602 <enumerator
5603 name="IProgressEnumerator" type="IProgress"
5604 uuid="e0380522-4ef1-48f4-856c-e455177ccb2d"
5605 />
5606
5607 <collection
5608 name="IProgressCollection" type="IProgress" enumerator="IProgressEnumerator"
5609 uuid="78B76A7C-F0F2-467c-9F0E-F089A54EE957"
5610 readonly="yes"
5611 />
5612
5613 <interface
5614 name="IProgress" extends="$unknown"
5615 uuid="10CC03A1-717E-429b-992D-C67B56175A51"
5616 wsmap="managed"
5617 >
5618 <desc>
5619 The IProgress interface represents a task progress object that allows
5620 to wait for the completion of some asynchronous task.
5621
5622 The task consists of one or more operations that run sequentially,
5623 one after one. There is an individual percent of completion of the
5624 current operation and the percent of completion of the task as a
5625 whole. Similarly, you can wait for the completion of a particular
5626 operation or for the completion of the whole task.
5627
5628 Every operation is identified by a number (starting from 0)
5629 and has a separate description.
5630 </desc>
5631
5632 <attribute name="id" type="uuid" readonly="yes">
5633 <desc>ID of the task.</desc>
5634 </attribute>
5635
5636 <attribute name="description" type="wstring" readonly="yes">
5637 <desc>Description of the task.</desc>
5638 </attribute>
5639
5640 <attribute name="initiator" type="$unknown" readonly="yes">
5641 <desc>Initiator of the task.</desc>
5642 </attribute>
5643
5644 <attribute name="cancelable" type="boolean" readonly="yes">
5645 <desc>Whether the task can be interrupted.</desc>
5646 </attribute>
5647
5648 <attribute name="percent" type="long" readonly="yes">
5649 <desc>
5650 Current task progress value in percent.
5651 This value depends on how many operations are already complete.
5652 </desc>
5653 </attribute>
5654
5655 <attribute name="completed" type="boolean" readonly="yes">
5656 <desc>Whether the task has been completed.</desc>
5657 </attribute>
5658
5659 <attribute name="canceled" type="boolean" readonly="yes">
5660 <desc>Whether the task has been canceled.</desc>
5661 </attribute>
5662
5663 <attribute name="resultCode" type="result" readonly="yes">
5664 <desc>
5665 Result code of the progress task.
5666 Valid only if <link to="#completed"/> is true.
5667 </desc>
5668 </attribute>
5669
5670 <attribute name="errorInfo" type="IVirtualBoxErrorInfo" readonly="yes">
5671 <desc>
5672 Extended information about the unsuccessful result of the
5673 progress operation. May be NULL when no extended information
5674 is available.
5675 Valid only if <link to="#completed"/> is true and
5676 <link to="#resultCode"/> indicates a failure.
5677 </desc>
5678 </attribute>
5679
5680 <attribute name="operationCount" type="unsigned long" readonly="yes">
5681 <desc>
5682 Number of operations this task is divided into.
5683 Every task consists of at least one operation.
5684 </desc>
5685 </attribute>
5686
5687 <attribute name="operation" type="unsigned long" readonly="yes">
5688 <desc>Number of the operation being currently executed.</desc>
5689 </attribute>
5690
5691 <attribute name="operationDescription" type="wstring" readonly="yes">
5692 <desc>
5693 Description of the operation being currently executed.
5694 </desc>
5695 </attribute>
5696
5697 <attribute name="operationPercent" type="long" readonly="yes">
5698 <desc>Current operation progress value in percent.</desc>
5699 </attribute>
5700
5701 <method name="waitForCompletion">
5702 <desc>
5703 Waits until the task is done (including all operations) with a
5704 given timeout.
5705 </desc>
5706 <param name="timeout" type="long" dir="in">
5707 <desc>
5708 Timeout value in milliseconds.
5709 Specify -1 for an indefinite wait.
5710 </desc>
5711 </param>
5712 </method>
5713
5714 <method name="waitForOperationCompletion">
5715 <desc>
5716 Waits until the given operation is done with a given timeout.
5717 </desc>
5718 <param name="operation" type="unsigned long" dir="in">
5719 <desc>
5720 Number of the operation to wait for.
5721 Must be less than <link to="#operationCount"/>.
5722 </desc>
5723 </param>
5724 <param name="timeout" type="long" dir="in">
5725 <desc>
5726 Timeout value in milliseconds.
5727 Specify -1 for an indefinite wait.
5728 </desc>
5729 </param>
5730 </method>
5731
5732 <method name="cancel">
5733 <desc>
5734 Cancels the task.
5735 <note>
5736 If <link to="#cancelable"/> is <tt>false</tt>, then
5737 this method will fail.
5738 </note>
5739 </desc>
5740 </method>
5741
5742 </interface>
5743
5744
5745 <!--
5746 // ISnapshot
5747 /////////////////////////////////////////////////////////////////////////
5748 -->
5749
5750 <enumerator
5751 name="ISnapshotEnumerator" type="ISnapshot"
5752 uuid="25cfa2a4-1f1d-4f05-9658-b7a5894ef1a3"
5753 />
5754
5755 <collection
5756 name="ISnapshotCollection" type="ISnapshot"
5757 enumerator="ISnapshotEnumerator"
5758 uuid="23852e3c-94cd-4801-ab05-ed35675b3894"
5759 readonly="yes"
5760 />
5761
5762 <interface
5763 name="ISnapshot" extends="$unknown"
5764 uuid="9f1bbf79-13b0-4da2-abba-4a992c65c083"
5765 wsmap="managed"
5766 >
5767 <desc>
5768 The ISnapshot interface represents a snapshot of the virtual
5769 machine.
5770
5771 The <i>snapshot</i> stores all the information about a virtual
5772 machine necessary to bring it to exactly the same state as it was at
5773 the time of taking the snapshot. The snapshot includes:
5774
5775 <ul>
5776 <li>all settings of the virtual machine (i.e. its hardware
5777 configuration: RAM size, attached hard disks, etc.)
5778 </li>
5779 <li>the execution state of the virtual machine (memory contents,
5780 CPU state, etc.).
5781 </li>
5782 </ul>
5783
5784 Snapshots can be <i>offline</i> (taken when the VM is powered off)
5785 or <i>online</i> (taken when the VM is running). The execution
5786 state of the offline snapshot is called a <i>zero execution state</i>
5787 (it doesn't actually contain any information about memory contents
5788 or the CPU state, assuming that all hardware is just powered off).
5789
5790 <h3>Snapshot branches</h3>
5791
5792 Snapshots can be chained. Chained snapshots form a branch where
5793 every next snapshot is based on the previous one. This chaining is
5794 mostly related to hard disk branching (see <link to="IHardDisk"/>
5795 description). This means that every time a new snapshot is created,
5796 a new differencing hard disk is implicitly created for all normal
5797 hard disks attached to the given virtual machine. This allows to
5798 fully restore hard disk contents when the machine is later reverted
5799 to a particular snapshot.
5800
5801 In the current implelemtation, multiple snapshot branches within one
5802 virtual machine are not allowed. Every machine has a signle branch,
5803 and <link to="IConsole::takeSnapshot()"/> operation adds a new
5804 snapshot to the top of that branch.
5805
5806 Existings snapshots can be discarded using
5807 <link to="IConsole::discardSnapshot()"/>.
5808
5809 <h3>Current snapshot</h3>
5810
5811 Every virtual machine has a current snapshot, identified by
5812 <link to="IMachine::currentSnapshot"/>. This snapshot is used as
5813 a base for the <i>current machine state</i> (see below), to the effect
5814 that all normal hard disks of the machine and its execution
5815 state are based on this snapshot.
5816
5817 In the current implementation, the current snapshot is always the
5818 last taken snapshot (i.e. the head snapshot on the branch) and it
5819 cannot be changed.
5820
5821 The current snapshot is <tt>null</tt> if the machine doesn't have
5822 snapshots at all; in this case the current machine state is just
5823 current settings of this machine plus its current execution state.
5824
5825 <h3>Current machine state</h3>
5826
5827 The current machine state is what represened by IMachine instances got
5828 directly from IVirtualBox
5829 using <link
5830 to="IVirtualBox::getMachine()">getMachine()</link>, <link
5831 to="IVirtualBox::findMachine()">findMachine()</link>, etc. (as opposed
5832 to instances returned by <link to="ISnapshot::machine"/>). This state
5833 is always used when the machine is <link to="IConsole::powerUp"> powered
5834 on</link>.
5835
5836 The current machine state also includes the current execution state.
5837 If the machine is being currently executed
5838 (<link to="IMachine::state"/> is <link to="MachineState::Running"/>
5839 and above), its execution state is just what's happening now.
5840 If it is powered off (<link to="MachineState::PoweredOff"/> or
5841 <link to="MachineState::Aborted"/>), it has a zero execution state.
5842 If the machine is saved (<link to="MachineState::Saved"/>), its
5843 execution state is what saved in the execution state file
5844 (<link to="IMachine::stateFilePath"/>).
5845
5846 If the machine is in the saved state, then, next time it is powered
5847 on, its execution state will be fully restored from the saved state
5848 file and the execution will continue from the point where the state
5849 was saved.
5850
5851 Similarly to snapshots, the current machine state can be discarded
5852 using <link to="IConsole::discardCurrentState()"/>.
5853
5854 <h3>Taking and discarding snapshots</h3>
5855
5856 The table below briefly explains the meaning of every snapshot
5857 operation:
5858
5859 <table>
5860 <tr><th>Operation</th><th>Meaning</th><th>Remarks</th></tr>
5861
5862 <tr><td><link to="IConsole::takeSnapshot()"/></td>
5863
5864 <td>Save the current state of the virtual machine, including all
5865 settings, contents of normal hard disks and the current modifications
5866 to immutable hard disks (for online snapshots)</td>
5867
5868 <td>The current state is not changed (the machine will continue
5869 execution if it is being executed when the snapshot is
5870 taken)</td></tr>
5871
5872 <tr><td><link to="IConsole::discardSnapshot()"/></td>
5873
5874 <td>Forget the state of the virtual machine stored in the snapshot:
5875 dismiss all saved settings and delete the saved execution state (for
5876 online snapshots)</td>
5877
5878 <td>Other snapshots (including child snapshots, if any) and the
5879 current state are not directly affected</td></tr>
5880
5881 <tr><td><link to="IConsole::discardCurrentState()"/></td>
5882
5883 <td>Restore the current state of the virtual machine from the state
5884 stored in the current snapshot, including all settings and hard disk
5885 contents</td>
5886
5887 <td>The current state of the machine existed prior to this operation
5888 is lost</td></tr>
5889
5890 <tr><td><link to="IConsole::discardCurrentSnapshotAndState()"/></td>
5891
5892 <td>Completely revert the virtual machine to the state it was in
5893 before the current snapshot has been taken</td>
5894
5895 <td>The current state, as well as the current snapshot, are
5896 lost</td></tr>
5897
5898 </table>
5899
5900 </desc>
5901
5902 <attribute name="id" type="uuid" readonly="yes">
5903 <desc>UUID of the snapshot.</desc>
5904 </attribute>
5905
5906 <attribute name="name" type="wstring">
5907 <desc>Short name of the snapshot.</desc>
5908 </attribute>
5909
5910 <attribute name="description" type="wstring">
5911 <desc>Optional description of the snapshot.</desc>
5912 </attribute>
5913
5914 <attribute name="timeStamp" type="long long" readonly="yes">
5915 <desc>
5916 Time stamp of the snapshot, in milliseconds since 1970-01-01 UTC.
5917 </desc>
5918 </attribute>
5919
5920 <attribute name="online" type="boolean" readonly="yes">
5921 <desc>
5922 <tt>true</tt> if this snapshot is an online snapshot and
5923 <tt>false</tt> otherwise.
5924
5925 <note>
5926 When this attribute is <tt>true</tt>, the
5927 <link to="IMachine::stateFilePath"/> attribute of the
5928 <link to="#machine"/> object associated with this snapshot
5929 will point to the saved state file. Otherwise, it will be
5930 <tt>null</tt>.
5931 </note>
5932 </desc>
5933 </attribute>
5934
5935 <attribute name="machine" type="IMachine" readonly="yes">
5936 <desc>
5937 Virtual machine this snapshot is taken on. This object
5938 stores all settings the machine had when taking this snapshot.
5939 <note>
5940 The returned machine object is immutable, i.e. no
5941 any settings can be changed.
5942 </note>
5943 </desc>
5944 </attribute>
5945
5946 <attribute name="parent" type="ISnapshot" readonly="yes">
5947 <desc>
5948 Parent snapshot (a snapshot this one is based on).
5949 <note>
5950 It's not an error to read this attribute on a snapshot
5951 that doesn't have a parent -- a null object will be
5952 returned to indicate this.
5953 </note>
5954 </desc>
5955 </attribute>
5956
5957 <attribute name="children" type="ISnapshotCollection" readonly="yes">
5958 <desc>
5959 Child snapshots (all snapshots having this one as a parent).
5960 <note>
5961 In the current implementation, there can be only one
5962 child snapshot, or no children at all, meaning this is the
5963 last (head) snapshot.
5964 </note>
5965 </desc>
5966 </attribute>
5967
5968 </interface>
5969
5970 <!--
5971 // IHardDisk
5972 /////////////////////////////////////////////////////////////////////////
5973 -->
5974
5975 <enum
5976 name="HardDiskStorageType"
5977 uuid="48138584-ad99-479d-a36f-eb82a7663685"
5978 >
5979 <desc>
5980 Virtual hard disk storage type.
5981 <see>IHardDisk</see>
5982 </desc>
5983
5984 <const name="VirtualDiskImage" value="0">
5985 <desc>
5986 Virtual Disk Image, VDI (a regular file in the file
5987 system of the host OS, see <link to="IVirtualDiskImage"/>)
5988 </desc>
5989 </const>
5990 <const name="ISCSIHardDisk" value="1">
5991 <desc>
5992 iSCSI Remote Disk (a disk accessed via the Internet
5993 SCSI protocol over a TCP/IP network, see
5994 <link to="IISCSIHardDisk"/>)
5995 </desc>
5996 </const>
5997 <const name="VMDKImage" value="2">
5998 <desc>
5999 VMware Virtual Machine Disk image (a regular file in the file
6000 system of the host OS, see <link to="IVMDKImage"/>)
6001 </desc>
6002 </const>
6003 <const name="CustomHardDisk" value="3">
6004 <desc>
6005 Disk formats supported through plugins (see
6006 <link to="ICustomHardDisk"/>)
6007 </desc>
6008 </const>
6009 <const name="VHDImage" value="4">
6010 <desc>
6011 Virtual PC Virtual Machine Disk image (a regular file in the file
6012 system of the host OS, see <link to="IVHDImage"/>)
6013 </desc>
6014 </const>
6015 </enum>
6016
6017 <enum
6018 name="HardDiskType"
6019 uuid="a348fafd-a64e-4643-ba65-eb3896bd7e0a"
6020 >
6021 <desc>
6022 Virtual hard disk type.
6023 <see>IHardDisk</see>
6024 </desc>
6025
6026 <const name="Normal" value="0">
6027 <desc>
6028 Normal hard disk (attached directly or indirectly, preserved
6029 when taking snapshots).
6030 </desc>
6031 </const>
6032 <const name="Immutable" value="1">
6033 <desc>
6034 Immutable hard disk (attached indirectly, changes are wiped out
6035 after powering off the virtual machine).
6036 </desc>
6037 </const>
6038 <const name="Writethrough" value="2">
6039 <desc>
6040 Write through hard disk (attached directly, ignored when
6041 taking snapshots).
6042 </desc>
6043 </const>
6044 </enum>
6045
6046 <interface
6047 name="IHardDiskAttachment" extends="$unknown"
6048 uuid="c0ffe596-21c6-4797-8d8a-b47b66881e7a"
6049 wsmap="struct"
6050 >
6051 <desc>
6052 <note>With the COM API, this is an interface like all the others. With the webservice,
6053 this is mapped to a structure, so querying the attribute will not return an object,
6054 but a complete structure.</note>
6055 </desc>
6056 <attribute name="hardDisk" type="IHardDisk" readonly="yes">
6057 <desc>Harddisk object this attachment is about.</desc>
6058 </attribute>
6059
6060 <attribute name="bus" type="StorageBus" readonly="yes">
6061 <desc>Disk controller ID of this attachment.</desc>
6062 </attribute>
6063
6064 <attribute name="channel" type="long" readonly="yes">
6065 <desc>Channel number of the attachment.</desc>
6066 </attribute>
6067
6068 <attribute name="device" type="long" readonly="yes">
6069 <desc>Device slot number of the attachment.</desc>
6070 </attribute>
6071
6072 </interface>
6073
6074 <enumerator
6075 name="IHardDiskAttachmentEnumerator" type="IHardDiskAttachment"
6076 uuid="9955e486-2f0b-432a-99e4-0ebbd338875e"
6077 />
6078
6079 <collection
6080 name="IHardDiskAttachmentCollection" type="IHardDiskAttachment"
6081 enumerator="IHardDiskAttachmentEnumerator"
6082 uuid="8f727842-bb77-45d4-92de-4ec14bf613c9"
6083 readonly="yes"
6084 />
6085
6086 <enumerator
6087 name="IHardDiskEnumerator" type="IHardDisk"
6088 uuid="b976f97b-cdb8-47e3-9860-084031cbd533"
6089 />
6090
6091 <collection
6092 name="IHardDiskCollection" type="IHardDisk"
6093 enumerator="IHardDiskEnumerator"
6094 uuid="43EAC2BC-5C61-40fa-BC38-46DE2C7DB6BB"
6095 readonly="yes"
6096 />
6097
6098 <interface
6099 name="IHardDisk" extends="$unknown"
6100 uuid="FD443EC1-000F-4F5B-9282-D72760A66916"
6101 wsmap="managed"
6102 >
6103 <desc>
6104 The IHardDisk interface represents a virtual hard disk drive
6105 used by virtual machines.
6106
6107 The virtual hard disk drive virtualizes the hard disk hardware and
6108 looks like a regular hard disk inside the virtual machine and
6109 the guest OS.
6110
6111 <h3>Storage Types</h3>
6112
6113 The <link to="HardDiskStorageType">storage type</link> of the
6114 virtual hard disk determines where and how it stores its data
6115 (sectors). Currently, the following storage types are supported:
6116
6117 <ul>
6118
6119 <li>
6120 <i>Virtual Disk Image (VDI)</i>, a regular file in the file system
6121 of the host OS (represented by the <link to="IVirtualDiskImage"/>
6122 interface). This file has a special format optimized so that unused
6123 sectors of data occupy much less space than on a physical hard disk.
6124 </li>
6125
6126 <li>
6127 <i>iSCSI Remote Disk</i>, a disk accessed via the Internet SCSI
6128 protocol over a TCP/IP network link (represented by the
6129 <link to="IISCSIHardDisk"/> interface).
6130 </li>
6131
6132 <li>
6133 <i>VMware VMDK image</i>, a regular file in the file system of the
6134 host OS (represented by the <link to="IVMDKImage"/> interface).
6135 Note that the regular file may be just a descriptor referring to
6136 further files, so don't make assumptions about the OS representation
6137 of a VMDK image.
6138 </li>
6139
6140 <li>
6141 <i>Custom HardDisk</i>, a disk accessed via a plugin which is loaded
6142 when the disk is accessed (represented by the
6143 <link to="ICustomHardDisk"/> interface).
6144 </li>
6145
6146 <li>
6147 <i>Virtual PC VHD Image</i>, a regular file in the file system of the
6148 host OS (represented by the <link to="IVHDImage"/> interface).
6149 </li>
6150
6151 </ul>
6152
6153 The storage type of the particular hard disk object is indicated by
6154 the <link to="#storageType"/> property.
6155
6156 Each storage type is represented by its own interface (as shown
6157 above), that allows to query and set properties and perform
6158 operations specific to that storage type. When an IHardDisk object
6159 reports it uses some particular storage type, it also guaranteed to
6160 support the corresponding interface which you can query. And vice
6161 versa, every object that supports a storage-specific interface, also
6162 supports IHardDisk.
6163
6164 <h3>Virtual Hard Disk Types</h3>
6165
6166 The <link to="HardDiskType">type</link> of the virtual hard disk
6167 determines how it is attached to the virtual machine when you call
6168 <link to="IMachine::attachHardDisk()"/> and what happens to it when
6169 a <link to="ISnapshot">snapshot</link> of the virtual machine is
6170 taken.
6171
6172 There are three types of virtual hard disks:
6173
6174 <ul>
6175 <li><i>Normal</i></li>
6176 <li><i>Immutable</i></li>
6177 <li><i>Writethrough</i></li>
6178 </ul>
6179
6180 The virtual disk type is indicated by the <link to="#type"/>
6181 property. Each of the above types is described in detail further
6182 down.
6183
6184 There is also a forth, "hidden" virtual disk type:
6185 <i>Differencing</i>. It is "hidden" because you cannot directly
6186 create hard disks of this type -- they are automatically created by
6187 VirtualBox when necessary.
6188
6189 <b>Differencing Hard Disks</b>
6190
6191 Unlike disks of other types (that are similar to real hard disks),
6192 the differencing hard disk does not store the full range of data
6193 sectors. Instead, it stores only a subset of sectors of some other
6194 disk that were changed since the differencing hard disk has been
6195 created. Thus, every differencing hard disk has a parent hard disk
6196 it is linked to, and represents the difference between the initial
6197 and the current hard disk state. A differencing hard disk can be
6198 linked to another differencing hard disk -- this way, differencing
6199 hard disks can form a branch of changes. More over, a given virtual
6200 hard disk can have more than one differencing hard disk linked to
6201 it.
6202
6203 A disk the differencing hard disk is linked to (or, in other words,
6204 based on) is called a <i>parent</i> hard disk and is accessible through
6205 the <link to="#parent"/> property. Similarly, all existing differencing
6206 hard disks for a given parent hard disk are called its <i>child</i> hard
6207 disks (and accessible through the <link to="#children"/> property).
6208
6209 All differencing hard disks use Virtual Disk Image files to store
6210 changed sectors. They have the <link to="#type"/> property set to
6211 Normal, but can be easily distinguished from normal hard disks using
6212 the <link to="#parent"/> property: all differencing hard disks have
6213 a parent, while all normal hard disks don't.
6214
6215 When the virtual machine makes an attempt to read a sector that is
6216 missing in a differencing hard disk, its parent is accessed to
6217 resolve the sector in question. This process continues until the
6218 sector is found, or until the root hard disk is encountered, which
6219 always contains all sectors. As a consequence,
6220
6221 <ul>
6222
6223 <li>
6224 The virtual hard disk geometry seen by the guest OS is
6225 always defined by the root hard disk.
6226 </li>
6227
6228 <li>
6229 All hard disks on a branch, up to the root, must be
6230 <link to="#accessible"/> for a given differencing hard disk in order
6231 to let it function properly when the virtual machine is
6232 running.
6233 </li>
6234
6235 </ul>
6236
6237 Differencing hard disks can be implicitly created by VirtualBox in
6238 the following cases:
6239
6240 <ul>
6241
6242 <li>
6243 When a hard disk is <i>indirectly</i> attached to the virtual
6244 machine using <link to="IMachine::attachHardDisk()"/>. In this
6245 case, all disk writes performed by the guest OS will go to the
6246 created diffferencing hard disk, as opposed to the
6247 <i>direct</i> attachment, where all changes are written to the
6248 attached hard disk itself.
6249 </li>
6250
6251 <li>
6252 When a <link to="ISnapshot">snapshot</link> of the virtual machine
6253 is taken. After that, disk writes to hard disks the differencing
6254 ones have been created for, will be directed to those differencing
6255 hard disks, to preserve the contents of the original disks.
6256 </li>
6257
6258 </ul>
6259
6260 Whether to create a differencing hard disk or not depends on the
6261 type of the hard disk attached to the virtual machine. This is
6262 explained below.
6263
6264 Note that in the current implementation, only the
6265 <link to="VirtualDiskImage"/> storage type is used to
6266 represent differencing hard disks. In other words, all
6267 differencing hard disks are <link to="IVirtualDiskImage"/>
6268 objects.
6269
6270 <b>Normal Hard Disks</b>
6271
6272 Normal hard disks are the most commonly used virtual hard disk. A
6273 normal hard disk is attached to the machine directly if it is not
6274 already attached to some other machine. Otherwise, an attempt to
6275 make an indirect attachment through a differencing hard disk will be
6276 made. This attempt will fail if the hard disk is attached to a
6277 virtual machine without snapshots (because it's impossible to create
6278 a differencing hard disk based on a hard disk that is subject to
6279 change).
6280
6281 When an indirect attachment takes place, in the simplest case, where
6282 the machine the hard disk is being attached to doesn't have
6283 snapshots, the differencing hard disk will be based on the normal
6284 hard disk being attached. Otherwise, the first (i.e. the most
6285 recent) descendant of the given normal hard disk found in the
6286 current snapshot branch (starting from the current snapshot and
6287 going up to the root) will be actually used as a base.
6288
6289 Note that when you detach an indirectly attached hard disk from the
6290 machine, the created differencing hard disk image is simply
6291 <b>deleted</b>, so <b>all changes are lost</b>. If you attach the
6292 same disk again, a clean differencing disk will be created based on
6293 the most recent child, as described above.
6294
6295 When taking a snapshot, the contents of all normal hard disks (and
6296 all differencing disks whose roots are normal hard disks) currently
6297 attached to the virtual machine is preserved by creating
6298 differencing hard disks based on them.
6299
6300 <b>Immutable Hard Disks</b>
6301
6302 Immutable hard disks can be used to provide a sort of read-only
6303 access. An immutable hard disk is always attached indirectly. The
6304 created differencing hard disk is automatically wiped out (recreated
6305 from scratch) every time you power off the virtual machine. Thus,
6306 the contents of the immutable disk remains unchanged between runs.
6307
6308 Detaching an immutable hard disk deletes the differencing disk
6309 created for it, with the same effect as in case with normal hard
6310 disks.
6311
6312 When taking a snapshot, the differencing part of the immutable
6313 hard disk is cloned (i.e. copied to a separate Virtual Disk Image
6314 file) without any changes. This is necessary to preserve the exact
6315 virtual machine state when you create an online snapshot.
6316
6317 <b>Writethrough Hard Disks</b>
6318
6319 Hard disks of this type are always attached directly. This means
6320 that every given writethrough hard disk can be attached only to one
6321 virtual machine at a time.
6322
6323 It is impossible to take a snapshot of a virtual machine with the
6324 writethrough hard disk attached, because taking a snapshot implies
6325 saving the execution state and preserving the contents of all hard
6326 disks, but writethrough hard disks cannot be preserved. Preserving
6327 hard disk contents is necessary to ensure the guest OS stored in the
6328 snapshot will get the same hard disk state when restored, which is
6329 especially important when it has open file handles or when there are
6330 cached files and directories stored in memory.
6331
6332 <h3>Creating, Opening and Registering Hard Disks</h3>
6333
6334 Non-differencing hard disks are either created from scratch using
6335 <link to="IVirtualBox::createHardDisk()"/> or opened from a VDI file
6336 using <link to="IVirtualBox::openVirtualDiskImage()"/> (only for hard
6337 disks using the VirtualDiskImage storage type). Once a hard disk is
6338 created or opened, it needs to be registered using
6339 <link to="IVirtualBox::registerHardDisk()"/> to make it available for
6340 attaching to virtual machines. See the documentation of individual
6341 interfaces for various storage types to get more information.
6342
6343 Differencing hard disks are never created explicitly and cannot
6344 be registered or unregistered; they are automatically registered
6345 upon creation and deregistered when deleted.
6346
6347 <h3>More about Indirect Hard Disk Attachments</h3>
6348
6349 Normally, when you attach a hard disk to the virtual machine, and then
6350 query the corresponding attachment using
6351 <link to="IMachine::getHardDisk()"/> or
6352 <link to="IMachine::hardDiskAttachments"/> you will get the same hard
6353 disk object, whose UUID you passed earlier to
6354 <link to="IMachine::attachHardDisk()"/>. However, when an indirect
6355 attachment takes place, calling <link to="IMachine::getHardDisk()"/>
6356 will return a differencing hard disk object, that is either based on the
6357 attached hard disk or on another differencing hard disk, the attached
6358 hard disk is eventually a root for (as described above). In both cases
6359 the returned hard disk object is the object the virtual machine actually
6360 uses to perform disk writes to.
6361
6362 Regardless of whether the attachment is direct or indirect, the
6363 <link to="#machineId"/> property of the attached disk will contain an
6364 UUID of the machine object <link to="IMachine::attachHardDisk()"/>
6365 has been called on.
6366
6367 Note that both <link to="IMachine::attachHardDisk()"/> and
6368 <link to="IMachine::detachHardDisk()"/> are <i>lazy</i> operations. In
6369 particular, this means that when an indirect attachment is made,
6370 differencing hard disks are not created until machine settings are
6371 committed using <link to="IMachine::saveSettings()"/>. Similarly, when a
6372 differencing hard disk is detached, it is not deleted until
6373 <link to="IMachine::saveSettings()"/> is called. Calling
6374 <link to="IMachine::discardSettings()"/> cancels all lazy attachments or
6375 detachments made since the last commit and effectively restores the
6376 previous set of hard disks.
6377
6378 <h3>Hard Disk Accessibility</h3>
6379
6380 The <link to="#accessible"/> attribute of the hard disk object
6381 defines the accessibility state of the respective hard disk storage
6382 (for example, the VDI file for IVirtualDiskImage objects). If the
6383 value of this attribute is <tt>false</tt> then some hard disk
6384 attributes may contain invalid or outdated values (for example, the
6385 virtual or the actual hard disk size) until a new accessibility
6386 check is done that returns <tt>true</tt> (see the attribute
6387 description for more details).
6388
6389 <note>
6390 Because of the possible slowness of the accessibility check,
6391 it is not implicitly performed upon the VirtualBox server startup
6392 (to prevent the application freeze). In partcular, this means that
6393 if you try to read hard disk properties that depend on the
6394 accessibility state without first reading the value of the
6395 <link to="#accessible"/> attribute and ensuring it's value is
6396 <tt>true</tt>, you will get wrong (zero) values.
6397 </note>
6398
6399 </desc>
6400
6401 <attribute name="id" type="uuid" readonly="yes">
6402 <desc>
6403
6404 UUID of the hard disk. For newly created hard disk objects,
6405 this value is a randomly generated UUID.
6406
6407 </desc>
6408 </attribute>
6409
6410 <attribute name="description" type="wstring">
6411 <desc>
6412
6413 Optional description of the hard disk. For a newly created hard
6414 disk, this value is <tt>null</tt>.
6415
6416 <note>For some storage types, reading this property is
6417 meaningless when <link to="#accessible"/> is <tt>false</tt>.
6418 Also, you cannot assign it a new value in this case.</note>
6419
6420 </desc>
6421 </attribute>
6422
6423 <attribute name="storageType" type="HardDiskStorageType" readonly="yes">
6424 <desc>
6425
6426 Storage type of this hard disk.
6427
6428 Storage type is defined when you open or create a new hard disk
6429 object.
6430
6431 </desc>
6432 </attribute>
6433
6434 <attribute name="location" type="wstring" readonly="yes">
6435 <desc>
6436
6437 Storage location of this hard disk. The returned string serves
6438 for informational purposes only. To access detailed information
6439 about the storage, query the appropriate storage-specific
6440 interface.
6441
6442 </desc>
6443 </attribute>
6444
6445 <attribute name="type" type="HardDiskType">
6446 <desc>
6447
6448 Type (behavior) of this hard disk. For a newly created or opened hard
6449 disk, this value is <link to="HardDiskType::Normal"/>.
6450
6451 <note>
6452 In the current implementation, this property can be
6453 changed only on an unregistered hard disk object. This may be
6454 changed later.
6455 </note>
6456
6457 </desc>
6458 </attribute>
6459
6460 <attribute name="parent" type="IHardDisk" readonly="yes">
6461 <desc>
6462
6463 Parent of this hard disk (a hard disk this one is directly based
6464 on).
6465
6466 Only differencing hard disks have parents, so a <tt>null</tt>
6467 object is returned for a hard disk of any other type.
6468 </desc>
6469 </attribute>
6470
6471 <attribute name="children" type="IHardDiskCollection" readonly="yes">
6472 <desc>
6473
6474 Children of this hard disk (all differencing hard disks for
6475 those this one is a parent). An empty collection is returned, if
6476 this hard disk doesn't have any children.
6477
6478 </desc>
6479 </attribute>
6480
6481 <attribute name="root" type="IHardDisk" readonly="yes">
6482 <desc>
6483
6484 Root hard disk of this hard disk. If this hard disk is a
6485 differencing hard disk, its root hard disk is the first disk on
6486 the branch. For all other types of hard disks, this property
6487 returns the hard disk object itself (i.e. the same object you
6488 read this property on).
6489
6490 </desc>
6491 </attribute>
6492
6493 <attribute name="accessible" type="boolean" readonly="yes">
6494 <desc>
6495
6496 Whether the hard disk storage is currently accessible or not.
6497 The storage, for example, can be unaccessible if it doesn't exist
6498 or if it is placed on a network resource that is not available
6499 by the time this attribute is read.
6500
6501 In the current implementation, the value of this property is
6502 also <tt>false</tt> if this hard disk is attached to a running
6503 virtual machine.
6504
6505 The accessibility check is performed automatically every time
6506 this attribute is read. You should keep it in mind that this check
6507 may be slow and can block the calling thread for a long time (for
6508 example, if the network resourse where the hard disk storage is
6509 located is down).
6510
6511 The following attributes of the hard disk object are considered
6512 to be invalid when this attribute is <tt>false</tt>:
6513 <ul>
6514 <li><link to="#size"/></li>
6515 <li><link to="#actualSize"/></li>
6516 </ul>
6517 Individual hard disk storage type interfaces may define
6518 additional attributes that depend on the accessibility state.
6519 </desc>
6520 </attribute>
6521
6522 <attribute name="allAccessible" type="boolean" readonly="yes">
6523 <desc>
6524
6525 Whether the whole hard disk branch, starting from this image and
6526 going through its ancestors up to the root, is accessible or
6527 not.
6528
6529 This property makes sense only for differencing hard disks. For
6530 all other types of hard disks it returns the same value as
6531 <link to="#accessible"/>.
6532
6533 </desc>
6534 </attribute>
6535
6536 <attribute name="lastAccessError" type="wstring" readonly="yes">
6537 <desc>
6538
6539 String describing the reason of inaccessibility of this hard
6540 disk after the last call to <link to="#accessible"/> that
6541 returned <tt>false</tt>. A <tt>null</tt> value of this property
6542 means that the last accessibility check returned <tt>true</tt>.
6543
6544 </desc>
6545 </attribute>
6546
6547 <attribute name="size" type="unsigned long long" readonly="yes">
6548 <desc>
6549
6550 Logical size of this hard disk (in megabytes), as reported to the
6551 guest OS running inside the vurtual machine this disk is
6552 attached to. The logical size is defined when the hard disk is
6553 created.
6554
6555 <note>Reading this property on a differencing hard disk will
6556 return the size of its root hard disk.</note>
6557
6558 <note>Reading this property is meaningless when
6559 <link to="#accessible"/> is <tt>false</tt></note>
6560
6561 </desc>
6562 </attribute>
6563
6564 <attribute name="actualSize" type="unsigned long long" readonly="yes">
6565 <desc>
6566
6567 Physical size of the storage used to store hard disk data (in
6568 bytes). This size is usually less than the logical size of the
6569 hard disk, depending on the storage type and on the size
6570 optimization method used for that storage.
6571
6572 <note>Reading this property is meaningless when
6573 <link to="#accessible"/> is <tt>false</tt></note>
6574
6575 </desc>
6576 </attribute>
6577
6578 <attribute name="machineId" type="uuid" readonly="yes">
6579 <desc>
6580
6581 UUID of the machine this hard disk is attached to (or a
6582 <tt>null</tt> UUID if it is not attached).
6583
6584 <note>Immutable hard disks are never attached directly, so this
6585 attribute is always <tt>null</tt> in this case.</note>
6586
6587 </desc>
6588 </attribute>
6589
6590 <attribute name="snapshotId" type="uuid" readonly="yes">
6591 <desc>
6592
6593 UUID of the <link to="ISnapshot">snapshot</link> this hard disk
6594 is associated with (or <tt>null</tt> UUID if it is not
6595 associated with any snapshot).
6596
6597 <note>
6598 This attribute is always <tt>null</tt> if <link to="#machineId"/>
6599 is <tt>null</tt>.
6600 </note>
6601
6602 <note>
6603 Writethrough hard disks are always attached directly and cannot be
6604 involved when taking snapshots, so this attribute is meaningless and
6605 therefore always <tt>null</tt>.
6606 </note>
6607
6608 </desc>
6609 </attribute>
6610
6611 <method name="cloneToImage">
6612
6613 <desc>
6614
6615 Starts creating a clone of this hard disk. The cloned hard disk
6616 will use the specified Virtual Disk Image file as a storage and
6617 will contain exactly the same sector data as the hard disk being
6618 cloned, except that a new UUID for the clone will be randomly
6619 generated.
6620
6621 The specified image file path can be absolute (full path) or
6622 relative to the <link to="IVirtualBox::homeFolder"> VirtualBox
6623 home directory</link>. If only a file name without any path is
6624 given, the <link to="ISystemProperties::defaultVDIFolder">
6625 default VDI folder</link> will be used as a path to the image
6626 file.
6627
6628 It is an error to use the object returned in the @a image
6629 parameter until the returned @a progress object reports success.
6630
6631 <note>In the current implementation, only non-differencing hard
6632 disks can be cloned.</note>
6633
6634 </desc>
6635
6636 <param name="filePath" type="wstring" dir="in">
6637 <desc>Path to a file where to store the cloned hard disk.</desc>
6638 </param>
6639 <param name="image" type="IVirtualDiskImage" dir="out">
6640 <desc>Cloned hard disk object.</desc>
6641 </param>
6642 <param name="progress" type="IProgress" dir="return">
6643 <desc>Progress object to track the operation completion.</desc>
6644 </param>
6645
6646 </method>
6647
6648 </interface>
6649
6650 <!--
6651 // IVirtualDiskImage
6652 /////////////////////////////////////////////////////////////////////////
6653 -->
6654
6655 <interface
6656 name="IVirtualDiskImage" extends="$unknown"
6657 uuid="a8265b5a-0d20-4a46-a02f-65693a4e8239"
6658 wsmap="managed"
6659 >
6660
6661 <desc>
6662 The IVirtualDiskImage interface represent a specific type of
6663 <link to="IHardDisk" /> that uses VDI image files.
6664
6665 The Virtual Disk Image (VDI) format is VirtualBox's native format for
6666 hard disk containers.
6667
6668 Objects that support this interface also support the
6669 <link to="IHardDisk"/> interface.
6670
6671 Hard disks using virtual disk images can be either opened using
6672 <link to="IVirtualBox::openHardDisk()"/> or created from
6673 scratch using <link to="IVirtualBox::createHardDisk()"/>.
6674
6675 When a new hard disk object is created from scratch, an image file for it
6676 is not automatically created. To do it, you need to specify a
6677 valid <link to="#filePath">file path</link>, and call
6678 <link to="#createFixedImage()"/> or <link to="#createDynamicImage()"/>.
6679 When it is done, the hard disk object can be registered by calling
6680 <link to="IVirtualBox::registerHardDisk()"/> and then
6681 <link to="IMachine::attachHardDisk()">attached</link> to
6682 virtual machines.
6683
6684 The <link to="IHardDisk::description">description</link> of the
6685 Virtual Disk Image is stored in the image file. For this reason,
6686 changing the value of this property requires the hard disk to be
6687 <link to="IHardDisk::accessible">accessible</link>. The description
6688 of a registered hard disk can be changed only if a virtual machine
6689 using it is not running.
6690
6691 </desc>
6692
6693 <attribute name="filePath" type="wstring">
6694 <desc>
6695
6696 Full file name of the virtual disk image of this hard disk. For
6697 newly created hard disk objects, this value is <tt>null</tt>.
6698
6699 When assigning a new path, it can be absolute (full path) or relative
6700 to the <link to="IVirtualBox::homeFolder"> VirtualBox home
6701 directory</link>. If only a file name without any path is given,
6702 the <link to="ISystemProperties::defaultVDIFolder"> default VDI
6703 folder</link> will be used as a path to the image file.
6704
6705 When reading this propery, a full path is always returned.
6706
6707 <note>
6708 This property cannot be changed when <link to="#created"/>
6709 returns <tt>true</tt>.
6710 </note>
6711
6712 </desc>
6713 </attribute>
6714
6715 <attribute name="created" type="boolean" readonly="yes">
6716 <desc>
6717
6718 Whether the virual disk image is created or not. For newly
6719 created hard disk objects or after a successful invocation of
6720 <link to="#deleteImage()"/>, this value is <tt>false</tt> until
6721 <link to="#createFixedImage()"/> or <link
6722 to="#createDynamicImage()"/> is called.
6723
6724 </desc>
6725 </attribute>
6726
6727 <method name="createDynamicImage">
6728
6729 <desc>
6730
6731 Starts creating a dymically expanding hard disk image in the
6732 background. The previous image associated with this object, if
6733 any, must be deleted using <link to="#deleteImage"/>, otherwise
6734 the operation will fail.
6735
6736 <note>After the returned progress object reports that the
6737 operation is complete, this hard disk object can be
6738 <link to="IVirtualBox::registerHardDisk()">registered</link>
6739 within this VirtualBox installation.</note>
6740
6741 </desc>
6742
6743 <param name="size" type="unsigned long long" dir="in">
6744 <desc>Maximum logical size of the hard disk in megabytes.</desc>
6745 </param>
6746 <param name="progress" type="IProgress" dir="return">
6747 <desc>Progress object to track the operation completion.</desc>
6748 </param>
6749
6750 </method>
6751
6752 <method name="createFixedImage">
6753 <desc>
6754
6755 Starts creating a fixed-size hard disk image in the background. The
6756 previous image, if any, must be deleted using
6757 <link to="#deleteImage"/>, otherwise the operation will fail.
6758
6759 <note>
6760 After the returned progress object reports that the
6761 operation is complete, this hard disk object can be
6762 <link to="IVirtualBox::registerHardDisk()">registered</link>
6763 within this VirtualBox installation.
6764 </note>
6765
6766 </desc>
6767
6768 <param name="size" type="unsigned long long" dir="in">
6769 <desc>Logical size of the hard disk in megabytes.</desc>
6770 </param>
6771 <param name="progress" type="IProgress" dir="return">
6772 <desc>Progress object to track the operation completion.</desc>
6773 </param>
6774
6775 </method>
6776
6777 <method name="deleteImage">
6778 <desc>
6779
6780 Deletes the existing hard disk image. The hard disk must not be
6781 registered within this VirtualBox installation, otherwise the
6782 operation will fail.
6783
6784 <note>
6785 After this operation succeeds, it will be impossible to
6786 register the hard disk until the image file is created
6787 again.
6788 </note>
6789
6790 <note>
6791 This operation is valid only for non-differencing hard disks, after
6792 they are unregistered using
6793 <link to="IVirtualBox::unregisterHardDisk()"/>.
6794 </note>
6795
6796 </desc>
6797 </method>
6798
6799 </interface>
6800
6801 <!--
6802 // IISCSIHardDisk
6803 /////////////////////////////////////////////////////////////////////////
6804 -->
6805
6806 <interface
6807 name="IISCSIHardDisk" extends="$unknown"
6808 uuid="003f6ca9-3257-4ef9-99c9-c66ce44576cb"
6809 wsmap="managed"
6810 >
6811
6812 <desc>
6813 THe IISCSIHardDisk interface represents a specific type of
6814 <link to="IHardDisk"/> that uses iSCSI.
6815
6816 The IISCSIHardDisk interface represents <link to="IHardDisk">virtual
6817 hard disks</link> that use the Internet SCSI (iSCSI) protocol to store
6818 hard disk data on remote machines.
6819
6820 Objects that support this interface also support the
6821 <link to="IHardDisk"/> interface.
6822
6823 iSCSI hard disks can be created using
6824 <link to="IVirtualBox::createHardDisk()"/>. When a new hard disk object
6825 is created, all its properties are uninitialized. After you assign some
6826 meaningful values to them, the hard disk object can be registered by
6827 calling <link to="IVirtualBox::registerHardDisk()"/> and
6828 then <link to="IMachine::attachHardDisk()">attached</link> to virtual
6829 machines.
6830
6831 The <link to="IHardDisk::description">description</link>
6832 of the iSCSI hard disk is stored in the VirtualBox
6833 configuration file, so it can be changed (at appropriate
6834 times) even when
6835 <link to="IHardDisk::accessible">accessible</link> returns
6836 <tt>false</tt>. However, the hard disk must not be
6837 attached to a running virtual machine.
6838
6839 <note>
6840 In the current imlementation, the type of all iSCSI hard disks
6841 is <link to="HardDiskType::Writethrough">Writethrough</link>
6842 and cannot be changed.
6843 </note>
6844
6845 </desc>
6846
6847 <attribute name="server" type="wstring">
6848 <desc>
6849
6850 iSCSI Server name (either a host name or an IP address). For
6851 newly created hard disk objects, this value is <tt>null</tt>.
6852
6853 </desc>
6854 </attribute>
6855
6856 <attribute name="port" type="unsigned short">
6857 <desc>
6858
6859 iSCSI Server port. For newly created hard disk objects, this
6860 value is <tt>0</tt>, which means the default port.
6861
6862 </desc>
6863 </attribute>
6864
6865 <attribute name="target" type="wstring">
6866 <desc>
6867
6868 iSCSI target name. For newly created hard disk objects, this
6869 value is <tt>null</tt>.
6870
6871 </desc>
6872 </attribute>
6873
6874 <attribute name="lun" type="unsigned long long">
6875 <desc>
6876
6877 Logical unit number for this iSCSI disk. For newly created hard
6878 disk objects, this value is <tt>0</tt>.
6879
6880 </desc>
6881 </attribute>
6882
6883 <attribute name="userName" type="wstring">
6884 <desc>
6885
6886 User name for accessing this iSCSI disk. For newly created hard
6887 disk objects, this value is <tt>null</tt>.
6888
6889 </desc>
6890 </attribute>
6891
6892 <attribute name="password" type="wstring">
6893 <desc>
6894
6895 User password for accessing this iSCSI disk. For newly created
6896 hard disk objects, this value is <tt>null</tt>.
6897
6898 </desc>
6899 </attribute>
6900
6901 </interface>
6902
6903 <!--
6904 // IVMDKImage
6905 /////////////////////////////////////////////////////////////////////////
6906 -->
6907
6908 <interface
6909 name="IVMDKImage" extends="$unknown"
6910 uuid="178398f5-8559-4fee-979e-420af5b53eef"
6911 wsmap="managed"
6912 >
6913 <desc>
6914 The IVMDKImage interface represents a specific type of
6915 <link to="IHardDisk"/> that uses VMDK image files.
6916
6917 The Virtual Machine Disk (VMDK) format is the industry standard format
6918 for virtual hard disk image files, which VirtualBox supports besides its
6919 own native VDI format.
6920
6921 Objects that support this interface also support the
6922 <link to="IHardDisk"/> interface.
6923
6924 Hard disks using VMDK images can be either opened using
6925 <link to="IVirtualBox::openHardDisk()"/> or created from
6926 scratch using <link to="IVirtualBox::createHardDisk()"/>.
6927
6928 When a new hard disk object is created from scratch, an image file for it
6929 is not automatically created. To do it, you need to specify a
6930 valid <link to="#filePath">file path</link>, and call
6931 <link to="#createFixedImage()"/> or <link to="#createDynamicImage()"/>.
6932 When it is done, the hard disk object can be registered by calling
6933 <link to="IVirtualBox::registerHardDisk()"/> and then
6934 <link to="IMachine::attachHardDisk()">attached</link> to
6935 virtual machines.
6936
6937 The <link to="IHardDisk::description">description</link>
6938 of the VMDK hard disk is stored in the VirtualBox
6939 configuration file, so it can be changed (at appropriate
6940 times) even when
6941 <link to="IHardDisk::accessible">accessible</link> returns
6942 <tt>false</tt>. However, the hard disk must not be
6943 attached to a running virtual machine.
6944
6945 <note>
6946 In the current imlementation, the type of all VMDK hard disks
6947 is <link to="HardDiskType::Writethrough">Writethrough</link> and cannot
6948 be changed.
6949 </note>
6950
6951 </desc>
6952
6953 <attribute name="filePath" type="wstring">
6954 <desc>
6955
6956 Full file name of the VMDK image of this hard disk. For
6957 newly created hard disk objects, this value is <tt>null</tt>.
6958
6959 When assigning a new path, it can be absolute (full path) or relative
6960 to the <link to="IVirtualBox::homeFolder"> VirtualBox home
6961 directory</link>. If only a file name without any path is given,
6962 the <link to="ISystemProperties::defaultVDIFolder"> default VDI
6963 folder</link> will be used as a path to the image file.
6964
6965 When reading this propery, a full path is always returned.
6966
6967 <note>
6968 This property cannot be changed when <link to="#created"/>
6969 returns <tt>true</tt>.
6970 </note>
6971
6972 </desc>
6973 </attribute>
6974
6975 <attribute name="created" type="boolean" readonly="yes">
6976 <desc>
6977
6978 Whether the virual disk image is created or not. For newly created
6979 hard disk objects or after a successful invocation of
6980 <link to="#deleteImage()"/>, this value is <tt>false</tt> until
6981 <link to="#createFixedImage()"/> or <link to="#createDynamicImage()"/>
6982 is called.
6983
6984 </desc>
6985 </attribute>
6986
6987 <method name="createDynamicImage">
6988
6989 <desc>
6990
6991 Starts creating a dymically expanding hard disk image in the
6992 background. The previous image associated with this object, if
6993 any, must be deleted using <link to="#deleteImage"/>, otherwise
6994 the operation will fail.
6995
6996 <note>
6997 After the returned progress object reports that the
6998 operation is complete, this hard disk object can be
6999 <link to="IVirtualBox::registerHardDisk()">registered</link> within
7000 this VirtualBox installation.
7001 </note>
7002
7003 </desc>
7004
7005 <param name="size" type="unsigned long long" dir="in">
7006 <desc>Maximum logical size of the hard disk in megabytes.</desc>
7007 </param>
7008 <param name="progress" type="IProgress" dir="return">
7009 <desc>Progress object to track the operation completion.</desc>
7010 </param>
7011
7012 </method>
7013
7014 <method name="createFixedImage">
7015 <desc>
7016
7017 Starts creating a fixed-size hard disk image in the background. The
7018 previous image, if any, must be deleted using
7019 <link to="#deleteImage"/>, otherwise the operation will fail.
7020
7021 <note>
7022 After the returned progress object reports that the
7023 operation is complete, this hard disk object can be
7024 <link to="IVirtualBox::registerHardDisk()">registered</link> within
7025 this VirtualBox installation.
7026 </note>
7027
7028 </desc>
7029
7030 <param name="size" type="unsigned long long" dir="in">
7031 <desc>Logical size of the hard disk in megabytes.</desc>
7032 </param>
7033 <param name="progress" type="IProgress" dir="return">
7034 <desc>Progress object to track the operation completion.</desc>
7035 </param>
7036
7037 </method>
7038
7039 <method name="deleteImage">
7040 <desc>
7041
7042 Deletes the existing hard disk image. The hard disk must not be
7043 registered within this VirtualBox installation, otherwise the
7044 operation will fail.
7045
7046 <note>
7047 After this operation succeeds, it will be impossible to register the
7048 hard disk until the image file is created again.
7049 </note>
7050
7051 <note>
7052 This operation is valid only for non-differencing hard disks, after
7053 they are unregistered using
7054 <link to="IVirtualBox::unregisterHardDisk()"/>.
7055 </note>
7056
7057 </desc>
7058 </method>
7059
7060 </interface>
7061
7062 <!--
7063 // ICustomHardDisk
7064 /////////////////////////////////////////////////////////////////////////
7065 -->
7066
7067 <interface
7068 name="ICustomHardDisk" extends="$unknown"
7069 uuid="a7b0236d-3ff4-47c0-a4aa-ddc4ddc1141a"
7070 wsmap="managed"
7071 >
7072 <desc>
7073 The ICustomHardDisk interface represents a specific type of
7074 <link to="IHardDisk" /> that is supported through a third-party plugin.
7075
7076 This interface allows to add support for custom hard disk formats to
7077 VirtualBox.
7078
7079 Objects that support this interface also support the
7080 <link to="IHardDisk"/> interface.
7081
7082 Hard disks using custom hard disk formats can be either opened using
7083 <link to="IVirtualBox::openHardDisk()"/> or created from scratch using
7084 <link to="IVirtualBox::createHardDisk()"/>.
7085
7086 When a new hard disk object is created from scratch, an image file for
7087 it is not automatically created. To do it, you need to specify a
7088 valid <link to="#location">location</link>, and call
7089 <link to="#createFixedImage()"/> or <link to="#createDynamicImage()"/>.
7090 When it is done, the hard disk object can be registered by calling
7091 <link to="IVirtualBox::registerHardDisk()"/> and then
7092 <link to="IMachine::attachHardDisk()">attached</link> to
7093 virtual machines.
7094
7095 The <link to="IHardDisk::description">description</link>
7096 of the hard disk is stored in the VirtualBox
7097 configuration file, so it can be changed (at appropriate
7098 times) even when
7099 <link to="IHardDisk::accessible">accessible</link> returns
7100 <tt>false</tt>. However, the hard disk must not be
7101 attached to a running virtual machine.
7102
7103 </desc>
7104
7105 <attribute name="location" type="wstring">
7106 <desc>
7107
7108 Location of this custom hard disk. For
7109 newly created hard disk objects, this value is <tt>null</tt>.
7110
7111 The format of the location string is plugin-dependent. In case if the
7112 plugin uses a regular file in the local file system to store hard disk
7113 data, then the location is a file path and the following rules apply:
7114 <ul>
7115 <li>
7116 when assigning a new path, it must be absolute (full path) or
7117 relative to the <link to="IVirtualBox::homeFolder"> VirtualBox
7118 home directory</link>. If only a file name without any path is
7119 given, the <link to="ISystemProperties::defaultVDIFolder"> default
7120 VDI folder</link> will be used as a path to the image file.
7121 </li>
7122 <li>
7123 When reading this propery, a full path is always returned.
7124 </li>
7125 </ul>
7126
7127 <note>
7128 This property cannot be changed when <link to="#created"/>
7129 returns <tt>true</tt>.
7130 </note>
7131
7132 </desc>
7133 </attribute>
7134
7135 <attribute name="format" type="wstring" readonly="yes">
7136 <desc>
7137
7138 The plugin name of the image file.
7139
7140 </desc>
7141 </attribute>
7142
7143 <attribute name="created" type="boolean" readonly="yes">
7144 <desc>
7145
7146 Whether the virual disk image is created or not. For newly created
7147 hard disk objects or after a successful invocation of
7148 <link to="#deleteImage()"/>, this value is <tt>false</tt> until
7149 <link to="#createFixedImage()"/> or <link to="#createDynamicImage()"/>
7150 is called.
7151
7152 </desc>
7153 </attribute>
7154
7155 <method name="createDynamicImage">
7156
7157 <desc>
7158
7159 Starts creating a dymically expanding hard disk image in the
7160 background. The previous image associated with this object, if
7161 any, must be deleted using <link to="#deleteImage"/>, otherwise
7162 the operation will fail.
7163
7164 <note>
7165 After the returned progress object reports that the
7166 operation is complete, this hard disk object can be
7167 <link to="IVirtualBox::registerHardDisk()">registered</link> within
7168 this VirtualBox installation.
7169 </note>
7170
7171 </desc>
7172
7173 <param name="size" type="unsigned long long" dir="in">
7174 <desc>Maximum logical size of the hard disk in megabytes.</desc>
7175 </param>
7176 <param name="progress" type="IProgress" dir="return">
7177 <desc>Progress object to track the operation completion.</desc>
7178 </param>
7179
7180 </method>
7181
7182 <method name="createFixedImage">
7183 <desc>
7184
7185 Starts creating a fixed-size hard disk image in the background. The
7186 previous image, if any, must be deleted using
7187 <link to="#deleteImage"/>, otherwise the operation will fail.
7188
7189 <note>
7190 After the returned progress object reports that the
7191 operation is complete, this hard disk object can be
7192 <link to="IVirtualBox::registerHardDisk()">registered</link> within
7193 this VirtualBox installation.
7194 </note>
7195
7196 </desc>
7197
7198 <param name="size" type="unsigned long long" dir="in">
7199 <desc>Logical size of the hard disk in megabytes.</desc>
7200 </param>
7201 <param name="progress" type="IProgress" dir="return">
7202 <desc>Progress object to track the operation completion.</desc>
7203 </param>
7204
7205 </method>
7206
7207 <method name="deleteImage">
7208 <desc>
7209
7210 Deletes the existing hard disk image. The hard disk must not be
7211 registered within this VirtualBox installation, otherwise the
7212 operation will fail.
7213
7214 <note>
7215 After this operation succeeds, it will be impossible to register the
7216 hard disk until the image file is created again.
7217 </note>
7218
7219 <note>
7220 This operation is valid only for non-differencing hard disks, after
7221 they are unregistered using
7222 <link to="IVirtualBox::unregisterHardDisk()"/>.
7223 </note>
7224
7225 </desc>
7226 </method>
7227
7228 </interface>
7229
7230 <!--
7231 // IVHDImage
7232 /////////////////////////////////////////////////////////////////////////
7233 -->
7234
7235 <interface
7236 name="IVHDImage" extends="$unknown"
7237 uuid="163b88c3-7552-424a-8205-daf17a004747"
7238 wsmap="managed"
7239 >
7240 <desc>
7241
7242 The IVHDImage interface represents <link to="IHardDisk">virtual hard
7243 disks</link> that use Virtual PC Virtual Machine Disk image files to store
7244 hard disk data.
7245
7246 Hard disks using VHD images can be either opened using
7247 <link to="IVirtualBox::openHardDisk()"/> or created from
7248 scratch using <link to="IVirtualBox::createHardDisk()"/>.
7249
7250 Objects that support this interface also support the
7251 <link to="IHardDisk"/> interface.
7252
7253 When a new hard disk object is created from scatch, an image file for it
7254 is not automatically created. To do it, you need to specify a
7255 valid <link to="#filePath">file path</link>, and call
7256 <link to="#createFixedImage()"/> or <link to="#createDynamicImage()"/>.
7257 When it is done, the hard disk object can be registered by calling
7258 <link to="IVirtualBox::registerHardDisk()"/> and then
7259 <link to="IMachine::attachHardDisk()">attached</link> to
7260 virtual machines.
7261
7262 The <link to="IHardDisk::description">description</link>
7263 of the VHD hard disk is stored in the VirtualBox
7264 configuration file, so it can be changed (at appropriate
7265 times) even when
7266 <link to="IHardDisk::accessible">accessible</link> returns
7267 <tt>false</tt>. However, the hard disk must not be
7268 attached to a running virtual machine.
7269
7270 <note>
7271 In the current imlementation, the type of all VHD hard disks
7272 is <link to="HardDiskType::Writethrough">Writethrough</link> and cannot
7273 be changed.
7274 </note>
7275
7276 </desc>
7277
7278 <attribute name="filePath" type="wstring">
7279 <desc>
7280
7281 Full file name of the VHD image of this hard disk. For
7282 newly created hard disk objects, this value is <tt>null</tt>.
7283
7284 When assigning a new path, it can be absolute (full path) or relative
7285 to the <link to="IVirtualBox::homeFolder"> VirtualBox home
7286 directory</link>. If only a file name without any path is given,
7287 the <link to="ISystemProperties::defaultVDIFolder"> default VDI
7288 folder</link> will be used as a path to the image file.
7289
7290 When reading this propery, a full path is always returned.
7291
7292 <note>
7293 This property cannot be changed when <link to="#created"/>
7294 returns <tt>true</tt>. In this case, the specified file name can be
7295 absolute (full path) or relative to
7296 the <link to="IVirtualBox::homeFolder"> VirtualBox home
7297 directory</link>. If only a file name without any path is given,
7298 the <link to="ISystemProperties::defaultVDIFolder"> default VDI
7299 folder</link> will be used as a path to the image file.
7300 </note>
7301
7302 </desc>
7303 </attribute>
7304
7305 <attribute name="created" type="boolean" readonly="yes">
7306 <desc>
7307
7308 Whether the virual disk image is created or not. For newly created
7309 hard disk objects or after a successful invocation of
7310 <link to="#deleteImage()"/>, this value is <tt>false</tt> until
7311 <link to="#createFixedImage()"/> or <link to="#createDynamicImage()"/>
7312 is called.
7313
7314 </desc>
7315 </attribute>
7316
7317 <method name="createDynamicImage">
7318
7319 <desc>
7320
7321 Starts creating a dymically expanding hard disk image in the
7322 background. The previous image associated with this object, if
7323 any, must be deleted using <link to="#deleteImage"/>, otherwise
7324 the operation will fail.
7325
7326 <note>
7327 After the returned progress object reports that the
7328 operation is complete, this hard disk object can be
7329 <link to="IVirtualBox::registerHardDisk()">registered</link> within
7330 this VirtualBox installation.
7331 </note>
7332
7333 </desc>
7334
7335 <param name="size" type="unsigned long long" dir="in">
7336 <desc>Maximum logical size of the hard disk in megabytes.</desc>
7337 </param>
7338 <param name="progress" type="IProgress" dir="return">
7339 <desc>Progress object to track the operation completion.</desc>
7340 </param>
7341
7342 </method>
7343
7344 <method name="createFixedImage">
7345 <desc>
7346
7347 Starts creating a fixed-size hard disk image in the background. The
7348 previous image, if any, must be deleted using
7349 <link to="#deleteImage"/>, otherwise the operation will fail.
7350
7351 <note>
7352 After the returned progress object reports that the
7353 operation is complete, this hard disk object can be
7354 <link to="IVirtualBox::registerHardDisk()">registered</link> within
7355 this VirtualBox installation.
7356 </note>
7357
7358 </desc>
7359
7360 <param name="size" type="unsigned long long" dir="in">
7361 <desc>Logical size of the hard disk in megabytes.</desc>
7362 </param>
7363 <param name="progress" type="IProgress" dir="return">
7364 <desc>Progress object to track the operation completion.</desc>
7365 </param>
7366
7367 </method>
7368
7369 <method name="deleteImage">
7370 <desc>
7371
7372 Deletes the existing hard disk image. The hard disk must not be
7373 registered within this VirtualBox installation, otherwise the
7374 operation will fail.
7375
7376 <note>
7377 After this operation succeeds, it will be impossible to register the
7378 hard disk until the image file is created again.
7379 </note>
7380
7381 <note>
7382 This operation is valid only for non-differencing hard disks, after
7383 they are unregistered using
7384 <link to="IVirtualBox::unregisterHardDisk()"/>.
7385 </note>
7386
7387 </desc>
7388 </method>
7389
7390 </interface>
7391
7392 <!--
7393 // IDVDImage
7394 /////////////////////////////////////////////////////////////////////////
7395 -->
7396
7397 <enumerator
7398 name="IDVDImageEnumerator" type="IDVDImage"
7399 uuid="9BE77C8D-E1BE-4bf2-A67B-B4DD3D2B0F28"
7400 />
7401
7402 <collection
7403 name="IDVDImageCollection" type="IDVDImage"
7404 enumerator="IDVDImageEnumerator"
7405 uuid="AE7053FA-ADD2-4ea4-AFCF-24D5F8DDED64"
7406 readonly="yes"
7407 >
7408 <method name="findByPath">
7409 <desc>
7410 Searches this collection for a DVD image with the given disk path.
7411 <note>
7412 The method returns an error if the given name does not
7413 correspond to any DVD image in the collection.
7414 </note>
7415 </desc>
7416 <param name="path" type="wstring" dir="in">
7417 <desc>Name of the DVD image's file system location.</desc>
7418 </param>
7419 <param name="image" type="IDVDImage" dir="return">
7420 <desc>Found DVD image object</desc>
7421 </param>
7422 </method>
7423 </collection>
7424
7425 <interface
7426 name="IDVDImage" extends="$unknown"
7427 uuid="140FFF03-E479-4194-8562-ABC4F8171009"
7428 wsmap="managed"
7429 >
7430 <desc>
7431
7432 The IDVDImage interface represents a file containing the image
7433 of the DVD or CD disk.
7434
7435 <h3>Image Accessibility</h3>
7436
7437 The <link to="#accessible"/> attribute of the image object
7438 defines the accessibility state of the image file. If the
7439 value of this attribute is <tt>false</tt> then some image
7440 attributes may contain invalid or outdated values (for example, the
7441 the image file size) until a new accessibility
7442 check is done that returns <tt>true</tt>.
7443
7444 <note>
7445 Because of the possible slowness of the accessibility check,
7446 it is not implicitly performed upon the VirtualBox server startup
7447 (to prevent the application freeze). In partcular, this means that
7448 if you try to read image properties that depend on the
7449 accessibility state without first reading the value of the
7450 <link to="#accessible"/> attribute and ensuring it's value is
7451 <tt>true</tt>, you will get wrong (zero) values.
7452 </note>
7453
7454 </desc>
7455 <attribute name="id" type="uuid" readonly="yes">
7456 <desc>UUID of the CD/DVD image.</desc>
7457 </attribute>
7458
7459 <attribute name="filePath" type="wstring" readonly="yes">
7460 <desc>Full file name of the CD/DVD image.</desc>
7461 </attribute>
7462
7463 <attribute name="accessible" type="boolean" readonly="yes">
7464 <desc>
7465
7466 Whether the CD/DVD image is currently accessible or not.
7467 The image, for example, can be unaccessible if it is placed
7468 on a network share that is not available by the time
7469 this property is read.
7470
7471 The accessibility check is performed automatically every time
7472 this attribute is read. You should keep it in mind that this check
7473 may be slow and can block the calling thread for a long time (for
7474 example, if the network share where the image is located is down).
7475
7476 The following attributes of the image object are considered
7477 to be invalid when this attribute is <tt>false</tt>:
7478 <ul>
7479 <li><link to="#size"/></li>
7480 </ul>
7481
7482 </desc>
7483 </attribute>
7484
7485 <attribute name="size" type="unsigned long long" readonly="yes">
7486 <desc>Size of the ISO image in bytes.</desc>
7487 </attribute>
7488
7489 </interface>
7490
7491
7492 <!--
7493 // IDVDDrive
7494 /////////////////////////////////////////////////////////////////////////
7495 -->
7496
7497 <interface
7498 name="IDVDDrive" extends="$unknown"
7499 uuid="d9bd101a-8079-4fb9-bad1-31bf32482b75"
7500 wsmap="managed"
7501 >
7502 <desc>
7503 The IDVDDrive interface represents the virtual CD/DVD drive of the
7504 virtual machine. Used in <link to="IMachine::DVDDrive"/>.
7505 </desc>
7506 <attribute name="state" type="DriveState" readonly="yes">
7507 <desc>Current drive state.</desc>
7508 </attribute>
7509
7510 <attribute name="passthrough" type="boolean">
7511 <desc>
7512 When a host drive is mounted and passthrough is enabled
7513 the guest will be able to directly send SCSI commands to
7514 the host drive. This enables the guest to use CD/DVD writers
7515 but is potentially dangerous.
7516 </desc>
7517 </attribute>
7518
7519 <method name="mountImage">
7520 <desc>Mounts the specified image.</desc>
7521 <param name="imageId" type="uuid" dir="in"/>
7522 </method>
7523
7524 <method name="captureHostDrive">
7525 <desc>Captures the specified host drive.</desc>
7526 <param name="drive" type="IHostDVDDrive" dir="in"/>
7527 </method>
7528
7529 <method name="unmount">
7530 <desc>Unmounts the currently mounted image/device.</desc>
7531 </method>
7532
7533 <method name="getImage">
7534 <desc>Gets the currently mounted image ID.</desc>
7535 <param name="image" type="IDVDImage" dir="return"/>
7536 </method>
7537
7538 <method name="getHostDrive">
7539 <desc>Gets the currently mounted image ID.</desc>
7540 <param name="drive" type="IHostDVDDrive" dir="return"/>
7541 </method>
7542
7543 </interface>
7544
7545 <!--
7546 // IFloppyImage
7547 /////////////////////////////////////////////////////////////////////////
7548 -->
7549
7550 <enumerator
7551 name="IFloppyImageEnumerator" type="IFloppyImage"
7552 uuid="902C4089-76B7-41f1-91E8-49A261A28A2C"
7553 />
7554
7555 <collection
7556 name="IFloppyImageCollection" type="IFloppyImage"
7557 enumerator="IFloppyImageEnumerator"
7558 uuid="327A8928-8572-446e-AD9A-18FE30E81F3F"
7559 readonly="yes">
7560 <method name="findByPath">
7561 <desc>
7562 Searches this collection for a floppy image with the given disk path.
7563 <note>
7564 The method returns an error if the given name does not
7565 correspond to any floppy image in the collection.
7566 </note>
7567 </desc>
7568 <param name="path" type="wstring" dir="in">
7569 <desc>Name of the floppy image's file system location.</desc>
7570 </param>
7571 <param name="image" type="IFloppyImage" dir="return">
7572 <desc>Found Floppy image object</desc>
7573 </param>
7574 </method>
7575 </collection>
7576
7577 <interface
7578 name="IFloppyImage" extends="$unknown"
7579 uuid="CC696755-EA98-4ffe-9DC5-C003047034AB"
7580 wsmap="managed"
7581 >
7582 <desc>
7583
7584 The IFloppyImage interface represents a file containing the image
7585 of a floppy disk.
7586
7587 <h3>Image Accessibility</h3>
7588
7589 The <link to="#accessible"/> attribute of the image object
7590 defines the accessibility state of the image file. If the
7591 value of this attribute is <tt>false</tt> then some image
7592 attributes may contain invalid or outdated values (for example, the
7593 the image file size) until a new accessibility
7594 check is done that returns <tt>true</tt>.
7595
7596 <note>
7597 Because of the possible slowness of the accessibility check,
7598 it is not implicitly performed upon the VirtualBox server startup
7599 (to prevent the application freeze). In partcular, this means that
7600 if you try to read image properties that depend on the
7601 accessibility state without first reading the value of the
7602 <link to="#accessible"/> attribute and ensuring it's value is
7603 <tt>true</tt>, you will get wrong (zero) values.
7604 </note>
7605
7606 </desc>
7607 <attribute name="id" type="uuid" readonly="yes">
7608 <desc>UUID of the floppy image.</desc>
7609 </attribute>
7610
7611 <attribute name="filePath" type="wstring" readonly="yes">
7612 <desc>Full file name of the floppy image.</desc>
7613 </attribute>
7614
7615 <attribute name="accessible" type="boolean" readonly="yes">
7616 <desc>
7617
7618 Whether the floppy image is currently accessible or not.
7619 The image, for example, can be unaccessible if it is placed
7620 on a network share that is not available by the time
7621 this property is read.
7622
7623 The accessibility check is performed automatically every time
7624 this attribute is read. You should keep it in mind that this check
7625 may be slow and can block the calling thread for a long time (for
7626 example, if the network share where the image is located is down).
7627
7628 The following attributes of the image object are considered
7629 to be invalid when this attribute is <tt>false</tt>:
7630 <ul>
7631 <li><link to="#size"/></li>
7632 </ul>
7633
7634 </desc>
7635 </attribute>
7636
7637 <attribute name="size" type="unsigned long" readonly="yes">
7638 <desc>Size of the floppy image in bytes.</desc>
7639 </attribute>
7640
7641 </interface>
7642
7643
7644 <!--
7645 // IFloppyDrive
7646 /////////////////////////////////////////////////////////////////////////
7647 -->
7648
7649 <interface
7650 name="IFloppyDrive" extends="$unknown"
7651 uuid="E9318F71-78D2-4b00-863C-B7CB0030A2D9"
7652 wsmap="managed"
7653 >
7654 <desc>
7655 The IFloppyDrive interface represents the virtual floppy drive of the
7656 virtual machine. Used in <link to="IMachine::FloppyDrive" />.
7657 </desc>
7658
7659 <attribute name="enabled" type="boolean">
7660 <desc>
7661 Flag whether the floppy drive is enabled. If it is disabled,
7662 the floppy drive will not be reported to the guest.
7663 </desc>
7664 </attribute>
7665
7666 <attribute name="state" type="DriveState" readonly="yes">
7667 <desc>Current drive state.</desc>
7668 </attribute>
7669
7670 <method name="mountImage">
7671 <desc>Mounts the specified image.</desc>
7672 <param name="imageId" type="uuid" dir="in"/>
7673 </method>
7674
7675 <method name="captureHostDrive">
7676 <desc>Captures the specified host drive.</desc>
7677 <param name="drive" type="IHostFloppyDrive" dir="in"/>
7678 </method>
7679
7680 <method name="unmount">
7681 <desc>Unmounts the currently mounted image/device.</desc>
7682 </method>
7683
7684 <method name="getImage">
7685 <desc>Gets the currently mounted image ID.</desc>
7686 <param name="image" type="IFloppyImage" dir="return"/>
7687 </method>
7688
7689 <method name="getHostDrive">
7690 <desc>Gets the currently mounted image ID.</desc>
7691 <param name="drive" type="IHostFloppyDrive" dir="return"/>
7692 </method>
7693
7694 </interface>
7695
7696
7697 <!--
7698 // IKeyboard
7699 /////////////////////////////////////////////////////////////////////////
7700 -->
7701
7702 <interface
7703 name="IKeyboard" extends="$unknown"
7704 uuid="FD443EC1-000A-4F5B-9282-D72760A66916"
7705 wsmap="managed"
7706 >
7707 <desc>
7708 The IKeyboard interface represents the virtual machine's keyboard. Used
7709 in <link to="IConsole::keyboard"/>.
7710
7711 Through this interface, the virtual machine's virtual keyboard can be controlled. One
7712 can send keystrokes to the virtual machine and send the Ctrl-Alt-Del sequence to it.
7713 </desc>
7714 <method name="putScancode">
7715 <desc>Sends a scancode to the keyboard.</desc>
7716 <param name="scancode" type="long" dir="in"/>
7717 </method>
7718
7719 <method name="putScancodes">
7720 <desc>Sends an array of scancode to the keyboard.</desc>
7721 <param name="scancodes" type="long" dir="in" array="count"/>
7722 <param name="count" type="unsigned long" dir="in"/>
7723 <param name="codesStored" type="unsigned long" dir="return"/>
7724 </method>
7725
7726 <method name="putCAD">
7727 <desc>Sends the Ctrl-Alt-Del sequence to the keyboard.</desc>
7728 </method>
7729
7730 </interface>
7731
7732
7733 <!--
7734 // IMouse
7735 /////////////////////////////////////////////////////////////////////////
7736 -->
7737
7738 <enum
7739 name="MouseButtonState"
7740 uuid="03131722-2EC5-4173-9794-0DACA46673EF"
7741 >
7742 <desc>
7743 Mouse button state.
7744 </desc>
7745
7746 <const name="LeftButton" value="0x01"/>
7747 <const name="RightButton" value="0x02"/>
7748 <const name="MiddleButton" value="0x04"/>
7749 <const name="WheelUp" value="0x08"/>
7750 <const name="WheelDown" value="0x10"/>
7751 <const name="MouseStateMask" value="0x1F"/>
7752 </enum>
7753
7754 <interface
7755 name="IMouse" extends="$unknown"
7756 uuid="FD443EC1-0006-4F5B-9282-D72760A66916"
7757 wsmap="managed"
7758 >
7759 <desc>
7760 The IMouse interface represents the virtual machine's mouse. Used in
7761 <link to="IConsole::mouse"/>.
7762
7763 Through this interface, the virtual machine's virtual mouse can be
7764 controlled.
7765 </desc>
7766
7767 <attribute name="absoluteSupported" type="boolean" readonly="yes">
7768 <desc>
7769 Whether the guest OS supports absolute mouse pointer positioning
7770 or not.
7771 <note>
7772 VirtualBox Guest Tools need to be installed to the guest OS
7773 in order to enable absolute mouse positioning support.
7774 You can use the <link to="IConsoleCallback::onMouseCapabilityChange"/>
7775 callback to be instantly informed about changes of this attribute
7776 during virtual machine execution.
7777 </note>
7778 <see><link to="#putMouseEventAbsolute"/></see>
7779 </desc>
7780 </attribute>
7781
7782 <method name="putMouseEvent">
7783 <desc>
7784 Initiates a mouse event using relative pointer movements
7785 along x and y axis.
7786 </desc>
7787
7788 <param name="dx" type="long" dir="in">
7789 <desc>
7790 Amout of pixels the mouse should move to the right.
7791 Negative values move the mouse to the left.
7792 </desc>
7793 </param>
7794 <param name="dy" type="long" dir="in">
7795 <desc>
7796 Amout of pixels the mouse should move downwards.
7797 Negative values move the mouse upwards.
7798 </desc>
7799 </param>
7800 <param name="dz" type="long" dir="in">
7801 <desc>
7802 Amount of mouse wheel moves.
7803 Positive values describe clockwize wheel rotations,
7804 negative values describe counterclockwise rotations.
7805 </desc>
7806 </param>
7807 <param name="buttonState" type="long" dir="in">
7808 <desc>
7809 The current state of mouse buttons. Every bit represents
7810 a mouse button as follows:
7811 <table>
7812 <tr><td>Bit 0 (<tt>0x01</tt>)</td><td>left mouse button</td></tr>
7813 <tr><td>Bit 1 (<tt>0x02</tt>)</td><td>right mouse button</td></tr>
7814 <tr><td>Bit 2 (<tt>0x04</tt>)</td><td>middle mouse button</td></tr>
7815 </table>
7816 A value of <tt>1</tt> means the corresponding button is pressed.
7817 otherwise it is released.
7818 </desc>
7819 </param>
7820 </method>
7821
7822 <method name="putMouseEventAbsolute">
7823 <desc>
7824 Positions the mouse pointer using absolute x and y coordinates.
7825 These coordinates are expressed in pixels and
7826 start from <tt>[1,1]</tt> which corresponds to the top left
7827 corner of the virtual display.
7828
7829 <note>
7830 This method will have effect only if absolute mouse
7831 positioning is supported by the guest OS.
7832 </note>
7833
7834 <see><link to="#absoluteSupported"/></see>
7835 </desc>
7836
7837 <param name="x" type="long" dir="in">
7838 <desc>
7839 X coordinate of the pointer in pixels, starting from <tt>1</tt>.
7840 </desc>
7841 </param>
7842 <param name="y" type="long" dir="in">
7843 <desc>
7844 Y coordinate of the pointer in pixels, starting from <tt>1</tt>.
7845 </desc>
7846 </param>
7847 <param name="dz" type="long" dir="in">
7848 <desc>
7849 Amout of mouse wheel moves.
7850 Positive values describe clockwize wheel rotations,
7851 negative values describe counterclockwise rotations.
7852 </desc>
7853 </param>
7854 <param name="buttonState" type="long" dir="in">
7855 <desc>
7856 The current state of mouse buttons. Every bit represents
7857 a mouse button as follows:
7858 <table>
7859 <tr><td>Bit 0 (<tt>0x01</tt>)</td><td>left mouse button</td></tr>
7860 <tr><td>Bit 1 (<tt>0x02</tt>)</td><td>right mouse button</td></tr>
7861 <tr><td>Bit 2 (<tt>0x04</tt>)</td><td>middle mouse button</td></tr>
7862 </table>
7863 A value of <tt>1</tt> means the corresponding button is pressed.
7864 otherwise it is released.
7865 </desc>
7866 </param>
7867 </method>
7868
7869 </interface>
7870
7871 <!--
7872 // IDisplay
7873 /////////////////////////////////////////////////////////////////////////
7874 -->
7875
7876 <enum
7877 name="FramebufferAccelerationOperation"
7878 uuid="f0e5ebbe-dc8e-4e2d-916e-53baa3844df8"
7879 >
7880 <desc>
7881 Framebuffer acceleration operation.
7882 </desc>
7883
7884 <const name="SolidFillAcceleration" value="1"/>
7885 <const name="ScreenCopyAcceleration" value="2"/>
7886 </enum>
7887
7888 <enum
7889 name="FramebufferPixelFormat"
7890 uuid="6b27d1fc-4f2c-4e9c-a166-01d06540305d"
7891 >
7892 <desc>
7893 Format of the video memory buffer. Constants represented by this enum can
7894 be used to test for particular values of <link
7895 to="IFramebuffer::pixelFormat"/>. See also <link
7896 to="IFramebuffer::requestResize()"/>.
7897
7898 See also www.fourcc.org for more informantion about FOURCC pixel formats.
7899 </desc>
7900
7901 <const name="Opaque" value="0xFFFFFFFF">
7902 <desc>
7903 Unknown buffer format. The user may not assume any particular
7904 format of the buffer.
7905 </desc>
7906 </const>
7907 <const name="FOURCC_RGB" value="0x32424752">
7908 <desc>
7909 Basic RGB format. <link to="IFramebuffer::bitsPerPixel"/> determines
7910 the bit layout.
7911 </desc>
7912 </const>
7913 </enum>
7914
7915 <interface
7916 name="IFramebuffer" extends="$unknown"
7917 uuid="af431304-5b09-40e2-94da-3c3cb03822c1"
7918 wsmap="suppress"
7919 >
7920 <attribute name="address" type="octet" mod="ptr" readonly="yes">
7921 <desc>Address of the start byte of the framebuffer.</desc>
7922 </attribute>
7923
7924 <attribute name="width" type="unsigned long" readonly="yes">
7925 <desc>Framebuffer width, in pixels.</desc>
7926 </attribute>
7927
7928 <attribute name="height" type="unsigned long" readonly="yes">
7929 <desc>Framebuffer height, in pixels.</desc>
7930 </attribute>
7931
7932 <attribute name="bitsPerPixel" type="unsigned long" readonly="yes">
7933 <desc>
7934 Color depth, in bits per pixel. When <link to="#pixelFormat"/> is <link
7935 to="FramebufferPixelFormat::FOURCC_RGB">FOURCC_RGB</link>, valid values
7936 are: 8, 15, 16, 24 and 32.
7937 </desc>
7938 </attribute>
7939
7940 <attribute name="bytesPerLine" type="unsigned long" readonly="yes">
7941 <desc>
7942 Scan line size, in bytes. When <link to="#pixelFormat"/> is <link
7943 to="FramebufferPixelFormat::FOURCC_RGB">FOURCC_RGB</link>, the
7944 size of the scan line must be aligned to 32 bits.
7945 </desc>
7946 </attribute>
7947
7948 <attribute name="pixelFormat" type="unsigned long" readonly="yes">
7949 <desc>
7950 Framebuffer pixel format. It's either one of the values defined by <link
7951 to="FramebufferPixelFormat"/> or a raw FOURCC code.
7952 <note>
7953 This attribute must never return <link
7954 to="PixelFormat::Opaque"/> -- the format of the buffer
7955 <link to="#address"/> points to must be always known.
7956 </note>
7957 </desc>
7958 </attribute>
7959
7960 <attribute name="usesGuestVRAM" type="boolean" readonly="yes">
7961 <desc>
7962 Defines whether this framebuffer uses the virtual video card's memory
7963 buffer (guest VRAM) directly or not. See <link
7964 to="IFramebuffer::requestResize()"/> for more information.
7965 </desc>
7966 </attribute>
7967
7968 <attribute name="heightReduction" type="unsigned long" readonly="yes">
7969 <desc>
7970 Hint from the framebuffer about how much of the standard
7971 screen height it wants to use for itself. This information is
7972 exposed to the guest through the VESA BIOS and VMMDev interface
7973 so that it can use it for determining its video mode table. It
7974 is not guaranteed that the guest respects the value.
7975 </desc>
7976 </attribute>
7977
7978 <attribute name="overlay" type="IFramebufferOverlay" readonly="yes">
7979 <desc>
7980 An alpha-blended overlay which is superposed over the framebuffer.
7981 The initial purpose is to allow the display of icons providing
7982 information about the VM state, including disk activity, in front
7983 ends which do not have other means of doing that. The overlay is
7984 designed to controlled exclusively by IDisplay. It has no locking
7985 of its own, and any changes made to it are not guaranteed to be
7986 visible until the affected portion of IFramebuffer is updated. The
7987 overlay can be created lazily the first time it is requested. This
7988 attribute can also return NULL to signal that the overlay is not
7989 implemented.
7990 </desc>
7991 </attribute>
7992
7993 <method name="lock">
7994 <desc>
7995 Locks the framebuffer.
7996 Gets called by the IDisplay object where this framebuffer is
7997 bound to.
7998 </desc>
7999 </method>
8000
8001 <method name="unlock">
8002 <desc>
8003 Unlocks the framebuffer.
8004 Gets called by the IDisplay object where this framebuffer is
8005 bound to.
8006 </desc>
8007 </method>
8008
8009 <method name="notifyUpdate">
8010 <desc>
8011 Informs about an update.
8012 Gets called by the display object where this buffer is
8013 registered.
8014 </desc>
8015 <param name="x" type="unsigned long" dir="in"/>
8016 <param name="y" type="unsigned long" dir="in"/>
8017 <param name="width" type="unsigned long" dir="in"/>
8018 <param name="height" type="unsigned long" dir="in"/>
8019 <param name="finished" type="boolean" dir="return"/>
8020 </method>
8021
8022 <method name="requestResize">
8023 <desc>
8024 Requests a size and pixel format change.
8025
8026 There are two modes of working with the video buffer of the virtual
8027 machine. The <i>indirect</i> mode implies that the IFramebuffer
8028 implementation allocates a memory buffer for the requested display mode
8029 and provides it to the virtual machine. In <i>direct</i> mode, the
8030 IFramebuffer implementation uses the memory buffer allocated and owned
8031 by the virtual machine. This buffer represents the video memory of the
8032 emulated video adapter (so called <i>guest VRAM</i>). The direct mode is
8033 usually faster because the implementation gets a raw pointer to the
8034 guest VRAM buffer which it can directly use for visualising the contents
8035 of the virtual display, as opposed to the indirect mode where the
8036 contents of guest VRAM are copied to the memory buffer provided by
8037 the implementation every time a display update occurs.
8038
8039 It is important to note that the direct mode is really fast only when
8040 the implementation uses the given guest VRAM buffer directly, for
8041 example, by blitting it to the window representing the virtual machine's
8042 display, which saves at least one copy operation comparing to the
8043 indirect mode. However, using the guest VRAM buffer directly is not
8044 always possible: the format and the color depth of this buffer may be
8045 not supported by the target window, or it may be unknown (opaque) as in
8046 case of text or non-linear multi-plane VGA video modes. In this case,
8047 the indirect mode (that is always available) should be used as a
8048 fallback: when the guest VRAM contents are copied to the
8049 implementation-provided memory buffer, color and format conversion is
8050 done authomatically by the underlying code.
8051
8052 The @a pixelFormat parameter defines whether the direct mode is
8053 available or not. If @a pixelFormat is <link
8054 to="PixelFormat::Opaque"/> then direct access to the guest
8055 VRAM buffer is not available -- the @a VRAM, @a bitsPerPixel and @a
8056 bytesPerLine parameters must be ignored and the implementation must use
8057 the indirect mode (where it provides its own buffer in one of the
8058 supported formats). In all other cases, @a pixelFormat together with @a
8059 bitsPerPixel and @a bytesPerLine define the format of the video memory
8060 buffer pointed to by the @a VRAM parameter and the implementation is
8061 free to choose which mode to use. To indicate that this framebuffer uses
8062 the direct mode, the implementation of the <link to="#usesGuestVRAM"/>
8063 attribute must return <tt>true</tt> and <link to="#address"/> must
8064 return exactly the same address that is passed in the @a VRAM parameter
8065 of this method; otherwise it is assumed that the indirect strategy is
8066 chosen.
8067
8068 The @a width and @a height parameters represent the size of the
8069 requested display mode in both modes. In case of indirect mode, the
8070 provided memory buffer should be big enough to store data of the given
8071 display mode. In case of direct mode, it is guaranteed that the given @a
8072 VRAM buffer contains enough space to represent the display mode of the
8073 given size. Note that this framebuffer's <link to="#width"/> and <link
8074 to="#height"/> attributes must return exactly the same values as
8075 passed to this method after the resize is completed (see below).
8076
8077 The @a finished output parameter determines if the implementation has
8078 finished resizing the framebuffer or not. If, for some reason, the
8079 resize cannot be finished immediately during this call, @a finished
8080 must be set to @c false, and the implementation must call
8081 <link to="IDisplay::resizeCompleted()"/> after it has returned from
8082 this method as soon as possible. If @a finished is @c false, the
8083 machine will not call any framebuffer methods until
8084 <link to="IDisplay::resizeCompleted()"/> is called.
8085
8086 Note that if the direct mode is chosen, the <link to="#bitsPerPixel"/>,
8087 <link to="#bytesPerLine"/> and <link to="#pixelFormat"/> attributes of
8088 this framebuffer must return exactly the same values as specified in the
8089 parameters of this method, after the resize is completed. If the
8090 indirect mode is chosen, these attributes must return values describing
8091 the format of the implementation's own memory buffer <link
8092 to="#address"/> points to. Note also that the <link to="#bitsPerPixel"/>
8093 value must always correlate with <link to="#pixelFormat"/>. Note that
8094 the <link to="#pixelFormat"/> attribute must never return <link
8095 to="PixelFormat::Opaque"/> regardless of the selected mode.
8096
8097 <note>
8098 This method is called by the IDisplay object under the
8099 <link to="#lock()"/> provided by this IFramebuffer
8100 implementation. If this method returns @c false in @a finished, then
8101 this lock is not released until
8102 <link to="IDisplay::resizeCompleted()"/> is called.
8103 </note>
8104 </desc>
8105 <param name="screenId" type="unsigned long" dir="in">
8106 <desc>
8107 Logical screen number. Must be used in the corresponding call to
8108 <link to="IDisplay::resizeCompleted()"/> if this call is made.
8109 </desc>
8110 </param>
8111 <param name="pixelFormat" type="unsigned long" dir="in">
8112 <desc>
8113 Pixel format of the memory buffer pointed to by @a VRAM.
8114 See also <link to="FramebufferPixelFormat"/>.
8115 </desc>
8116 </param>
8117 <param name="VRAM" type="octet" mod="ptr" dir="in">
8118 <desc>Pointer to the virtual video card's VRAM (may be @c null).</desc>
8119 </param>
8120 <param name="bitsPerPixel" type="unsigned long" dir="in">
8121 <desc>Color depth, bits per pixel.</desc>
8122 </param>
8123 <param name="bytesPerLine" type="unsigned long" dir="in">
8124 <desc>Size of one scan line, in bytes.</desc>
8125 </param>
8126 <param name="width" type="unsigned long" dir="in">
8127 <desc>Width of the guest display, in pixels.</desc>
8128 </param>
8129 <param name="height" type="unsigned long" dir="in">
8130 <desc>Height of the guest display, in pixels.</desc>
8131 </param>
8132 <param name="finished" type="boolean" dir="return">
8133 <desc>
8134 Can the VM start using the new framebuffer immediately
8135 after this method returns or it should wait for
8136 <link to="IDisplay::resizeCompleted()"/>.
8137 </desc>
8138 </param>
8139 </method>
8140
8141 <method name="operationSupported">
8142 <desc>
8143 Returns whether the given acceleration operation is supported
8144 by the IFramebuffer implementation. If not, the display object
8145 will not attempt to call the corresponding IFramebuffer entry
8146 point. Even if an operation is indicated to supported, the
8147 IFramebuffer implementation always has the option to return non
8148 supported from the corresponding acceleration method in which
8149 case the operation will be performed by the display engine. This
8150 allows for reduced IFramebuffer implementation complexity where
8151 only common cases are handled.
8152 </desc>
8153 <param name="operation" type="FramebufferAccelerationOperation" dir="in"/>
8154 <param name="supported" type="boolean" dir="return"/>
8155 </method>
8156
8157 <method name="videoModeSupported">
8158 <desc>
8159 Returns whether the framebuffer implementation is willing to
8160 support a given video mode. In case it is not able to render
8161 the video mode (or for some reason not willing), it should
8162 return false. Usually this method is called when the guest
8163 asks the VMM device whether a given video mode is supported
8164 so the information returned is directly exposed to the guest.
8165 It is important that this method returns very quickly.
8166 </desc>
8167 <param name="width" type="unsigned long" dir="in"/>
8168 <param name="height" type="unsigned long" dir="in"/>
8169 <param name="bpp" type="unsigned long" dir="in"/>
8170 <param name="supported" type="boolean" dir="return"/>
8171 </method>
8172
8173 <method name="solidFill">
8174 <desc>
8175 Fills the specified rectangle on screen with a solid color.
8176 </desc>
8177 <param name="x" type="unsigned long" dir="in"/>
8178 <param name="y" type="unsigned long" dir="in"/>
8179 <param name="width" type="unsigned long" dir="in"/>
8180 <param name="height" type="unsigned long" dir="in"/>
8181 <param name="color" type="unsigned long" dir="in"/>
8182 <param name="handled" type="boolean" dir="return"/>
8183 </method>
8184
8185 <method name="copyScreenBits">
8186 <desc>
8187 Copies specified rectangle on the screen.
8188 </desc>
8189 <param name="xDst" type="unsigned long" dir="in"/>
8190 <param name="yDst" type="unsigned long" dir="in"/>
8191 <param name="xSrc" type="unsigned long" dir="in"/>
8192 <param name="ySrc" type="unsigned long" dir="in"/>
8193 <param name="width" type="unsigned long" dir="in"/>
8194 <param name="height" type="unsigned long" dir="in"/>
8195 <param name="handled" type="boolean" dir="return"/>
8196 </method>
8197
8198 <method name="getVisibleRegion">
8199 <desc>
8200 Returns the visible region of this framebuffer.
8201
8202 If the @a rectangles parameter is <tt>NULL</tt> then the value of the
8203 @a count parameter is ignored and the number of elements necessary to
8204 describe the current visible region is returned in @a countCopied.
8205
8206 If @a rectangles is not <tt>NULL</tt> but @a count is less
8207 than the required number of elements to store region data, the method
8208 will report a failure. If @a count is equal or greater than the
8209 required number of elements, then the actual number of elements copied
8210 to the provided array will be returned in @a countCopied.
8211
8212 <note>
8213 The address of the provided array must be in the process space of
8214 this IFramebuffer object.
8215 </note>
8216 </desc>
8217 <param name="rectangles" type="octet" mod="ptr" dir="in">
8218 <desc>Pointer to the <tt>RTRECT</tt> array to receive region data.</desc>
8219 </param>
8220 <param name="count" type="unsigned long" dir="in">
8221 <desc>Number of <tt>RTRECT</tt> elements in the @a rectangles array.</desc>
8222 </param>
8223 <param name="countCopied" type="unsigned long" dir="return">
8224 <desc>Number of elements copied to the @a rectangles array.</desc>
8225 </param>
8226 </method>
8227
8228 <method name="setVisibleRegion">
8229 <desc>
8230 Suggests a new visible region to this framebuffer. This region
8231 represents the area of the VM display which is a union of regions of
8232 all top-level windows of the guest operating system running inside the
8233 VM (if the Guest Additions for this system support this
8234 functionality). This information may be used by the frontends to
8235 implement the seamless desktop integration feature.
8236
8237 <note>
8238 The address of the provided array must be in the process space of
8239 this IFramebuffer object.
8240 </note>
8241 <note>
8242 The IFramebuffer implementation must make a copy of the provided
8243 array of rectangles.
8244 </note>
8245 </desc>
8246 <param name="rectangles" type="octet" mod="ptr" dir="in">
8247 <desc>Pointer to the <tt>RTRECT</tt> array.</desc>
8248 </param>
8249 <param name="count" type="unsigned long" dir="in">
8250 <desc>Number of <tt>RTRECT</tt> elements in the @a rectangles array.</desc>
8251 </param>
8252 </method>
8253
8254 </interface>
8255
8256 <interface
8257 name="IFramebufferOverlay" extends="IFrameBuffer"
8258 uuid="0bcc1c7e-e415-47d2-bfdb-e4c705fb0f47"
8259 wsmap="suppress"
8260 >
8261 <desc>
8262 The IFramebufferOverlay interface represents an alpha blended overlay
8263 for displaying status icons above an IFramebuffer. It is always created
8264 not visible, so that it must be explicitly shown. It only covers a
8265 portion of the IFramebuffer, determined by its width, height and
8266 co-ordinates. It is always in packed pixel little-endian 32bit ARGB (in
8267 that order) format, and may be written to directly. Do re-read the
8268 width though, after setting it, as it may be adjusted (increased) to
8269 make it more suitable for the front end.
8270 </desc>
8271 <attribute name="x" type="unsigned long" readonly="yes">
8272 <desc>X position of the overlay, relative to the framebuffer.</desc>
8273 </attribute>
8274
8275 <attribute name="y" type="unsigned long" readonly="yes">
8276 <desc>Y position of the overlay, relative to the framebuffer.</desc>
8277 </attribute>
8278
8279 <attribute name="visible" type="boolean" readonly="no">
8280 <desc>
8281 Whether the overlay is currently visible.
8282 </desc>
8283 </attribute>
8284
8285 <attribute name="alpha" type="unsigned long" readonly="no">
8286 <desc>
8287 The global alpha value for the overlay. This may or may not be
8288 supported by a given front end.
8289 </desc>
8290 </attribute>
8291
8292 <method name="move">
8293 <desc>
8294 Changes the overlay's position relative to the IFramebuffer.
8295 </desc>
8296 <param name="x" type="unsigned long" dir="in"/>
8297 <param name="y" type="unsigned long" dir="in"/>
8298 </method>
8299
8300 </interface>
8301
8302 <interface
8303 name="IDisplay" extends="$unknown"
8304 uuid="09789f63-4525-48e5-a5e4-1080453b0eab"
8305 wsmap="suppress"
8306 >
8307 <desc>
8308 The IDisplay interface represents the virtual machine's display.
8309
8310 The object implementing this interface is contained in each
8311 <link to="IConsole::display"/> attribute and represents the visual
8312 output of the virtual machine.
8313
8314 The virtual display supports pluggable output targets represented by the
8315 IFramebuffer interface. Examples of the output target are a window on
8316 the host computer or an RDP sessoin's display on a remote computer.
8317 </desc>
8318 <attribute name="width" type="unsigned long" readonly="yes">
8319 <desc>Current display width.</desc>
8320 </attribute>
8321
8322 <attribute name="height" type="unsigned long" readonly="yes">
8323 <desc>Current display height.</desc>
8324 </attribute>
8325
8326 <attribute name="bitsPerPixel" type="unsigned long" readonly="yes">
8327 <desc>
8328 Current guest display color depth. Note that this may differ
8329 from <link to="IFramebuffer::bitsPerPixel"/>.
8330 </desc>
8331 </attribute>
8332
8333 <method name="setupInternalFramebuffer">
8334 <desc>
8335 Prepares an internally managed framebuffer.
8336 </desc>
8337 <param name="depth" type="unsigned long" dir="in"/>
8338 </method>
8339
8340 <method name="lockFramebuffer">
8341 <desc>
8342 Requests access to the internal framebuffer.
8343 </desc>
8344 <param name="address" type="octet" mod="ptr" dir="return"/>
8345 </method>
8346
8347 <method name="unlockFramebuffer">
8348 <desc>
8349 Releases access to the internal framebuffer.
8350 </desc>
8351 </method>
8352
8353 <method name="registerExternalFramebuffer">
8354 <desc>
8355 Registers an external framebuffer.
8356 </desc>
8357 <param name="framebuffer" type="IFramebuffer" dir="in"/>
8358 </method>
8359
8360 <method name="setFramebuffer">
8361 <desc>
8362 Sets the framebuffer for given screen.
8363 </desc>
8364 <param name="screenId" type="unsigned long" dir="in"/>
8365 <param name="framebuffer" type="IFramebuffer" dir="in"/>
8366 </method>
8367
8368 <method name="getFramebuffer">
8369 <desc>
8370 Queries the framebuffer for given screen.
8371 </desc>
8372 <param name="screenId" type="unsigned long" dir="in"/>
8373 <param name="framebuffer" type="IFramebuffer" dir="out"/>
8374 <param name="xOrigin" type="long" dir="out"/>
8375 <param name="yOrigin" type="long" dir="out"/>
8376 </method>
8377
8378 <method name="setVideoModeHint">
8379 <desc>
8380 Asks VirtualBox to request the given video mode from
8381 the guest. This is just a hint and it cannot be guaranteed
8382 that the requested resolution will be used. Guest Additions
8383 are required for the request to be seen by guests. The caller
8384 should issue the request and wait for a resolution change and
8385 after a timeout retry.
8386
8387 Specifying <tt>0</tt> for either @a width, @a height or @a bitsPerPixel
8388 parameters means that the corresponding values should be taken from the
8389 current video mode (i.e. left unchanged).
8390
8391 If the guest OS supports multi-monitor configuration then the @a display
8392 parameter specifies the number of the guest display to send the hint to:
8393 <tt>0</tt> is the primary display, <tt>1</tt> is the first secondary and
8394 so on. If the multi-monitor configuration is not supported, @a display
8395 must be <tt>0</tt>.
8396
8397 </desc>
8398 <param name="width" type="unsigned long" dir="in"/>
8399 <param name="height" type="unsigned long" dir="in"/>
8400 <param name="bitsPerPixel" type="unsigned long" dir="in"/>
8401 <param name="display" type="unsigned long" dir="in"/>
8402 </method>
8403
8404 <method name="setSeamlessMode">
8405 <desc>
8406 Enables or disables seamless guest display rendering (seamless desktop
8407 integration) mode.
8408 <note>
8409 Calling this method has no effect if <link
8410 to="IGuest::supportsSeamless"/> returns <tt>false</tt>.
8411 </note>
8412 </desc>
8413 <param name="enabled" type="boolean" dir="in"/>
8414 </method>
8415
8416 <method name="takeScreenShot">
8417 <desc>
8418 Takes a screen shot of the requested size and copies it to the
8419 32-bpp buffer allocated by the caller.
8420 </desc>
8421 <param name="address" type="octet" mod="ptr" dir="in"/>
8422 <param name="width" type="unsigned long" dir="in"/>
8423 <param name="height" type="unsigned long" dir="in"/>
8424 </method>
8425
8426 <method name="drawToScreen">
8427 <desc>
8428 Draws a 32-bpp image of the specified size from the given buffer
8429 to the given point on the VM display.
8430 </desc>
8431 <param name="address" type="octet" mod="ptr" dir="in"/>
8432 <param name="x" type="unsigned long" dir="in"/>
8433 <param name="y" type="unsigned long" dir="in"/>
8434 <param name="width" type="unsigned long" dir="in"/>
8435 <param name="height" type="unsigned long" dir="in"/>
8436 </method>
8437
8438 <method name="invalidateAndUpdate">
8439 <desc>
8440 Does a full invalidation of the VM display and instructs the VM
8441 to update it.
8442 </desc>
8443 </method>
8444
8445 <method name="resizeCompleted">
8446 <desc>
8447 Signals that a framebuffer has completed the resize operation.
8448 </desc>
8449 <param name="screenId" type="unsigned long" dir="in"/>
8450 </method>
8451
8452 <method name="updateCompleted">
8453 <desc>
8454 Signals that a framebuffer has completed the update operation.
8455 </desc>
8456 </method>
8457
8458 </interface>
8459
8460 <!--
8461 // INetworkAdapter
8462 /////////////////////////////////////////////////////////////////////////
8463 -->
8464
8465 <enum
8466 name="NetworkAttachmentType"
8467 uuid="8730d899-d036-4925-bc63-e58f3486f4bf"
8468 >
8469 <desc>
8470 Network attachment type.
8471 </desc>
8472
8473 <const name="Null" value="0">
8474 <desc><tt>null</tt> value. Also means "not attached".</desc>
8475 </const>
8476 <const name="NAT" value="1"/>
8477 <const name="HostInterface" value="2"/>
8478 <const name="Internal" value="3"/>
8479 </enum>
8480
8481 <enum
8482 name="NetworkAdapterType"
8483 uuid="156b17b9-5d61-4d54-be90-62e37dda848d"
8484 >
8485 <desc>
8486 Network adapter type.
8487 </desc>
8488
8489 <const name="Null" value="0">
8490 <desc><tt>null</tt> value. Never used by the API.</desc>
8491 </const>
8492 <const name="Am79C970A" value="1"/>
8493 <const name="Am79C973" value="2"/>
8494 <const name="I82540EM" value="3"/>
8495 <const name="I82543GC" value="4"/>
8496 </enum>
8497
8498 <interface
8499 name="INetworkAdapter" extends="$unknown"
8500 uuid="a876d9b1-68d9-43b1-9c68-ddea0a473663"
8501 wsmap="managed"
8502 >
8503 <attribute name="adapterType" type="NetworkAdapterType">
8504 <desc>
8505 Type of the virtual network adapter. Depending on this value,
8506 VirtualBox will provide a different virtual network hardware
8507 to the guest.
8508 </desc>
8509 </attribute>
8510
8511 <attribute name="slot" type="unsigned long" readonly="yes">
8512 <desc>
8513 Slot number this adapter is plugged into. Corresponds to
8514 the value you pass to <link to="IMachine::getNetworkAdapter"/>
8515 to obtain this instance.
8516 </desc>
8517 </attribute>
8518
8519 <attribute name="enabled" type="boolean">
8520 <desc>
8521 Flag whether the network adapter is present in the
8522 guest system. If disabled, the virtual guest hardware will
8523 not contain this network adapter. Can only be changed when
8524 the VM is not running.
8525 </desc>
8526 </attribute>
8527
8528 <attribute name="MACAddress" type="wstring">
8529 <desc>
8530 Ethernet MAC address of the adapter, 12 hexadecimal characters. When setting
8531 it to NULL, VirtualBox will generate a unique MAC address.
8532 </desc>
8533 </attribute>
8534
8535 <attribute name="attachmentType" type="NetworkAttachmentType" readonly="yes"/>
8536
8537 <attribute name="hostInterface" type="wstring">
8538 <desc>
8539 Name of the Host Network Interface that is currently in use. NULL will be returned
8540 if no device has been allocated. On Linux, setting this refers to a permanent TAP
8541 device. However, a file descriptor has precedence over the interface name on Linux.
8542 Note that when VBox allocates a TAP device, this property will not be set, i.e. the
8543 interface name would have to be determined using the file descriptor and /proc/self/fd.
8544 </desc>
8545 </attribute>
8546
8547<if target="xpidl">
8548 <attribute name="TAPFileDescriptor" type="long">
8549 <desc>
8550 File descriptor of the TAP device. It can either be setup by the caller
8551 which has to supply an existing valid file handle allocated in the parent
8552 process of the VM process or allocated by VirtualBox. The value is -1 if it
8553 has not been defined. This property is non persistent, i.e. it will not be
8554 stored in the VM's configuration data and thus has to be set at each startup.
8555 </desc>
8556 </attribute>
8557 <attribute name="TAPSetupApplication" type="wstring">
8558 <desc>
8559 Application to start to configure the TAP device.
8560 It is being passed two parameters, 1) the file handle (as ascii),
8561 2) the TAP device name if it is available.
8562 </desc>
8563 </attribute>
8564 <attribute name="TAPTerminateApplication" type="wstring">
8565 <desc>
8566 Application to start before closing a TAP device.
8567 It is being passed two parameters, 1) the file handle (as ascii),
8568 2) the TAP device name if it is available.
8569 </desc>
8570 </attribute>
8571</if>
8572
8573 <attribute name="internalNetwork" type="wstring">
8574 <desc>
8575 Name of the internal network the VM is attached to.
8576 </desc>
8577 </attribute>
8578
8579 <attribute name="NATNetwork" type="wstring">
8580 <desc>
8581 Name of the NAT network the VM is attached to.
8582 </desc>
8583 </attribute>
8584
8585 <attribute name="cableConnected" type="boolean">
8586 <desc>
8587 Flag whether the adapter reports the cable as connected or not.
8588 It can be used to report offline situations to a VM.
8589 </desc>
8590 </attribute>
8591
8592 <attribute name="lineSpeed" type="unsigned long">
8593 <desc>
8594 Line speed reported by custom drivers, in units of 1 kbps.
8595 </desc>
8596 </attribute>
8597
8598 <attribute name="traceEnabled" type="boolean">
8599 <desc>
8600 Flag whether network traffic from/to the network card should be traced.
8601 Can only be toggled when the VM is turned off.
8602 </desc>
8603 </attribute>
8604
8605 <attribute name="traceFile" type="wstring">
8606 <desc>
8607 Filename where a network trace will be stored. If not set, VBox-pid.pcap
8608 will be used.
8609 </desc>
8610 </attribute>
8611
8612 <method name="attachToNAT">
8613 <desc>
8614 Attach the network adapter to the Network Address Translation (NAT) interface.
8615 </desc>
8616 </method>
8617
8618 <method name="attachToHostInterface">
8619 <desc>
8620 Attach the network adapter to a host interface. On Linux, the TAP
8621 setup application will be executed if configured and unless a device
8622 name and/or file descriptor has been set, a new TAP interface will be
8623 created.
8624 </desc>
8625 </method>
8626
8627 <method name="attachToInternalNetwork">
8628 <desc>
8629 Attach the network adapter to an internal network.
8630 </desc>
8631 </method>
8632
8633 <method name="detach">
8634 <desc>
8635 Detach the network adapter
8636 </desc>
8637 </method>
8638 </interface>
8639
8640
8641 <!--
8642 // ISerialPort
8643 /////////////////////////////////////////////////////////////////////////
8644 -->
8645
8646 <enum
8647 name="PortMode"
8648 uuid="b266f43c-2e93-46b3-812b-c20e600e867b"
8649 >
8650 <desc>
8651 The PortMode enumeration represents possible communicaton modes for
8652 the virtual serial port device.
8653 </desc>
8654
8655 <const name="Disconnected" value="0">
8656 <desc>Virtual device is not attached to any real host device.</desc>
8657 </const>
8658 <const name="HostPipe" value="1">
8659 <desc>Virtual device is attached to a host pipe.</desc>
8660 </const>
8661 <const name="HostDevice" value="2">
8662 <desc>Virtual device is attached to a host device.</desc>
8663 </const>
8664 </enum>
8665
8666 <interface
8667 name="ISerialPort" extends="$unknown"
8668 uuid="937f6970-5103-4745-b78e-d28dcf1479a8"
8669 wsmap="managed"
8670 >
8671
8672 <desc>
8673 The ISerialPort interface represents the virtual serial port device.
8674
8675 The virtual serial port device acts like an ordinary serial port
8676 inside the virtual machine. This device communicates to the real
8677 serial port hardware in one of two modes: host pipe or host device.
8678
8679 In host pipe mode, the #path attribute specifies the path to the pipe on
8680 the host computer that represents a serial port. The #server attribute
8681 determines if this pipe is created by the virtual machine process at
8682 machine startup or it must already exist before starting machine
8683 execution.
8684
8685 In host device mode, the #path attribute specifies the name of the
8686 serial port device on the host computer.
8687
8688 There is also a third communication mode: the disconnected mode. In this
8689 mode, the guest OS running inside the virtual machine will be able to
8690 detect the serial port, but all port write operations will be discarded
8691 and all port read operations will return no data.
8692
8693 <see>IMachine::getSerialPort</see>
8694 </desc>
8695
8696 <attribute name="slot" type="unsigned long" readonly="yes">
8697 <desc>
8698 Slot number this serial port is plugged into. Corresponds to
8699 the value you pass to <link to="IMachine::getSerialPort"/>
8700 to obtain this instance.
8701 </desc>
8702 </attribute>
8703
8704 <attribute name="enabled" type="boolean">
8705 <desc>
8706 Flag whether the serial port is enabled. If disabled,
8707 the serial port will not be reported to the guest OS.
8708 </desc>
8709 </attribute>
8710
8711 <attribute name="IOBase" type="unsigned long">
8712 <desc>Base I/O address of the serial port.</desc>
8713 </attribute>
8714
8715 <attribute name="IRQ" type="unsigned long">
8716 <desc>IRQ number of the serial port.</desc>
8717 </attribute>
8718
8719 <attribute name="hostMode" type="PortMode">
8720 <desc>How is this port connected to the host.</desc>
8721 </attribute>
8722
8723 <attribute name="server" type="boolean">
8724 <desc>
8725 Flag whether this serial port acts as a server (creates a new pipe on
8726 the host) or as a client (uses the existing pipe). This attribute is
8727 used only when #hostMode is PortMode::HostPipePort.
8728 </desc>
8729 </attribute>
8730
8731 <attribute name="path" type="wstring">
8732 <desc>
8733 Path to the serial port's pipe on the host when #hostMode is
8734 PortMode::HostPipePort, or the host serial device name when #hostMode
8735 is PortMode::HostDevicePort. In either of the above cases, setting a
8736 @c null or an empty string as the attribute's value will result into
8737 an error. Otherwise, the value of this property is ignored.
8738 </desc>
8739 </attribute>
8740
8741 </interface>
8742
8743 <!--
8744 // IParallelPort
8745 /////////////////////////////////////////////////////////////////////////
8746 -->
8747
8748 <interface
8749 name="IParallelPort" extends="$unknown"
8750 uuid="0c925f06-dd10-4b77-8de8-294d738c3214"
8751 wsmap="managed"
8752 >
8753
8754 <desc>
8755 The IParallelPort interface represents the virtual parallel port device.
8756
8757 The virtual parallel port device acts like an ordinary parallel port
8758 inside the virtual machine. This device communicates to the real
8759 parallel port hardware using the name of the parallel device on the host
8760 computer specified in the #path attribute.
8761
8762 Each virtual parallel port device is assigned a base I/O address and an
8763 IRQ number that will be reported to the guest operating system and used
8764 to operate the given parallel port from within the virtual machine.
8765
8766 <see>IMachine::getParallelPort</see>
8767 </desc>
8768
8769 <attribute name="slot" type="unsigned long" readonly="yes">
8770 <desc>
8771 Slot number this parallel port is plugged into. Corresponds to
8772 the value you pass to <link to="IMachine::getParallelPort"/>
8773 to obtain this instance.
8774 </desc>
8775 </attribute>
8776
8777 <attribute name="enabled" type="boolean">
8778 <desc>
8779 Flag whether the parallel port is enabled. If disabled,
8780 the parallel port will not be reported to the guest OS.
8781 </desc>
8782 </attribute>
8783
8784 <attribute name="IOBase" type="unsigned long">
8785 <desc>Base I/O address of the parallel port.</desc>
8786 </attribute>
8787
8788 <attribute name="IRQ" type="unsigned long">
8789 <desc>IRQ number of the parallel port.</desc>
8790 </attribute>
8791
8792 <attribute name="path" type="wstring">
8793 <desc>
8794 Host parallel device name. If this parallel port is enabled, setting a
8795 @c null or an empty string as this attribute's value will result into
8796 an error.
8797 </desc>
8798 </attribute>
8799
8800 </interface>
8801
8802
8803 <!--
8804 // IMachineDebugger
8805 /////////////////////////////////////////////////////////////////////////
8806 -->
8807
8808 <interface
8809 name="IMachineDebugger" extends="$unknown"
8810 uuid="54ebce96-fa7d-4a4d-bc81-a7db41c29637"
8811 wsmap="suppress"
8812 >
8813 <method name="resetStats">
8814 <desc>
8815 Reset VM statistics.
8816 </desc>
8817 <param name="pattern" type="wstring" dir="in">
8818 <desc>The selection pattern. A bit similar to filename globbing.</desc>
8819 </param>
8820 </method>
8821
8822 <method name="dumpStats">
8823 <desc>
8824 Dumps VM statistics.
8825 </desc>
8826 <param name="pattern" type="wstring" dir="in">
8827 <desc>The selection pattern. A bit similar to filename globbing.</desc>
8828 </param>
8829 </method>
8830
8831 <method name="getStats">
8832 <desc>
8833 Get the VM statistics in a XMLish format.
8834 </desc>
8835 <param name="pattern" type="wstring" dir="in">
8836 <desc>The selection pattern. A bit similar to filename globbing.</desc>
8837 </param>
8838 <param name="withDescriptions" type="boolean" dir="in">
8839 <desc>Whether to include the descriptions.</desc>
8840 </param>
8841 <param name="stats" type="wstring" dir="out">
8842 <desc>The XML document containing the statistics.</desc>
8843 </param>
8844 </method>
8845
8846 <attribute name="singlestep" type="boolean">
8847 <desc>Switch for enabling singlestepping.</desc>
8848 </attribute>
8849
8850 <attribute name="recompileUser" type="boolean">
8851 <desc>Switch for forcing code recompilation for user mode code.</desc>
8852 </attribute>
8853
8854 <attribute name="recompileSupervisor" type="boolean">
8855 <desc>Switch for forcing code recompilation for supervisor mode code.</desc>
8856 </attribute>
8857
8858 <attribute name="PATMEnabled" type="boolean">
8859 <desc>Switch for enabling and disabling the PATM component.</desc>
8860 </attribute>
8861
8862 <attribute name="CSAMEnabled" type="boolean">
8863 <desc>Switch for enabling and disabling the CSAM component.</desc>
8864 </attribute>
8865
8866 <attribute name="logEnabled" type="boolean">
8867 <desc>Switch for enabling and disabling logging.</desc>
8868 </attribute>
8869
8870 <attribute name="HWVirtExEnabled" type="boolean" readonly="yes">
8871 <desc>
8872 Flag indicating whether the VM is currently making use of CPU hardware
8873 virtualization extensions.
8874 </desc>
8875 </attribute>
8876
8877 <attribute name="HWVirtExNestedPagingEnabled" type="boolean" readonly="yes">
8878 <desc>
8879 Flag indicating whether the VM is currently making use of the nested paging
8880 CPU hardware virtualization extension.
8881 </desc>
8882 </attribute>
8883
8884 <attribute name="PAEEnabled" type="boolean" readonly="yes">
8885 <desc>
8886 Flag indicating whether the VM is currently making use of the Physical
8887 Address Extension CPU feature.
8888 </desc>
8889 </attribute>
8890
8891 <attribute name="virtualTimeRate" type="unsigned long">
8892 <desc>
8893 The rate at which the virtual time runs expressed as a percentage.
8894 The accepted range is 2% to 20000%.
8895 </desc>
8896 </attribute>
8897
8898 <!-- @todo method for setting log flags, groups and destination! -->
8899
8900 <attribute name="VM" type="unsigned long long" readonly="yes">
8901 <desc>
8902 Gets the VM handle. This is only for internal use while
8903 we carve the details of this interface.
8904 </desc>
8905 </attribute>
8906
8907 </interface>
8908
8909 <!--
8910 // IUSBController
8911 /////////////////////////////////////////////////////////////////////////
8912 -->
8913
8914 <interface
8915 name="IUSBController" extends="$unknown"
8916 uuid="f4c2d3dc-f109-4da7-93b1-ec28973ac89f"
8917 wsmap="managed"
8918 >
8919 <attribute name="enabled" type="boolean">
8920 <desc>
8921 Flag whether the USB controller is present in the
8922 guest system. If disabled, the virtual guest hardware will
8923 not contain any USB controller. Can only be changed when
8924 the VM is powered off.
8925 </desc>
8926 </attribute>
8927
8928 <attribute name="enabledEhci" type="boolean">
8929 <desc>
8930 Flag whether the USB EHCI controller is present in the
8931 guest system. If disabled, the virtual guest hardware will
8932 not contain a USB EHCI controller. Can only be changed when
8933 the VM is powered off.
8934 </desc>
8935 </attribute>
8936
8937 <attribute name="USBStandard" type="unsigned short" readonly="yes">
8938 <desc>
8939 USB standard version which the controller implements.
8940 This is a BCD which means that the major version is in the
8941 high byte and minor version is in the low byte.
8942 </desc>
8943 </attribute>
8944
8945 <attribute name="deviceFilters" type="IUSBDeviceFilterCollection" readonly="yes">
8946 <desc>
8947 List of USB device filters associated with the machine.
8948
8949 If the machine is currently running, these filters are activated
8950 every time a new (supported) USB device is attached to the host
8951 computer that was not ignored by global filters
8952 (<link to="IHost::USBDeviceFilters"/>).
8953
8954 These filters are also activated when the machine is powered up.
8955 They are run against a list of all currently available USB
8956 devices (in states
8957 <link to="USBDeviceState::Available">Available</link>,
8958 <link to="USBDeviceState::Busy">Busy</link>,
8959 <link to="USBDeviceState::Held">Held</link>) that were not previously
8960 ignored by global filters.
8961
8962 If at least one filter matches the USB device in question, this
8963 device is automatically captured (attached to) the virtual USB
8964 controller of this machine.
8965
8966 <see>IUSBDeviceFilter, ::IUSBController</see>
8967 </desc>
8968 </attribute>
8969
8970 <method name="createDeviceFilter">
8971 <desc>
8972 Creates a new USB device filter. All attributes except
8973 the filter name are set to <tt>null</tt> (any match),
8974 <i>active</i> is <tt>false</tt> (the filter is not active).
8975
8976 The created filter can then be added to the list of filters using
8977 <link to="#insertDeviceFilter()"/>.
8978
8979 <see>#deviceFilters</see>
8980 </desc>
8981 <param name="name" type="wstring" dir="in">
8982 <desc>
8983 Filter name. See <link to="IUSBDeviceFilter::name"/>
8984 for more info.
8985 </desc>
8986 </param>
8987 <param name="filter" type="IUSBDeviceFilter" dir="return">
8988 <desc>Created filter object.</desc>
8989 </param>
8990 </method>
8991
8992 <method name="insertDeviceFilter">
8993 <desc>
8994 Inserts the given USB device to the specified position
8995 in the list of filters.
8996
8997 Positions are numbered starting from <tt>0</tt>. If the specified
8998 position is equal to or greater than the number of elements in
8999 the list, the filter is added to the end of the collection.
9000
9001 <note>
9002 Duplicates are not allowed, so an attempt to inster a
9003 filter that is already in the collection, will return an
9004 error.
9005 </note>
9006
9007 <see>#deviceFilters</see>
9008 </desc>
9009 <param name="position" type="unsigned long" dir="in">
9010 <desc>Position to insert the filter to.</desc>
9011 </param>
9012 <param name="filter" type="IUSBDeviceFilter" dir="in">
9013 <desc>USB device filter to insert.</desc>
9014 </param>
9015 </method>
9016
9017 <method name="removeDeviceFilter">
9018 <desc>
9019 Removes a USB device filter from the specified position in the
9020 list of filters.
9021
9022 Positions are numbered starting from <tt>0</tt>. Specifying a
9023 position equal to or greater than the number of elements in
9024 the list will produce an error.
9025
9026 <see>#deviceFilters</see>
9027 </desc>
9028 <param name="position" type="unsigned long" dir="in">
9029 <desc>Position to remove the filter from.</desc>
9030 </param>
9031 <param name="filter" type="IUSBDeviceFilter" dir="return">
9032 <desc>Removed USB device filter.</desc>
9033 </param>
9034 </method>
9035
9036 </interface>
9037
9038
9039 <!--
9040 // IUSBDevice
9041 /////////////////////////////////////////////////////////////////////////
9042 -->
9043
9044 <enumerator
9045 name="IUSBDeviceEnumerator" type="IUSBDevice"
9046 uuid="aefe00f7-eb8a-454b-9ea4-fd5ad93c0e99"
9047 />
9048
9049 <collection
9050 name="IUSBDeviceCollection" type="IUSBDevice"
9051 enumerator="IUSBDeviceEnumerator"
9052 uuid="e31f3248-90dd-4ca2-95f0-6b36042d96a2"
9053 readonly="yes"
9054 >
9055 <method name="findById">
9056 <desc>
9057 Searches this collection for a USB device with the given UUID.
9058 <note>
9059 The method returns an error if the given UUID does not
9060 correspond to any USB device in the collection.
9061 </note>
9062 <see>IUSBDevice::id</see>
9063 </desc>
9064 <param name="id" type="uuid" dir="in">
9065 <desc>UUID of the USB device to search for.</desc>
9066 </param>
9067 <param name="device" type="IUSBDevice" dir="return">
9068 <desc>Found USB device object.</desc>
9069 </param>
9070 </method>
9071
9072 <method name="findByAddress">
9073 <desc>
9074 Searches this collection for a USB device with the given
9075 host address.
9076 <note>
9077 The method returns an error if the given address does not
9078 correspond to any USB device in the collection.
9079 </note>
9080 <see>IUSBDevice::address</see>
9081 </desc>
9082 <param name="name" type="wstring" dir="in">
9083 <desc>
9084 Address of the USB device (as assigned by the host) to
9085 search for.
9086 </desc>
9087 </param>
9088 <param name="device" type="IUSBDevice" dir="return">
9089 <desc>Found USB device object.</desc>
9090 </param>
9091 </method>
9092
9093 </collection>
9094
9095 <interface
9096 name="IUSBDevice" extends="$unknown"
9097 uuid="850af07b-9ee8-48c2-b6b0-f6d0acbf63c3"
9098 wsmap="managed"
9099 >
9100 <desc>
9101 The IUSBDevice interface represents a virtual USB device attached to the
9102 virtual machine.
9103
9104 A collection of objects implementing this interface is stored in the
9105 <link to="IConsole::USBDevices"/> attribute which lists all USB devices
9106 attached to a running virtual machine's USB controller.
9107 </desc>
9108
9109 <attribute name="id" type="uuid" readonly="yes">
9110 <desc>
9111 Unique USB device ID. This ID is built from #vendorId,
9112 #productId, #revision and #serialNumber.
9113 </desc>
9114 </attribute>
9115
9116 <attribute name="vendorId" type="unsigned short" readonly="yes">
9117 <desc>Vendor ID.</desc>
9118 </attribute>
9119
9120 <attribute name="productId" type="unsigned short" readonly="yes">
9121 <desc>Product ID.</desc>
9122 </attribute>
9123
9124 <attribute name="revision" type="unsigned short" readonly="yes">
9125 <desc>
9126 Product revision number. This is a packed BCD represented as
9127 unsigned short. The high byte is the integer part and the low
9128 byte is the decimal.
9129 </desc>
9130 </attribute>
9131
9132 <attribute name="manufacturer" type="wstring" readonly="yes">
9133 <desc>Manufacturer string.</desc>
9134 </attribute>
9135
9136 <attribute name="product" type="wstring" readonly="yes">
9137 <desc>Product string.</desc>
9138 </attribute>
9139
9140 <attribute name="serialNumber" type="wstring" readonly="yes">
9141 <desc>Serial number string.</desc>
9142 </attribute>
9143
9144 <attribute name="address" type="wstring" readonly="yes">
9145 <desc>Host specific address of the device.</desc>
9146 </attribute>
9147
9148 <attribute name="port" type="unsigned short" readonly="yes">
9149 <desc>
9150 Host USB port number the device is physically
9151 coonected to.
9152 </desc>
9153 </attribute>
9154
9155 <attribute name="version" type="unsigned short" readonly="yes">
9156 <desc>
9157 The major USB version of the device - 1 or 2.
9158 </desc>
9159 </attribute>
9160
9161 <attribute name="portVersion" type="unsigned short" readonly="yes">
9162 <desc>
9163 The major USB version of the host USB port the device is
9164 physically coonected to - 1 or 2. For devices not connected to
9165 anything this will have the same value as the version attribute.
9166 </desc>
9167 </attribute>
9168
9169 <attribute name="remote" type="boolean" readonly="yes">
9170 <desc>
9171 Whether the device is physically connected to a remote VRDP
9172 client or to a local host machine.
9173 </desc>
9174 </attribute>
9175
9176 </interface>
9177
9178
9179 <!--
9180 // IUSBDeviceFilter
9181 /////////////////////////////////////////////////////////////////////////
9182 -->
9183
9184 <enumerator
9185 name="IUSBDeviceFilterEnumerator" type="IUSBDeviceFilter"
9186 uuid="d5109c61-93e7-4726-926b-0dee1020da56"
9187 />
9188
9189 <collection
9190 name="IUSBDeviceFilterCollection" type="IUSBDeviceFilter"
9191 enumerator="IUSBDeviceFilterEnumerator"
9192 uuid="4fa3fc99-ceb1-4bf5-a9cb-e962d825c1ef"
9193 readonly="yes"
9194 />
9195
9196 <interface
9197 name="IUSBDeviceFilter" extends="$unknown"
9198 uuid="d6831fb4-1a94-4c2c-96ef-8d0d6192066d"
9199 wsmap="managed"
9200 >
9201 <desc>
9202 The IUSBDeviceFilter interface represents an USB device filter used
9203 to perform actions on a group of USB devices.
9204
9205 This type of filters is used by running virtual machines to
9206 automatically capture selected USB devices once they are physically
9207 attached to the host computer.
9208
9209 A USB device is matched to the given device filter if and only if all
9210 attributes of the device match the corresponding attributes of the
9211 filter (that is, attributes are joined together using the logical AND
9212 operation). On the other hand, all together, filters in the list of
9213 filters carry the semantics of the logical OR operation. So if it is
9214 desirable to create a match like "this vendor id OR this product id",
9215 one needs to create two filters and specify "any match" (see below)
9216 for unused attributes.
9217
9218 All filter attributes used for matching are strings. Each string
9219 is an expression representing a set of values of the corresponding
9220 device attribute, that will match the given filter. Currently, the
9221 following filtering expressions are supported:
9222
9223 <ul>
9224 <li><i>Interval filters</i>. Used to specify valid intervals for
9225 integer device attributes (Vendor ID, Product ID and Revision).
9226 The format of the string is:
9227
9228 <tt>int:((m)|([m]-[n]))(,(m)|([m]-[n]))*</tt>
9229
9230 where <tt>m</tt> and <tt>n</tt> are integer numbers, either in octal
9231 (starting from <tt>0</tt>), hexadecimal (starting from <tt>0x</tt>)
9232 or decimal (otherwise) form, so that <tt>m &lt; n</tt>. If <tt>m</tt>
9233 is ommitted before a dash (<tt>-</tt>), the minimum possible integer
9234 is assumed; if <tt>n</tt> is ommitted after a dash, the maximum
9235 possible integer is assummed.
9236 </li>
9237 <li><i>Boolean filters</i>. Used to specify acceptable values for
9238 boolean device attributes. The format of the string is:
9239
9240 <tt>true|false|yes|no|0|1</tt>
9241
9242 </li>
9243 <li><i>Exact match</i>. Used to specify a single value for the given
9244 device attribute. Any string that does't start with <tt>int:</tt>
9245 represents the exact match. String device attributes are compared to
9246 this string including case of symbols. Integer attributes are first
9247 converted to a string (see individual filter attributes) and then
9248 compared ignoring case.
9249
9250 </li>
9251 <li><i>Any match</i>. Any value of the corresponding device attribute
9252 will match the given filter. An empty or <tt>null</tt> string is
9253 used to construct this type of filtering expressions.
9254
9255 </li>
9256 </ul>
9257
9258 <note>
9259 On the Windows host platform, interval filters are not currently
9260 available. Also all string filter attributes
9261 (<link to="#manufacturer"/>, <link to="#product"/>,
9262 <link to="#serialNumber"/>) are ignored, so they behave as
9263 <i>any match</i> no matter what string expression is specified.
9264 </note>
9265
9266 <see>IUSBController::deviceFilters, IHostUSBDeviceFilter</see>
9267 </desc>
9268
9269 <attribute name="name" type="wstring">
9270 <desc>
9271 Visible name for this filter.
9272 This name is used to visually distungish one filter from another,
9273 so it can neither be <tt>null</tt> nor an empty string.
9274 </desc>
9275 </attribute>
9276
9277 <attribute name="active" type="boolean">
9278 <desc>Whether this filter active or has been temporarily disabled.</desc>
9279 </attribute>
9280
9281 <attribute name="vendorId" type="wstring">
9282 <desc>
9283 <link to="IUSBDevice::vendorId">Vendor ID</link> filter.
9284 The string representation for the <i>exact matching</i>
9285 has the form <tt>XXXX</tt>, where <tt>X</tt> is the hex digit
9286 (including leading zeroes).
9287 </desc>
9288 </attribute>
9289
9290 <attribute name="productId" type="wstring">
9291 <desc>
9292 <link to="IUSBDevice::productId">Product ID</link> filter.
9293 The string representation for the <i>exact matching</i>
9294 has the form <tt>XXXX</tt>, where <tt>X</tt> is the hex digit
9295 (including leading zeroes).
9296 </desc>
9297 </attribute>
9298
9299 <attribute name="revision" type="wstring">
9300 <desc>
9301 <link to="IUSBDevice::productId">Product revision number</link>
9302 filter. The string representation for the <i>exact matching</i>
9303 has the form <tt>IIFF</tt>, where <tt>I</tt> is the decimal digit
9304 of the integer part of the revision, and <tt>F</tt> is the
9305 decimal digit of its fractional part (including leading and
9306 trailing zeroes).
9307 Note that for interval filters, it's best to use the hexadecimal
9308 form, because the revision is stored as a 16 bit packed BCD value;
9309 so the expression <tt>int:0x0100-0x0199</tt> will match any
9310 revision from <tt>1.0</tt> to <tt>1.99</tt>.
9311 </desc>
9312 </attribute>
9313
9314 <attribute name="manufacturer" type="wstring">
9315 <desc>
9316 <link to="IUSBDevice::manufacturer">Manufacturer</link> filter.
9317 </desc>
9318 </attribute>
9319
9320 <attribute name="product" type="wstring">
9321 <desc>
9322 <link to="IUSBDevice::product">Product</link> filter.
9323 </desc>
9324 </attribute>
9325
9326 <attribute name="serialNumber" type="wstring">
9327 <desc>
9328 <link to="IUSBDevice::serialNumber">Serial number</link> filter.
9329 </desc>
9330 </attribute>
9331
9332 <attribute name="port" type="wstring">
9333 <desc>
9334 <link to="IUSBDevice::port">Host USB port</link> filter.
9335 </desc>
9336 </attribute>
9337
9338 <attribute name="remote" type="wstring">
9339 <desc>
9340 <link to="IUSBDevice::remote">Remote state</link> filter.
9341 <note>
9342 This filter makes sense only for machine USB filters,
9343 i.e. it is ignored by IHostUSBDeviceFilter objects.
9344 </note>
9345 </desc>
9346 </attribute>
9347
9348 <attribute name="maskedInterfaces" type="unsigned long">
9349 <desc>
9350 This is an advanced option for hiding one or more USB interfaces
9351 from the guest. The value is a bitmask where the bits that are set
9352 means the corresponding USB interface should be hidden, masked off
9353 if you like.
9354 This feature only works on Linux hosts.
9355 </desc>
9356 </attribute>
9357
9358 </interface>
9359
9360
9361 <!--
9362 // IHostUSBDevice
9363 /////////////////////////////////////////////////////////////////////////
9364 -->
9365
9366 <enum
9367 name="USBDeviceState"
9368 uuid="b99a2e65-67fb-4882-82fd-f3e5e8193ab4"
9369 >
9370 <desc>
9371 USB device state. This enumeration represents all possible states
9372 of the USB device physically attached to the host computer regarding
9373 its state on the host computer and availability to guest computers
9374 (all currently running virtual machines).
9375
9376 Once a supported USB device is attached to the host, global USB
9377 filters (<link to="IHost::USBDeviceFilters"/>) are activated. They can
9378 either ignore the device, or put ot to #Held state, or do nothing. Unless
9379 the device is ignored by global filters, filters of all currently running
9380 guests (<link to="IUSBController::deviceFilters"/>) are activated that can
9381 put it to #Captured state.
9382
9383 If the device was ignored by global filters, or didn't match
9384 any filters at all (including guest ones), it is handled by the host
9385 in a normal way. In this case, the device state is determined by
9386 the host and can be one of #Unavailable, #Busy or #Available, depending on
9387 the current device usage.
9388
9389 Besides auto-capturing based on filters, the device can be manually
9390 captured by guests (<link to="IConsole::attachUSBDevice()"/>) if its
9391 state is #Busy, #Available or #Held.
9392
9393 <note>
9394 Due to differences in USB stack implementations in Linux and Win32,
9395 states #Busy and #Available are applicable only to the Linux version of
9396 the product. This also means that (<link
9397 to="IConsole::attachUSBDevice()"/>) can only succeed on Win32 if
9398 the device state is #USBDeviceHeld.
9399 </note>
9400
9401 <see>IHostUSBDevice, IHostUSBDeviceFilter</see>
9402 </desc>
9403
9404 <const name="NotSupported" value="0">
9405 <desc>
9406 Not supported by the VirtualBox server, not available to guests.
9407 </desc>
9408 </const>
9409 <const name="Unavailable" value="1">
9410 <desc>
9411 Being used by the host computer exclusively,
9412 not available to guests.
9413 </desc>
9414 </const>
9415 <const name="Busy" value="2">
9416 <desc>
9417 Being used by the host computer, potentially available to guests.
9418 </desc>
9419 </const>
9420 <const name="Available" value="3">
9421 <desc>
9422 Not used by the host computer, available to guests.
9423 The host computer can also start using the device at any time.
9424 </desc>
9425 </const>
9426 <const name="Held" value="4">
9427 <desc>
9428 Held by the VirtualBox server (ignored by the host computer),
9429 available to guests.
9430 </desc>
9431 </const>
9432 <const name="Captured" value="5">
9433 <desc>
9434 Captured by one of the guest computers, not available
9435 to anybody else.
9436 </desc>
9437 </const>
9438 </enum>
9439
9440 <enumerator
9441 name="IHostUSBDeviceEnumerator" type="IHostUSBDevice"
9442 uuid="a0c55136-939f-4d20-b9d3-4d406f08bfa5"
9443 />
9444
9445 <collection
9446 name="IHostUSBDeviceCollection" type="IHostUSBDevice"
9447 enumerator="IHostUSBDeviceEnumerator"
9448 uuid="f9d3f96d-b027-4994-b589-70bb9ee0d364"
9449 readonly="yes"
9450 >
9451 <method name="findById">
9452 <desc>
9453 Searches this collection for a USB device with the given UUID.
9454 <note>
9455 The method returns an error if the given UUID does not
9456 correspond to any USB device in the collection.
9457 </note>
9458 <see>IHostUSBDevice::id</see>
9459 </desc>
9460 <param name="id" type="uuid" dir="in">
9461 <desc>UUID of the USB device to search for.</desc>
9462 </param>
9463 <param name="device" type="IHostUSBDevice" dir="return">
9464 <desc>Found USB device object.</desc>
9465 </param>
9466 </method>
9467
9468 <method name="findByAddress">
9469 <desc>
9470 Searches this collection for a USB device with the given
9471 host address.
9472 <note>
9473 The method returns an error if the given address does not
9474 correspond to any USB device in the collection.
9475 </note>
9476 <see>IHostUSBDevice::address</see>
9477 </desc>
9478 <param name="name" type="wstring" dir="in">
9479 <desc>
9480 Address of the USB device (as assigned by the host) to
9481 search for.
9482 </desc>
9483 </param>
9484 <param name="device" type="IHostUSBDevice" dir="return">
9485 <desc>Found USB device object.</desc>
9486 </param>
9487 </method>
9488
9489 </collection>
9490
9491 <interface
9492 name="IHostUSBDevice" extends="IUSBDevice"
9493 uuid="173b4b44-d268-4334-a00d-b6521c9a740a"
9494 wsmap="managed"
9495 >
9496 <desc>
9497 The IHostUSBDevice interface represents a physical USB device attached
9498 to the host computer.
9499
9500 Besides properties inherited from IUSBDevice, this interface adds the
9501 <link to="#state"/> property that holds the courrent state of the USB
9502 device.
9503
9504 <see>IHost::USBDevices, IHost::USBDeviceFilters</see>
9505 </desc>
9506
9507 <attribute name="state" type="USBDeviceState" readonly="yes">
9508 <desc>
9509 Current state of the device.
9510 </desc>
9511 </attribute>
9512
9513 <!-- @todo add class, subclass, bandwidth, configs, interfaces endpoints and such later. -->
9514
9515 </interface>
9516
9517
9518 <!--
9519 // IHostUSBDeviceFilter
9520 /////////////////////////////////////////////////////////////////////////
9521 -->
9522
9523 <enum
9524 name="USBDeviceFilterAction"
9525 uuid="cbc30a49-2f4e-43b5-9da6-121320475933"
9526 >
9527 <desc>
9528 Actions for host USB device filters.
9529 <see>IHostUSBDeviceFilter, USBDeviceState</see>
9530 </desc>
9531
9532 <const name="Null" value="0">
9533 <desc><tt>null</tt> value. Never used by the API.</desc>
9534 </const>
9535 <const name="Ignore" value="1">
9536 <desc>Ignore the matched USB device.</desc>
9537 </const>
9538 <const name="Hold" value="2">
9539 <desc>Hold the matched USB device.</desc>
9540 </const>
9541 </enum>
9542
9543 <enumerator
9544 name="IHostUSBDeviceFilterEnumerator" type="IHostUSBDeviceFilter"
9545 uuid="ff735211-903e-4642-9c37-189eb44579fe"
9546 />
9547
9548 <collection
9549 name="IHostUSBDeviceFilterCollection" type="IHostUSBDeviceFilter"
9550 enumerator="IHostUSBDeviceFilterEnumerator"
9551 uuid="1a80458b-87f1-4a74-995d-04e2330119e0"
9552 readonly="yes"
9553 />
9554
9555 <interface
9556 name="IHostUSBDeviceFilter" extends="IUSBDeviceFilter"
9557 uuid="4cc70246-d74a-400f-8222-3900489c0374"
9558 wsmap="managed"
9559 >
9560 <desc>
9561 The IHostUSBDeviceFilter interface represents a global filter for a
9562 physical USB device used by the host computer. Used indirectly in
9563 <link to="IHost::USBDeviceFilters"/>.
9564
9565 Using filters of this type, the host computer determines the initial
9566 state of the USB device after it is physically attached to the
9567 host's USB controller.
9568
9569 <note>
9570 The <link to="#remote"/> attribute is ignored by this type of
9571 filters, because it makes sense only for
9572 <link to="IUSBController::deviceFilters">machine USB filters</link>.
9573 </note>
9574
9575 <see>IHost::USBDeviceFilters</see>
9576 </desc>
9577
9578 <attribute name="action" type="USBDeviceFilterAction">
9579 <desc>
9580 Action performed by the host when an attached USB device
9581 matches this filter.
9582 </desc>
9583 </attribute>
9584
9585 </interface>
9586
9587 <!--
9588 // IAudioAdapter
9589 /////////////////////////////////////////////////////////////////////////
9590 -->
9591
9592 <enum
9593 name="AudioDriverType"
9594 uuid="4bcc3d73-c2fe-40db-b72f-0c2ca9d68496"
9595 >
9596 <desc>
9597 Host audio driver type.
9598 </desc>
9599
9600 <const name="Null" value="0">
9601 <desc><tt>null</tt> value. Also means "dummy audio driver".</desc>
9602 </const>
9603 <const name="WinMM" value="1"/>
9604 <const name="OSS" value="2"/>
9605 <const name="ALSA" value="3"/>
9606 <const name="DirectSound" value="4"/>
9607 <const name="CoreAudio" value="5"/>
9608 <const name="MMPM" value="6"/>
9609 <const name="Pulse" value="7"/>
9610 <const name="SolAudio" value="8"/>
9611 </enum>
9612
9613 <enum
9614 name="AudioControllerType"
9615 uuid="7afd395c-42c3-444e-8788-3ce80292f36c"
9616 >
9617 <desc>
9618 Virtual audio controller type.
9619 </desc>
9620
9621 <const name="AC97" value="0"/>
9622 <const name="SB16" value="1"/>
9623 </enum>
9624
9625 <interface
9626 name="IAudioAdapter" extends="$unknown"
9627 uuid="921873db-5f3f-4b69-91f9-7be9e535a2cb"
9628 wsmap="managed"
9629 >
9630 <desc>
9631 The IAudioAdapter interface represents the virtual audio adapter of
9632 the virtual machine. Used in <link to="IMachine::audioAdapter"/>.
9633 </desc>
9634 <attribute name="enabled" type="boolean">
9635 <desc>
9636 Flag whether the audio adapter is present in the
9637 guest system. If disabled, the virtual guest hardware will
9638 not contain any audio adapter. Can only be changed when
9639 the VM is not running.
9640 </desc>
9641 </attribute>
9642 <attribute name="audioController" type="AudioControllerType">
9643 <desc>
9644 The audio hardware we emulate.
9645 </desc>
9646 </attribute>
9647 <attribute name="audioDriver" type="AudioDriverType">
9648 <desc>
9649 Audio driver the adapter is connected to. This setting
9650 can only be changed when the VM is not running.
9651 </desc>
9652 </attribute>
9653 </interface>
9654
9655 <!--
9656 // IVRDPServer
9657 /////////////////////////////////////////////////////////////////////////
9658 -->
9659
9660 <enum
9661 name="VRDPAuthType"
9662 uuid="3d91887a-b67f-4b33-85bf-2da7ab1ea83a"
9663 >
9664 <desc>
9665 VRDP authentication type.
9666 </desc>
9667
9668 <const name="Null" value="0">
9669 <desc><tt>null</tt> value. Also means "no authentication".</desc>
9670 </const>
9671 <const name="External" value="1"/>
9672 <const name="Guest" value="2"/>
9673 </enum>
9674
9675 <interface
9676 name="IVRDPServer" extends="$unknown"
9677 uuid="ed9d31ae-867f-45fc-b727-6740084d1883"
9678 wsmap="managed"
9679 >
9680 <attribute name="enabled" type="boolean">
9681 <desc>VRDP server status.</desc>
9682 </attribute>
9683
9684 <attribute name="port" type="unsigned long">
9685 <desc>
9686 VRDP server port number.
9687 <note>
9688 Setting the value of this property to <tt>0</tt> will reset the port
9689 number to the default value which is
9690 currently <tt>3389</tt>. Reading this property will always return a
9691 real port number, even after it has been set to <tt>0</tt> (in which
9692 case the default port is returned).
9693 </note>
9694 </desc>
9695 </attribute>
9696
9697 <attribute name="netAddress" type="wstring">
9698 <desc>VRDP server address.</desc>
9699 </attribute>
9700
9701 <attribute name="authType" type="VRDPAuthType">
9702 <desc>VRDP authentication method.</desc>
9703 </attribute>
9704
9705 <attribute name="authTimeout" type="unsigned long">
9706 <desc>Timeout for guest authentication. Milliseconds.</desc>
9707 </attribute>
9708
9709 <attribute name="allowMultiConnection" type="boolean">
9710 <desc>
9711 Flag whether multiple simultaneous connections to the VM are permitted.
9712 Note that this will be replaced by a more powerful mechanism in the future.
9713 </desc>
9714 </attribute>
9715
9716 </interface>
9717
9718
9719 <!--
9720 // ISharedFolder
9721 /////////////////////////////////////////////////////////////////////////
9722 -->
9723
9724 <enumerator
9725 name="ISharedFolderEnumerator" type="ISharedFolder"
9726 uuid="1d420fd8-e7c1-4511-abf4-a504dc6d0cbf"
9727 />
9728
9729 <collection
9730 name="ISharedFolderCollection" type="ISharedFolder"
9731 enumerator="ISharedFolderEnumerator"
9732 uuid="9c7e2282-bb16-4fa7-9138-f383c5e02353"
9733 readonly="yes">
9734
9735 <method name="findByName">
9736 <desc>
9737 Searches this collection for a shared folder with the given logical
9738 name.
9739 <note>
9740 The method returns an error if the given name does not correspond to
9741 any shared folder in the collection.
9742 </note>
9743 </desc>
9744 <param name="name" type="wstring" dir="in">
9745 <desc>Logical name of the shared folder to search for</desc>
9746 </param>
9747 <param name="sharedFolder" type="ISharedFolder" dir="return">
9748 <desc>Found shared folder object</desc>
9749 </param>
9750 </method>
9751
9752 </collection>
9753
9754 <interface
9755 name="ISharedFolder" extends="$unknown"
9756 uuid="8b0c5f70-9139-4f97-a421-64d5e9c335d5"
9757 wsmap="struct"
9758 >
9759 <desc>
9760 The ISharedFolder interface represents a folder in the host computer's
9761 file system accessible from the guest OS running inside a virtual
9762 machine using an associated logical name.
9763
9764 There are three types of shared folders:
9765 <ul>
9766 <li><i>Global</i> (<link to="IVirtualBox::sharedFolders"/>), shared
9767 folders available to all virtual machines.</li>
9768 <li><i>Permanent</i> (<link to="IMachine::sharedFolders"/>),
9769 VM-specific shared folders available to the given virtual machine at
9770 startup.</li>
9771 <li><i>Transient</i> (<link to="IConsole::sharedFolders"/>),
9772 VM-specific shared folders created in the session context (for
9773 example, when the virtual machine is running) and automatically
9774 discarded when the session is closed (the VM is powered off).</li>
9775 </ul>
9776
9777 Logical names of shared folders must be unique within the given scope
9778 (global, permanent or transient). However, they do not need to be unique
9779 across scopes. In this case, the definitioin of the shared folder in a
9780 more specific scope takes precedence over definitions in all other
9781 scopes. The order of precedence is (more specific to more general):
9782 <ol>
9783 <li>Transient definitions</li>
9784 <li>Permanent definitions</li>
9785 <li>Global definitions</li>
9786 </ol>
9787
9788 For example, if MyMachine has a shared folder named
9789 <tt>C_DRIVE</tt> (that points to <tt>C:\\</tt>), then cretaing a
9790 transient shared folder named <tt>C_DRIVE</tt> (that points
9791 to <tt>C:\\\\WINDOWS</tt>) will change the definition
9792 of <tt>C_DRIVE</tt> in the guest OS so
9793 that <tt>\\\\VBOXSVR\\C_DRIVE</tt> will give access
9794 to <tt>C:\\WINDOWS</tt> instead of <tt>C:\\</tt> on the host
9795 PC. Removing the transient shared folder <tt>C_DRIVE</tt> will restore
9796 the prevoious (permanent) definition of <tt>C_DRIVE</tt> that points
9797 to <tt>C:\\</tt> if it still exists.
9798
9799 Note that permanent and transient shared folders of different machines
9800 are in different name spaces, so they don't overlap and don't need to
9801 have unique logical names.
9802
9803 <note>With the COM API, this is an interface like all the others. With the webservice,
9804 this is mapped to a structure, so querying the attribute will not return an object,
9805 but a complete structure.</note>
9806
9807 <note>
9808 Global shared folders are not implemented in the current vesion of the
9809 product.
9810 </note>
9811 </desc>
9812
9813 <attribute name="name" type="wstring" readonly="yes">
9814 <desc>Logical name of the shared folder.</desc>
9815 </attribute>
9816
9817 <attribute name="hostPath" type="wstring" readonly="yes">
9818 <desc>Full path to the shared folder in the host file system.</desc>
9819 </attribute>
9820
9821 <attribute name="accessible" type="boolean" readonly="yes">
9822 <desc>
9823 Whether the folder defined by the host path is currently
9824 accessible or not.
9825 For example, the folder can be unaccessible if it is placed
9826 on the network share that is not available by the time
9827 this property is read.
9828 </desc>
9829 </attribute>
9830
9831 <attribute name="writable" type="boolean" readonly="yes">
9832 <desc>
9833 Whether the folder defined by the host path is writable or
9834 not.
9835 </desc>
9836 </attribute>
9837
9838 </interface>
9839
9840 <!--
9841 // ISession
9842 /////////////////////////////////////////////////////////////////////////
9843 -->
9844
9845 <interface
9846 name="IInternalSessionControl" extends="$unknown"
9847 uuid="2581845a-5a9d-45fb-bc3b-2476552dd970"
9848 internal="yes"
9849 wsmap="suppress"
9850 >
9851 <method name="getPID">
9852 <desc>PID of the process that has created this Session object.
9853 </desc>
9854 <param name="pid" type="unsigned long" dir="return"/>
9855 </method>
9856
9857 <method name="getRemoteConsole">
9858 <desc>Returns the console object suitable for remote control.</desc>
9859 <param name="console" type="IConsole" dir="return"/>
9860 </method>
9861
9862 <method name="assignMachine">
9863 <desc>
9864 Assigns the machine object associated with this direct-type
9865 session or informs the session that it will be a remote one
9866 (if machine = NULL).
9867 </desc>
9868 <param name="machine" type="IMachine" dir="in"/>
9869 </method>
9870
9871 <method name="assignRemoteMachine">
9872 <desc>
9873 Assigns the machine and the (remote) console object associated with
9874 this remote-type session.
9875 </desc>
9876 <param name="machine" type="IMachine" dir="in"/>
9877 <param name="console" type="IConsole" dir="in"/>
9878 </method>
9879
9880 <method name="updateMachineState">
9881 <desc>
9882 Updates the machine state in the VM process.
9883 Must be called only in certain cases
9884 (see the method implementation).
9885 </desc>
9886 <param name="aMachineState" type="MachineState" dir="in"/>
9887 </method>
9888
9889 <method name="uninitialize">
9890 <desc>
9891 Uninitializes (closes) this session. Used by VirtualBox to close
9892 the corresponding remote session when the direct session dies
9893 or gets closed.
9894 </desc>
9895 </method>
9896
9897 <method name="onDVDDriveChange">
9898 <desc>
9899 Triggered when settings of the DVD drive object of the
9900 associated virtual machine have changed.
9901 </desc>
9902 </method>
9903
9904 <method name="onFloppyDriveChange">
9905 <desc>
9906 Triggered when settings of the floppy drive object of the
9907 associated virtual machine have changed.
9908 </desc>
9909 </method>
9910
9911 <method name="onNetworkAdapterChange">
9912 <desc>
9913 Triggered when settions of a network adapter of the
9914 associated virtual machine have changed.
9915 </desc>
9916 <param name="networkAdapter" type="INetworkAdapter" dir="in"/>
9917 </method>
9918
9919 <method name="onSerialPortChange">
9920 <desc>
9921 Triggered when settions of a serial port of the
9922 associated virtual machine have changed.
9923 </desc>
9924 <param name="serialPort" type="ISerialPort" dir="in"/>
9925 </method>
9926
9927 <method name="onParallelPortChange">
9928 <desc>
9929 Triggered when settings of a parallel port of the
9930 associated virtual machine have changed.
9931 </desc>
9932 <param name="parallelPort" type="IParallelPort" dir="in"/>
9933 </method>
9934
9935 <method name="onVRDPServerChange">
9936 <desc>
9937 Triggered when settings of the VRDP server object of the
9938 associated virtual machine have changed.
9939 </desc>
9940 </method>
9941
9942 <method name="onUSBControllerChange">
9943 <desc>
9944 Triggered when settings of the USB controller object of the
9945 associated virtual machine have changed.
9946 </desc>
9947 </method>
9948
9949 <method name="onSharedFolderChange">
9950 <desc>
9951 Triggered when a permanent (global or machine) shared folder has been
9952 created or removed.
9953 <note>
9954 We don't pass shared folder parameters in this notification because
9955 the order in which parallel notifications are delivered is not defined,
9956 therefore it could happen that these parameters were outdated by the
9957 time of processing this notification.
9958 </note>
9959 </desc>
9960 <param name="global" type="boolean" dir="in"/>
9961 </method>
9962
9963 <method name="onUSBDeviceAttach">
9964 <desc>
9965 Triggered when a request to capture a USB device (as a result
9966 of matched USB filters or direct call to
9967 <link to="IConsole::attachUSBDevice"/>) has completed.
9968 A @c null @a error object means success, otherwise it
9969 describes a failure.
9970 </desc>
9971 <param name="device" type="IUSBDevice" dir="in"/>
9972 <param name="error" type="IVirtualBoxErrorInfo" dir="in"/>
9973 <param name="maskedInterfaces" type="unsigned long" dir="in"/>
9974 </method>
9975
9976 <method name="onUSBDeviceDetach">
9977 <desc>
9978 Triggered when a request to release the USB device (as a result
9979 of machine termination or direct call to
9980 <link to="IConsole::detachUSBDevice"/>) has completed.
9981 A @c null @a error object means success, otherwise it
9982 </desc>
9983 <param name="id" type="uuid" dir="in"/>
9984 <param name="error" type="IVirtualBoxErrorInfo" dir="in"/>
9985 </method>
9986
9987 <method name="onShowWindow">
9988 <desc>
9989 Called by <link to="IMachine::canShowConsoleWindow()"/> and by
9990 <link to="IMachine::showConsoleWindow()"/> in order to notify
9991 console callbacks
9992 <link to="IConsoleCallback::onCanShowWindow()"/>
9993 and <link to="IConsoleCallback::onShowWindow()"/>.
9994 </desc>
9995 <param name="check" type="boolean" dir="in"/>
9996 <param name="canShow" type="boolean" dir="out"/>
9997 <param name="winId" type="unsigned long long" dir="out"/>
9998 </method>
9999
10000 <method name="accessGuestProperty">
10001 <desc>
10002 Called by <link to="IMachine::getGuestProperty()"/> and by
10003 <link to="IMachine::setGuestProperty()"/> in order to read and
10004 modify guest properties.
10005 </desc>
10006 <param name="name" type="wstring" dir="in"/>
10007 <param name="value" type="wstring" dir="in"/>
10008 <param name="flags" type="wstring" dir="in"/>
10009 <param name="isSetter" type="boolean" dir="in"/>
10010 <param name="retValue" type="wstring" dir="out"/>
10011 <param name="retTimestamp" type="unsigned long long" dir="out"/>
10012 <param name="retFlags" type="wstring" dir="out"/>
10013 </method>
10014
10015 <method name="enumerateGuestProperties">
10016 <desc>
10017 Return a list of the guest properties matching a set of patterns along
10018 with their values, timestamps and flags.
10019 </desc>
10020 <param name="patterns" type="wstring" dir="in">
10021 <desc>
10022 The patterns to match the properties against as a comma-separated
10023 string. If this is empty, all properties currently set will be
10024 returned.
10025 </desc>
10026 </param>
10027 <param name="key" type="wstring" dir="out" safearray="yes">
10028 <desc>
10029 The key names of the properties returned.
10030 </desc>
10031 </param>
10032 <param name="value" type="wstring" dir="out" safearray="yes">
10033 <desc>
10034 The values of the properties returned. The array entries match the
10035 corresponding entries in the @a key array.
10036 </desc>
10037 </param>
10038 <param name="timestamp" type="unsigned long long" dir="out" safearray="yes">
10039 <desc>
10040 The timestamps of the properties returned. The array entries match
10041 the corresponding entries in the @a key array.
10042 </desc>
10043 </param>
10044 <param name="flags" type="wstring" dir="out" safearray="yes">
10045 <desc>
10046 The flags of the properties returned. The array entries match the
10047 corresponding entries in the @a key array.
10048 </desc>
10049 </param>
10050 </method>
10051
10052 </interface>
10053
10054 <interface
10055 name="ISession" extends="$dispatched"
10056 uuid="12F4DCDB-12B2-4ec1-B7CD-DDD9F6C5BF4D"
10057 wsmap="managed"
10058 >
10059 <desc>
10060 The ISession interface represents a serialization primitive for virtual
10061 machines.
10062
10063 Within VirtualBox, every time one wishes to manipulate a virtual machine
10064 (for example, change its settings or start execution), an instance of
10065 the ISession interface is required. One first creates a local session
10066 object that implements the ISession interface and then passes the
10067 created object with the method call that opens the given session and
10068 thus initiates the machine manipulation. The session serves several
10069 purposes: it identifies to the inter-process VirtualBox code which
10070 process is currently working with the virtual machine, and it ensures
10071 that there are no incompatible requests from several processes for the
10072 same virtual machine.
10073
10074 How sessions objects are used depends on whether you use the Main API
10075 via COM or via the web service:
10076
10077 <ul>
10078 <li>When using the COM API directly, an object of the Session class from the
10079 VirtualBox type library needs to be created. In regular COM C++ client code,
10080 this can be done by calling <tt>createLocalObject()</tt>, a standard COM API.
10081 This object will then act as a local session object in further calls to open
10082 a session.
10083 </li>
10084
10085 <li>In the webservice, the session manager (IWebsessionManager) instead creates
10086 one session object automatically when <link to="IWebsessionManager::logon" />
10087 is called. A managed object reference to that session object can be retrieved by
10088 calling <link to="IWebsessionManager::getSessionObject" />. This session object
10089 reference can then be used to open sessions.
10090 </li>
10091 </ul>
10092
10093 Sessions are mainly used in two variations:
10094
10095 <ul>
10096 <li>
10097 To start a virtual machine in a separate process, one would call
10098 <link to="IVirtualBox::openRemoteSession"/>, which requires a session
10099 object as its first parameter. This session then identifies the caller
10100 and lets him control the started machine (for example, pause machine
10101 execution or power it down) as well as be notified about machine
10102 execution state changes.
10103 </li>
10104
10105 <li>To alter machine settings, or to start machine execution within the
10106 current process, one needs to open a direct session for the machine first by
10107 calling <link to="IVirtualBox::openSession"/>. While a direct session
10108 is open within one process, no any other process may open another direct
10109 session for the same machine. This prevents the machine from being changed
10110 by other processes while it is running or while the machine is being configured.
10111 </li>
10112 </ul>
10113
10114 One also can attach to an existing direct session alreay opened by
10115 another process (for example, in order to send a control request to the
10116 virtual machine such as the pause or the reset request). This is done by
10117 calling <link to="IVirtualBox::openExistingSession"/>.
10118
10119 <note>
10120 Unless you are trying to write a new VirtualBox front-end that
10121 performs direct machine execution (like the VirtualBox or VBoxSDL
10122 front-ends), don't call <link to="IConsole::powerUp"/> in a direct
10123 session opened by <link to="IVirtualBox::openSession"/> and use this
10124 session only to change virtual machine settings. If you simply want to
10125 start virtual machine execution using one of the existing front-ends
10126 (for example the VirtualBox GUI or headless server), simply use
10127 <link to="IVirtualBox::openRemoteSession"/>; these front-ends
10128 will power up the machine automatically for you.
10129 </note>
10130 </desc>
10131
10132 <attribute name="state" type="SessionState" readonly="yes">
10133 <desc>Current state of this session.</desc>
10134 </attribute>
10135
10136 <attribute name="type" type="SessionType" readonly="yes">
10137 <desc>
10138 Type of this session. The value of this attribute is valid only
10139 if the session is currently open (i.e. its #state is SessionType::SessionOpen),
10140 otherwise an error will be returned.
10141 </desc>
10142 </attribute>
10143
10144 <attribute name="machine" type="IMachine" readonly="yes">
10145 <desc>Machine object associated with this session.</desc>
10146 </attribute>
10147
10148 <attribute name="console" type="IConsole" readonly="yes">
10149 <desc>Console object associated with this session.</desc>
10150 </attribute>
10151
10152 <method name="close">
10153 <desc>
10154 Closes this session.
10155 <note>
10156 If a direct session for a machine opened with
10157 <link to="IVirtualBox::openSession()"/> is not explicitly
10158 closed when the application terminates, the state of the
10159 machine will be set to <link to="MachineState::Aborted"/>
10160 on the server. Generally, it is recommended to close all
10161 open sessions explicitly before terminating the application
10162 (no matter what is the reason of the termination).
10163 </note>
10164 </desc>
10165 </method>
10166
10167 </interface>
10168
10169 <!--
10170 // ISATAController
10171 /////////////////////////////////////////////////////////////////////////
10172 -->
10173
10174 <interface
10175 name="ISATAController" extends="$unknown"
10176 uuid="9a4b868b-1376-4533-8ef5-065b8e8cedff"
10177 wsmap="managed"
10178 >
10179 <attribute name="enabled" type="boolean">
10180 <desc>
10181 Flag whether the SATA controller is present in the
10182 guest system. If disabled, the virtual guest hardware will
10183 not contain any SATA controller. Can only be changed when
10184 the VM is powered off.
10185 </desc>
10186 </attribute>
10187
10188 <attribute name="portCount" type="unsigned long">
10189 <desc>
10190 The number of usable ports on the sata controller.
10191 It ranges from 1 to 30.
10192 </desc>
10193 </attribute>
10194
10195 <method name="GetIDEEmulationPort">
10196 <desc>Gets the corresponding port number which is emulated as an IDE device.</desc>
10197 <param name="devicePosition" type="long" dir="in"/>
10198 <param name="portNumber" type="long" dir="return"/>
10199 </method>
10200
10201 <method name="SetIDEEmulationPort">
10202 <desc>Sets the port number which is emulated as an IDE device.</desc>
10203 <param name="devicePosition" type="long" dir="in"/>
10204 <param name="portNumber" type="long" dir="in"/>
10205 </method>
10206
10207 </interface>
10208
10209<if target="wsdl">
10210
10211 <!--
10212 // IManagedObjectRef
10213 /////////////////////////////////////////////////////////////////////////
10214 -->
10215
10216 <interface
10217 name="IManagedObjectRef" extends="$unknown"
10218 uuid="9474d09d-2313-46de-b568-a42b8718e8ed"
10219 internal="yes"
10220 wsmap="managed"
10221 wscpp="hardcoded"
10222 >
10223 <desc>
10224 Webservice only: Managed object reference.
10225
10226 Only within the webservice, a managed object reference (which is really
10227 an opaque number) allows a webservice client to address an object
10228 that lives in the address space of the webservice server.
10229
10230 Behind each managed object reference, there is a COM object that lives
10231 in the webservice server's address space. The COM object is not freed
10232 until the managed object reference is released, either by an explicit
10233 call to <link to="IManagedObjectRef::release" /> or by logging off from
10234 the webservice (<link to="IWebsessionManager::logoff" />), which releases
10235 all objects created during the webservice session.
10236
10237 Whenever a method call of the VirtualBox API returns a COM object, the
10238 webservice representation of that method will instead return a
10239 managed object reference, which can then be used to invoke methods
10240 on that object.
10241 </desc>
10242
10243 <method name="getInterfaceName">
10244 <desc>
10245 Returns the name of the interface that this managed object represents,
10246 for example, "IMachine", as a string.
10247 </desc>
10248 <param name="return" type="wstring" dir="return"/>
10249 </method>
10250
10251 <method name="release">
10252 <desc>
10253 Releases this managed object reference and frees the resources that
10254 were allocated for it in the webservice server process. After calling
10255 this method, the identifier of the reference can no longer be used.
10256 </desc>
10257 </method>
10258
10259 </interface>
10260
10261 <!--
10262 // IWebsessionManager
10263 /////////////////////////////////////////////////////////////////////////
10264 -->
10265
10266 <interface
10267 name="IWebsessionManager" extends="$unknown"
10268 uuid="dea1b4c7-2de3-418a-850d-7868617f7733"
10269 internal="yes"
10270 wsmap="global"
10271 wscpp="hardcoded"
10272 >
10273 <desc>
10274 Webservice only: Websession manager. This provides essential services
10275 to webservice clients.
10276 </desc>
10277 <method name="logon">
10278 <desc>
10279 Logs a new client onto the webservice and returns a managed object reference to
10280 the IVirtualBox instance, which the client can then use as a basis to further
10281 queries, since all calls to the VirtualBox API are based on the IVirtualBox
10282 interface, in one way or the other.
10283 </desc>
10284 <param name="username" type="wstring" dir="in"/>
10285 <param name="password" type="wstring" dir="in"/>
10286 <param name="return" type="IVirtualBox" dir="return"/>
10287 </method>
10288
10289 <method name="getSessionObject">
10290 <desc>
10291 Returns a managed object reference to the internal ISession object that was created
10292 for this web service session when the client logged on.
10293
10294 <see>ISession</see>
10295 </desc>
10296 <param name="refIVirtualBox" type="wstring" dir="in"/>
10297 <param name="return" type="wstring" dir="return"/>
10298 </method>
10299
10300 <method name="logoff">
10301 <desc>
10302 Logs off the client who has previously logged on with <link to="IWebsessionManager::logoff" />
10303 and destroys all resources associated with the session (most importantly, all
10304 managed objects created in the server while the session was active).
10305 </desc>
10306 <param name="refIVirtualBox" type="wstring" dir="in"/>
10307 </method>
10308
10309 </interface>
10310
10311</if>
10312
10313 <!--
10314 // IPerformanceCollector & friends
10315 /////////////////////////////////////////////////////////////////////////
10316 -->
10317
10318 <interface
10319 name="IPerformanceMetric" extends="$unknown"
10320 uuid="50831d4c-ed55-4221-836c-87b487d3b44a" wsmap="managed"
10321 >
10322 <desc>
10323 The IPerformanceMetric interface represents parameters of the given
10324 performance metric.
10325 </desc>
10326
10327 <attribute name="metricName" type="wstring" readonly="yes">
10328 <desc>
10329 Name of the metric.
10330 </desc>
10331 </attribute>
10332
10333 <attribute name="object" type="$unknown" readonly="yes">
10334 <desc>
10335 Object this metric belongs to.
10336 </desc>
10337 </attribute>
10338
10339 <attribute name="period" type="unsigned long" readonly="yes">
10340 <desc>
10341 Time interval between samples, measured in seconds.
10342 </desc>
10343 </attribute>
10344
10345 <attribute name="count" type="unsigned long" readonly="yes">
10346 <desc>
10347 Number of recent samples retained by the performance collector for this
10348 metric.
10349
10350 When the collected sample count exceeds this number, older samples
10351 are discarded.
10352 </desc>
10353 </attribute>
10354
10355 <attribute name="unit" type="wstring" readonly="yes">
10356 <desc>
10357 Unit of measurement.
10358 </desc>
10359 </attribute>
10360
10361 <attribute name="minimumValue" type="long" readonly="yes">
10362 <desc>
10363 Minimum possible value of this metric.
10364 </desc>
10365 </attribute>
10366
10367 <attribute name="maximumValue" type="long" readonly="yes">
10368 <desc>
10369 Maximum possible value of this metric.
10370 </desc>
10371 </attribute>
10372 </interface>
10373
10374 <interface
10375 name="IPerformanceCollector" extends="$unknown"
10376 uuid="dcd37e5a-3964-43d1-be30-0f3c7234e347"
10377 wsmap="managed"
10378 >
10379 <desc>
10380 The IPerformanceCollector interface represents a service that collects and
10381 stores performance metrics data.
10382
10383 Performance metrics are associated with objects like IHost and
10384 ISessionMachine. Each object has a distinct set of performance metrics.
10385 The set can be obtained with <link to="IPerformanceCollector::getMetrics"/>.
10386
10387 Metric data are collected at the specified intervals and are retained
10388 internally. The interval and the number of samples retained can be set
10389 with <link to="IPerformanceCollector::setMetrics" />.
10390
10391 Metrics are organized hierarchically, each level separated by slash (/).
10392 General scheme for metric name is
10393 "Category/Metric[/SubMetric][:aggregation]". For example CPU/Load/User:avg
10394 metric name stands for: CPU category, Load metric, User submetric, average
10395 aggregate. An aggregate function is computed over all retained data. Valid
10396 aggregate functions are:
10397
10398 <ul>
10399 <li>avg -- average</li>
10400 <li>min -- minimum</li>
10401 <li>max -- maximum</li>
10402 </ul>
10403
10404 "Category/Metric" together form base metric name. A base metric is the
10405 smallest unit for which a sampling interval and the number of retained
10406 samples can be set. Only base metrics can be enabled and disabled. All
10407 sub-metrics are collected when their base metric is collected.
10408 Collected values for any set of sub-metrics can be queried with
10409 <link to="IPerformanceCollector::queryMetricsData" />.
10410
10411 The valid names for base metrics are:
10412
10413 <ul>
10414 <li>CPU/Load</li>
10415 <li>CPU/MHz</li>
10416 <li>RAM/Usage</li>
10417 </ul>
10418
10419 The general sequence for collecting and retrieving the metrics is:
10420 <ul>
10421 <li>
10422 Obtain an instance of IPerfromanceCollector with
10423 <link to="IVirtualBox::performanceCollector" />
10424 </li>
10425 <li>
10426 Allocate and populate an array with references to objects the metrics
10427 will be collected for.
10428 </li>
10429 <li>
10430 Allocate and populate an array with base metric names the data will be
10431 collected for.
10432 </li>
10433 <li>
10434 Call <link to="IPerformanceCollector::setupMetrics" />. From now on the
10435 metric data will be collected and stored.
10436 </li>
10437 <li>
10438 Wait for the data to get collected.
10439 </li>
10440 <li>
10441 Allocate and populate an array with references to objects the metric
10442 values will be queried for. You can re-use the object array used for
10443 setting base metrics.
10444 </li>
10445 <li>
10446 Allocate and populate an array with metric names the data will be
10447 collected for. Note that metric names differ from base metric names.
10448 </li>
10449 <li>
10450 Call <link to="IPerformanceCollector::queryMetricsData" />. The data that
10451 have been collected so far are returned. Note that the values are still
10452 retained internally and data collection continues.
10453 </li>
10454 </ul>
10455 </desc>
10456
10457 <attribute name="metricNames" type="wstring" readonly="yes" safearray="yes">
10458 <desc>
10459 Array of unique names of metrics.
10460
10461 This array represents all metrics supported by the performance
10462 collector. Individual objects do not necessarily support all of them.
10463 <link to="IPerformanceCollector::getMetrics"/> can be used to get the
10464 list of supported metrics for a particular object.
10465 </desc>
10466 </attribute>
10467
10468 <method name="getMetrics">
10469 <desc>
10470 Returns parameters of specified metrics for a set of objects.
10471 <note>
10472 @c Null metrics array means all metrics. @c Null object array means
10473 all existing objects.
10474 </note>
10475 </desc>
10476 <param name="metricNames" type="wstring" dir="in" safearray="yes">
10477 <desc>
10478 Metric name filter. Currently, only a comma-separated list of metrics
10479 is supported.
10480 </desc>
10481 </param>
10482 <param name="objects" type="$unknown" dir="in" safearray="yes">
10483 <desc>
10484 Set of objects to return metric parameters for.
10485 </desc>
10486 </param>
10487 <param name="metrics" type="IPerformanceMetric" dir="return" safearray="yes">
10488 <desc>
10489 Array of returned metric parameters.
10490 </desc>
10491 </param>
10492 </method>
10493
10494 <method name="setupMetrics">
10495 <desc>
10496 Sets parameters of specified base metrics for a set of objects.
10497 <note>
10498 @c Null metrics array means all metrics. @c Null object array means
10499 all existing objects.
10500 </note>
10501 </desc>
10502 <param name="metricNames" type="wstring" dir="in" safearray="yes">
10503 <desc>
10504 Metric name filter. Currently, only a comma-separated list of metrics
10505 is supported.
10506 </desc>
10507 </param>
10508 <param name="objects" type="$unknown" dir="in" safearray="yes">
10509 <desc>
10510 Set of objects to setup metric parameters for.
10511 </desc>
10512 </param>
10513 <param name="period" type="unsigned long" dir="in">
10514 <desc>
10515 Time interval in seconds between two consecutive samples of performace
10516 data.
10517 </desc>
10518 </param>
10519 <param name="count" type="unsigned long" dir="in">
10520 <desc>
10521 Number of samples to retain in performance data history. Older samples
10522 get discarded.
10523 </desc>
10524 </param>
10525 </method>
10526
10527 <method name="enableMetrics">
10528 <desc>
10529 Turns on collecting specified base metrics.
10530 <note>
10531 @c Null metrics array means all metrics. @c Null object array means
10532 all existing objects.
10533 </note>
10534 </desc>
10535 <param name="metricNames" type="wstring" dir="in" safearray="yes">
10536 <desc>
10537 Metric name filter. Currently, only a comma-separated list of metrics
10538 is supported.
10539 </desc>
10540 </param>
10541 <param name="objects" type="$unknown" dir="in" safearray="yes">
10542 <desc>
10543 Set of objects to enable metrics for.
10544 </desc>
10545 </param>
10546 </method>
10547
10548 <method name="disableMetrics">
10549 <desc>
10550 Turns off collecting specified base metrics.
10551 <note>
10552 @c Null metrics array means all metrics. @c Null object array means
10553 all existing objects.
10554 </note>
10555 </desc>
10556 <param name="metricNames" type="wstring" dir="in" safearray="yes">
10557 <desc>
10558 Metric name filter. Currently, only a comma-separated list of metrics
10559 is supported.
10560 </desc>
10561 </param>
10562 <param name="objects" type="$unknown" dir="in" safearray="yes">
10563 <desc>
10564 Set of objects to disable metrics for.
10565 </desc>
10566 </param>
10567 </method>
10568
10569 <method name="queryMetricsData">
10570 <desc>
10571 Queries collected metrics data for a set of objects.
10572
10573 The data itself and related metric information are returned in four
10574 parallel and one flattened array of arrays. Elements of @c
10575 returnMetricNames, @c returnObjects, @c returnDataIndices and @c
10576 returnDataLengths with the same index describe one set of values
10577 corresponding to a single metric.
10578
10579 The @a returnData parameter is a flattened array of arrays. Each start
10580 and length of a sub-array is indicated by @a returnDataIndices and @a
10581 returnDataLengths. The first value for metric <tt>metricNames[i]</tt> is at
10582 <tt> returnData[returnIndices[i]]</tt>.
10583
10584 <note>
10585 @c Null metrics array means all applicable metrics. @c Null object
10586 array means all existing objects.
10587 </note>
10588 <note>
10589 Data collection continues behind the scenes after call to @c
10590 queryMetricsData. The return data can be seen as the snapshot of
10591 the current state at the time of @c queryMetricsData call. The
10592 internally kept metric values are not cleared by the call. This makes
10593 possible querying different subsets of metrics or aggregates with
10594 subsequent calls. If periodic querying is needed it is highly
10595 suggested to query the values with @c interval*count period to avoid
10596 confusion. This way a completely new set of data values will be
10597 provided by each query.
10598 </note>
10599 </desc>
10600 <param name="metricNames" type="wstring" dir="in" safearray="yes">
10601 <desc>
10602 Metric name filter. Currently, only a comma-separated list of metrics
10603 is supported.
10604 </desc>
10605 </param>
10606 <param name="objects" type="$unknown" dir="in" safearray="yes">
10607 <desc>
10608 Set of objects to query metrics for.
10609 </desc>
10610 </param>
10611 <param name="returnMetricNames" type="wstring" dir="out" safearray="yes">
10612 <desc>
10613 Names of metrics returned in @c returnData.
10614 </desc>
10615 </param>
10616 <param name="returnObjects" type="$unknown" dir="out" safearray="yes">
10617 <desc>
10618 Objects associated with metrics returned in @c returnData.
10619 </desc>
10620 </param>
10621 <param name="returnDataIndices" type="unsigned long" dir="out" safearray="yes">
10622 <desc>
10623 Indices of the first elements of value sequences of particular metrics
10624 returned in @c returnData.
10625 </desc>
10626 </param>
10627 <param name="returnDataLengths" type="unsigned long" dir="out" safearray="yes">
10628 <desc>
10629 Lengths of value sequences of particular metrics.
10630 </desc>
10631 </param>
10632 <param name="returnData" type="long" dir="return" safearray="yes">
10633 <desc>
10634 Flattened array of all metric data containing sequences of values for
10635 each metric.
10636 </desc>
10637 </param>
10638 </method>
10639
10640 </interface>
10641
10642 <module name="VBoxSVC" context="LocalServer">
10643 <class name="VirtualBox" uuid="B1A7A4F2-47B9-4A1E-82B2-07CCD5323C3F"
10644 namespace="virtualbox.org">
10645 <interface name="IVirtualBox" default="yes"/>
10646 </class>
10647 </module>
10648
10649 <module name="VBoxC" context="InprocServer" threadingModel="Free">
10650 <class name="Session" uuid="3C02F46D-C9D2-4f11-A384-53F0CF917214"
10651 namespace="virtualbox.org">
10652 <interface name="ISession" default="yes"/>
10653 </class>
10654 </module>
10655
10656</library>
10657
10658</idl>
Note: See TracBrowser for help on using the repository browser.

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