VirtualBox

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

Last change on this file since 400 was 359, checked in by vboxsync, 18 years ago

Main: Updated IHardDisk::accessible docs.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 274.6 KB
Line 
1<?xml version="1.0" ?>
2
3<!--
4 * VBox COM/XPCOM Type Library.
5
6 * Copyright (C) 2006 InnoTek Systemberatung GmbH
7 *
8 * This file is part of VirtualBox Open Source Edition (OSE), as
9 * available from http://www.virtualbox.org. This file is free software;
10 * you can redistribute it and/or modify it under the terms of the GNU
11 * General Public License as published by the Free Software Foundation,
12 * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
13 * distribution. VirtualBox OSE is distributed in the hope that it will
14 * be useful, but WITHOUT ANY WARRANTY of any kind.
15 *
16 * If you received this file as part of a commercial VirtualBox
17 * distribution, then only the terms of your commercial VirtualBox
18 * license agreement apply instead of the previous paragraph.
19-->
20
21<idl>
22
23<if target="midl">
24 <cpp line="enum {"/>
25 <cpp line=" kTypeLibraryMajorVersion = 1,"/>
26 <cpp line=" kTypeLibraryMinorVersion = 0"/>
27 <cpp line="};"/>
28</if>
29
30<if target="xpidl">
31 <!-- NS_IMPL_THREADSAFE_ISUPPORTSxx_CI macros are placed here, for convenience -->
32 <cpp>
33// currenty, nsISupportsImpl.h lacks the below-like macros
34#ifndef NS_IMPL_THREADSAFE_ISUPPORTS1_CI
35#define NS_IMPL_THREADSAFE_ISUPPORTS1_CI(_class, _interface) \
36 NS_IMPL_THREADSAFE_ADDREF(_class) \
37 NS_IMPL_THREADSAFE_RELEASE(_class) \
38 NS_IMPL_QUERY_INTERFACE1_CI(_class, _interface) \
39 NS_IMPL_CI_INTERFACE_GETTER1(_class, _interface)
40#endif
41#ifndef NS_IMPL_THREADSAFE_ISUPPORTS2_CI
42#define NS_IMPL_THREADSAFE_ISUPPORTS2_CI(_class, _i1, _i2) \
43 NS_IMPL_THREADSAFE_ADDREF(_class) \
44 NS_IMPL_THREADSAFE_RELEASE(_class) \
45 NS_IMPL_QUERY_INTERFACE2_CI(_class, _i1, _i2) \
46 NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2)
47#endif
48 </cpp>
49</if>
50
51<module
52 name="VirtualBox"
53 uuid="46137EEC-703B-4fe5-AFD4-7C9BBBBA0259"
54 version="1.0"
55 desc="InnoTek VirtualBox Machine Type Library"
56 supportsErrorInfo="yes"
57>
58
59 <!--
60 // all common enums
61 /////////////////////////////////////////////////////////////////////////
62 -->
63
64 <enum
65 name="TriStateBool"
66 uuid="523ff64d-842a-4b1a-80e7-c311b028cb3a"
67 >
68 <desc>
69 This represents a boolean variable having a third state, default.
70 </desc>
71
72 <const name="False" value="0"/>
73 <const name="True" value="1"/>
74 <const name="Default" value="2"/>
75 </enum>
76
77 <enum
78 name="MachineState"
79 uuid="b8bb15f7-4fa2-4e84-87a8-b4677dd87deb"
80 >
81 <desc>
82 Virtual machine execution state. This enumeration represents possible
83 values of the <link to="IMachine::state"/> attribute.
84 </desc>
85
86 <const name="InvalidMachineState" value="0"/>
87 <const name="PoweredOff" value="1">
88 <desc>
89 The machine is not running.
90 </desc>
91 </const>
92 <const name="Saved" value="2">
93 <desc>
94 The machine is not currently running, but the execution state
95 of the machine has been saved to an external file when it
96 was running.
97 <note>
98 No any machine settings can be altered when the machine
99 is in this state.
100 </note>
101 </desc>
102 </const>
103 <const name="Aborted" value="3">
104 <desc>
105 A process that run the machine has abnormally terminated.
106 Other than that, this value is equivalent to #PoweredOff.
107 </desc>
108 </const>
109 <const name="Running" value="4">
110 <desc>
111 The machine is currently being executed.
112 <note>
113 This value can be used in comparison expressions:
114 all state values below it describe a virtual machine that is
115 not currently being executed (i.e., it is completely out of
116 action).
117 </note>
118 </desc>
119 </const>
120 <const name="Paused" value="5">
121 <desc>
122 The execution of the machine has been paused.
123 <note>
124 This value can be used in comparison expressions:
125 all state values above it represent unstable states of the
126 virtual machine. No any settings can be altered when the
127 VM is in one of the unstable sates.
128 </note>
129 </desc>
130 </const>
131 <const name="Starting" value="6">
132 <desc>
133 The machine is being started after
134 <link to="IConsole::powerUp">powering it on</link> from a
135 zero execution state.
136 </desc>
137 </const>
138 <const name="Stopping" value="7">
139 <desc>
140 The machine is being normally stopped
141 (after explicitly <link to="IConsole::powerDown">powering it off</link>,
142 or after the guest OS has initiated a shutdown sequence).
143 </desc>
144 </const>
145 <const name="Saving" value="8">
146 <desc>
147 The machine is saving its execution state to a file as a
148 result of calling <link to="IConsole::saveState"/> or an online
149 snapshot of the machine is being taken using
150 <link to="IConsole::takeSnapshot"/>.
151 </desc>
152 </const>
153 <const name="Restoring" value="9">
154 <desc>
155 The execution state of the machine is being restored from a file
156 after <link to="IConsole::powerUp">powering it on</link> from
157 a saved execution state.
158 </desc>
159 </const>
160 <const name="Discarding" value="10">
161 <desc>
162 A snapshot of the machine is being discarded after calling
163 <link to="IConsole::discardSnapshot"/> or its current state is
164 being discarded after <link to="IConsole::discardCurrentState"/>.
165 </desc>
166 </const>
167 </enum>
168
169 <enum
170 name="SessionState"
171 uuid="CF2700C0-EA4B-47ae-9725-7810114B94D8"
172 >
173 <desc>
174 Session state. This enumeration represents possible values of
175 <link to="IMachine::sessionState"/> and <link to="ISession::state"/>
176 attributes. Idividual value descriptions contain the appropriate
177 meaning for every case.
178 </desc>
179
180 <const name="InvalidSessionState" value="0"/>
181 <const name="SessionClosed" value="1">
182 <desc>
183 The machine has no open sessions (<link to="IMachine::sessionState"/>);
184 the session is closed (<link to="ISession::state"/>)
185 </desc>
186 </const>
187 <const name="SessionOpen" value="2">
188 <desc>
189 The machine has an open direct session (<link to="IMachine::sessionState"/>);
190 the session is open (<link to="ISession::state"/>)
191 </desc>
192 </const>
193 <const name="SessionSpawning" value="3">
194 <desc>
195 A new (direct) session is being opened for the machine
196 as a result of <link to="IVirtualBox::openRemoteSession()"/>
197 call (<link to="IMachine::sessionState"/>);
198 the session is currently being opened
199 as a result of <link to="IVirtualBox::openRemoteSession()"/>
200 call (<link to="ISession::state"/>)
201 </desc>
202 </const>
203 <const name="SessionClosing" value="4">
204 <desc>
205 The direct session is being closed (<link to="IMachine::sessionState"/>);
206 the session is being closed (<link to="ISession::state"/>)
207 </desc>
208 </const>
209 </enum>
210
211 <enum
212 name="SessionType"
213 uuid="A13C02CB-0C2C-421E-8317-AC0E8AAA153A"
214 >
215 <desc>
216 Session type. This enumeration represents possible values of the
217 <link to="ISession::type"/> attribute.
218 </desc>
219
220 <const name="InvalidSessionType" value="0"/>
221 <const name="DirectSession" value="1">
222 <desc>
223 Direct session
224 (opened by <link to="IVirtualBox::openSession()"/>)
225 </desc>
226 </const>
227 <const name="RemoteSession" value="2">
228 <desc>
229 Remote session
230 (opened by <link to="IVirtualBox::openRemoteSession()"/>)
231 </desc>
232 </const>
233 <const name="ExistingSession" value="3">
234 <desc>
235 Existing session
236 (opened by <link to="IVirtualBox::openExistingSession()"/>)
237 </desc>
238 </const>
239 </enum>
240
241 <enum
242 name="DeviceType"
243 uuid="8B7F8ADE-E8F7-42a4-9661-9F5092C4DB4C"
244 >
245 <desc>
246 Device type.
247 </desc>
248 <const name="NoDevice" value="0">
249 <desc>
250 No Device. This value is not used by
251 <link to="IConsole::getDeviceActivity"/>
252 </desc>
253 </const>
254 <const name="FloppyDevice" value="1">
255 <desc>Floppy device.</desc>
256 </const>
257 <const name="DVDDevice" value="2">
258 <desc>CD/DVD-ROM device.</desc>
259 </const>
260 <const name="HardDiskDevice" value="3">
261 <desc>Hard disk device.</desc>
262 </const>
263 <const name="NetworkDevice" value="4">
264 <desc>Network device.</desc>
265 </const>
266 </enum>
267
268 <enum
269 name="DeviceActivity"
270 uuid="6FC8AEAA-130A-4eb5-8954-3F921422D707"
271 >
272 <const name="InvalidActivity" value="0"/>
273 <const name="DeviceIdle" value="1"/>
274 <const name="DeviceReading" value="2"/>
275 <const name="DeviceWriting" value="3"/>
276 </enum>
277
278 <enum
279 name="ResourceUsage"
280 uuid="FC56E4B6-B195-48e2-A5E1-A667B0D9F809"
281 >
282 <desc>
283 Usage type constants for
284 <link to="IVirtualBox::getDVDImageUsage"/> and
285 <link to="IVirtualBox::getFloppyImageUsage"/>.
286 </desc>
287 <const name="InvalidUsage" value="0"/>
288 <const name="PermanentUsage" value="1">
289 <desc>
290 Scopes the VMs that use the resource permanently
291 (the information about this usage is stored in the VM
292 settings file).
293 </desc>
294 </const>
295 <const name="TemporaryUsage" value="2">
296 <desc>
297 Scopes the VMs that are temporarily using the resource
298 (the information about the usage is not yet saved in the VM
299 settings file). Temporary usage can take place only in the
300 context of an open session.
301 </desc>
302 </const>
303 <const name="AllUsage" value="3">
304 <desc>
305 Combines PermanentUsage and TemporaryUsage.
306 </desc>
307 </const>
308 </enum>
309
310 <enum
311 name="DiskControllerType"
312 uuid="1115b810-2ee7-4ebd-8b39-92e98c9a2b48"
313 >
314 <const name="InvalidController" value="0"/>
315 <const name="IDE0Controller" value="1"/>
316 <const name="IDE1Controller" value="2"/>
317 </enum>
318
319 <enum
320 name="ClipboardMode"
321 uuid="33364716-4008-4701-8f14-be0fa3d62950"
322 >
323 <const name="ClipDisabled" value="0"/>
324 <const name="ClipHostToGuest" value="1"/>
325 <const name="ClipGuestToHost" value="2"/>
326 <const name="ClipBidirectional" value="3"/>
327 </enum>
328
329 <!--
330 // IVirtualBoxErrorInfo
331 /////////////////////////////////////////////////////////////////////////
332 -->
333
334 <interface
335 name="IVirtualBoxErrorInfo" extends="$errorinfo"
336 uuid="37EDE76D-6E16-4CE4-9D48-2C5A87AFFEA2"
337 supportsErrorInfo="no"
338 >
339 <desc>
340 The IVirtualBoxErrorInfo interface represents extended error information
341 that can be set by components after unsuccessful method invocation and
342 returned to the client in addition to the result code.
343
344 In MS COM, this interface extends the IErrorInfo interface,
345 in XPCOM, it extends the nsIException interface. In both cases,
346 it provides a set of common attributes to retrieve error information.
347 </desc>
348
349 <attribute name="resultCode" type="result" readonly="yes">
350 <desc>
351 Result code of the error.
352 Usually, it will be the same as the result code returned
353 by the method that provided this error information, but not
354 always. For example, on Win32, CoCreateInstance() will most
355 likely return E_NOINTERFACE upon unsuccessful component
356 instantiation attempt, but not the value the component factory
357 returned.
358 <note>
359 In MS COM, there is no equivalent.
360 In XPCOM, it is the same as to nsIException::result.
361 </note>
362 </desc>
363 </attribute>
364
365 <attribute name="interfaceID" type="uuid" readonly="yes">
366 <desc>
367 UUID of the interface that defined the error.
368 <note>
369 In MS COM, it is the same as to IErrorInfo::GetGUID.
370 In XPCOM, there is no equivalent.
371 </note>
372 </desc>
373 </attribute>
374
375 <attribute name="component" type="wstring" readonly="yes">
376 <desc>
377 Name of the component that generated the error.
378 <note>
379 In MS COM, it is the same as to IErrorInfo::GetSource.
380 In XPCOM, there is no eqiuvalent.
381 </note>
382 </desc>
383 </attribute>
384
385 <attribute name="text" type="wstring" readonly="yes">
386 <desc>
387 Text description of the error.
388 <note>
389 In MS COM, it is the same as IErrorInfo::GetDescription.
390 In XPCOM, it is the same as to nsIException::message.
391 </note>
392 </desc>
393 </attribute>
394
395 </interface>
396
397
398 <!--
399 // IVirtualBox
400 /////////////////////////////////////////////////////////////////////////
401 -->
402
403 <interface
404 name="IVirtualBoxCallback" extends="$unknown"
405 uuid="FD443EC1-2007-4F5B-9282-D72760A66916"
406 >
407 <method name="onMachineStateChange">
408 <desc>
409 The execution state of the given machine has changed.
410 <see>IMachine::state</see>
411 </desc>
412 <param name="machineId" type="uuid" dir="in">
413 <desc>ID of the machine this event relates to.</desc>
414 </param>
415 <param name="state" type="MachineState" dir="in">
416 <desc>New execution state.</desc>
417 </param>
418 </method>
419
420 <method name="onMachineDataChange">
421 <desc>
422 Any of the settings of the given machine has changed.
423 </desc>
424 <param name="machineId" type="uuid" dir="in">
425 <desc>ID of the machine this event relates to.</desc>
426 </param>
427 </method>
428
429 <method name="onExtraDataCanChange">
430 <desc>
431 Notification when someone tries to change extra data for
432 either the given machine or (if null) global extra data.
433 This gives the chance to veto against changes.
434 </desc>
435 <param name="machineId" type="uuid" dir="in">
436 <desc>
437 ID of the machine this event relates to.
438 Nul for global extra data change requests.
439 </desc>
440 </param>
441 <param name="key" type="wstring" dir="in">
442 <desc>
443 Extra data key for the attempted write.
444 </desc>
445 </param>
446 <param name="value" type="wstring" dir="in">
447 <desc>
448 Extra data value for the given key.
449 </desc>
450 </param>
451 <param name="allowChange" type="boolean" dir="return">
452 <desc>
453 Flag to indicate whether the callee agrees (true)
454 or vetoes against the change (false).
455 </desc>
456 </param>
457 </method>
458
459 <method name="onExtraDataChange">
460 <desc>
461 Notification when machine specific or global extra data
462 has changed.
463 </desc>
464 <param name="machineId" type="uuid" dir="in">
465 <desc>
466 ID of the machine this event relates to.
467 Null for global extra data changes.
468 </desc>
469 </param>
470 <param name="key" type="wstring" dir="in">
471 <desc>
472 Extra data key that has changed.
473 </desc>
474 </param>
475 <param name="value" type="wstring" dir="in">
476 <desc>
477 Extra data value for the given key.
478 </desc>
479 </param>
480 </method>
481
482 <method name="onMachineRegistered">
483 <desc>
484 The given machine was registered within this VirtualBox
485 installation or unregistered, as described by the
486 boolean argument.
487 </desc>
488 <param name="machineId" type="uuid" dir="in">
489 <desc>ID of the machine this event relates to.</desc>
490 </param>
491 <param name="registered" type="boolean" dir="in">
492 <desc>
493 If true, the machine was registered, otherwise it was
494 deregistered.
495 </desc>
496 </param>
497 </method>
498
499 <method name="onSessionStateChange">
500 <desc>
501 The state of the session for the given machine was changed.
502 <see>IMachine::sessionState</see>
503 </desc>
504 <param name="machineId" type="uuid" dir="in">
505 <desc>ID of the machine this event relates to.</desc>
506 </param>
507 <param name="state" type="SessionState" dir="in">
508 <desc>New session state.</desc>
509 </param>
510 </method>
511
512 <method name="onSnapshotTaken">
513 <desc>
514 A new snapshot of the machine has been taken.
515 <see>ISnapshot</see>
516 </desc>
517 <param name="machineId" type="uuid" dir="in">
518 <desc>ID of the machine this event relates to.</desc>
519 </param>
520 <param name="snapshotId" type="uuid" dir="in">
521 <desc>ID of the new snapshot.</desc>
522 </param>
523 </method>
524
525 <method name="onSnapshotDiscarded">
526 <desc>
527 Snapshot of the given machine has been discarded.
528
529 <note>
530 This notification is delivered <b>after</b> the snapshot
531 object has been uninitialized on the server (so that any
532 attempt to call its methods will return an error).
533 </note>
534
535 <see>ISnapshot</see>
536 </desc>
537 <param name="machineId" type="uuid" dir="in">
538 <desc>ID of the machine this event relates to.</desc>
539 </param>
540 <param name="snapshotId" type="uuid" dir="in">
541 <desc>
542 ID of the discarded snapshot. <tt>null</tt> means the
543 current machine state has been discarded (restored from
544 the current snapshot).
545 </desc>
546 </param>
547 </method>
548
549 <method name="onSnapshotChange">
550 <desc>
551 Snapshot properties (name and/or description) have been changed.
552 <see>ISnapshot</see>
553 </desc>
554 <param name="machineId" type="uuid" dir="in">
555 <desc>ID of the machine this event relates to.</desc>
556 </param>
557 <param name="snapshotId" type="uuid" dir="in">
558 <desc>ID of the changed snapshot.</desc>
559 </param>
560 </method>
561
562 </interface>
563
564 <interface
565 name="IVirtualBox" extends="$dispatched"
566 uuid="E1D95593-F579-4F47-B489-0B67181014E1"
567 >
568 <desc>
569 The main interface exposed by the product that provides
570 virtual machine management.
571 </desc>
572
573 <attribute name="version" type="wstring" readonly="yes">
574 <desc>
575 A string representing the version number of the product. The
576 format is 3 integer numbers divided by dots (e.g. 1.0.1). The
577 last number represents the build number and will frequently change.
578 </desc>
579 </attribute>
580
581 <attribute name="homeFolder" type="wstring" readonly="yes">
582 <desc>
583 Full path to the directory where the global settings file,
584 <tt>VirtualBox.xml</tt>, is stored.
585
586 In this version of VirtualBox, the value of this property is
587 always <tt>&lt;user_dir&gt;/.VirtualBox</tt> (where
588 <tt>&lt;user_dir&gt;</tt> is the path to the user directory,
589 as determined by the host OS), and cannot be changed.
590
591 This path is also used as the base to resolve relative paths in
592 places where relative paths are allowed (unless otherwise
593 expressly indicated).
594 </desc>
595 </attribute>
596
597 <attribute name="host" type="IHost" readonly="yes">
598 <desc>Associated host object.</desc>
599 </attribute>
600
601 <attribute name="systemProperties" type="ISystemProperties" readonly="yes">
602 <desc>Associated system information object.</desc>
603 </attribute>
604
605 <attribute name="machines" type="IMachineCollection" readonly="yes"/>
606
607 <attribute name="hardDisks" type="IHardDiskCollection" readonly="yes">
608 <desc>
609 A collection of hard disk objects registered within this
610 VirtualBox instance.
611 This collection contains only "top-level" (basic or independent)
612 hard disk images, but not differencing ones. All differencing
613 images of the given top-level image (i.e. all its children) can
614 be enumerated using <link to="IHardDisk::children"/>.
615 </desc>
616 </attribute>
617
618 <attribute name="DVDImages" type="IDVDImageCollection" readonly="yes"/>
619
620 <attribute name="FloppyImages" type="IFloppyImageCollection" readonly="yes"/>
621
622 <attribute name="progressOperations" type="IProgressCollection" readonly="yes"/>
623
624 <attribute name="guestOSTypes" type="IGuestOSTypeCollection" readonly="yes"/>
625
626 <attribute name="sharedFolders" type="ISharedFolderCollection" readonly="yes">
627 <desc>
628 Collection of globally shared folders. These folders
629 are shared automatically upon VirtualBox server startup and
630 available only to every virtual machine.
631
632 New folders to share are added to the collection using
633 <link to="#createSharedFolder"/>. An existing shared folder can
634 be removed using <link to="#removeSharedFolder"/>.
635 </desc>
636 </attribute>
637
638 <method name="createMachine">
639 <desc>
640 Creates a new virtual machine.
641
642 Every machine has a <i>settings file</i> that is used to store
643 the machine configuration. This file is stored in the directory
644 called <i>machine settings subfolder</i>. Both the subfolder
645 and the settings file have the same name that corresponds to the
646 name of the virtual machine. You can specify where
647 to create the machine settings subfolder using the @a
648 baseFolder argument. The base folder can be absolute (full path)
649 or relative to the <link to="IVirtualBox::homeFolder">
650 VirtualBox home directory</link>.
651
652 If a null or empty string is given as the base folder (which is
653 recommended), the <link to="ISystemProperties::defaultMachineFolder">
654 default machine settings folder</link> will be used as the base
655 folder to create the machine settings subfolder and file. In
656 any case, the full path to the settings file will look like:
657 <pre>
658 &lt;base_folder&gt;/&lt;machine_name&gt;/&lt;machine_name&gt;.xml</pre>
659
660 Note that the configuration of the newly created machine is not
661 saved to disk (and therefore no settings subfolder and file are
662 created) until <link to="IMachine::saveSettings()"/> is called.
663
664 You should also specify a valid name for the machine.
665 See the <link to="IMachine::name"/> property
666 description for more details about the machine name.
667
668 The created machine remains
669 unregistered until you call <link to="#registerMachine()"/>.
670
671 <note>
672 There is no way to change the name of the settings file or
673 subfolder of the created machine directly.
674 </note>
675 </desc>
676 <param name="baseFolder" type="wstring" dir="in">
677 <desc>
678 Name of the folder where to create the machine settings
679 subfolder containing the settings file.
680 </desc>
681 </param>
682 <param name="name" type="wstring" dir="in">
683 <desc>Machine name.</desc>
684 </param>
685 <param name="machine" type="IMachine" dir="return">
686 <desc>Created machine object.</desc>
687 </param>
688 </method>
689
690 <method name="createLegacyMachine">
691 <desc>
692 Creates a new virtual machine in "legacy" mode, using the
693 specified settings file to store machine settings.
694
695 As opposed to machines created by <link to="#createMachine()"/>,
696 the settings file of the machine created in "legacy" mode
697 is not authomatically renamed when the machine name is
698 changed -- it will always remain the same as specified in this
699 method call.
700
701 The specified settings file name can be absolute
702 (full path) or relative to the <link to="IVirtualBox::homeFolder">
703 VirtualBox home directory</link>. If the file name doesn't
704 contain an extension, the default extension (.xml) will be
705 appended.
706
707 Note that the configuration of the newly created machine is not
708 saved to disk (and therefore no settings file is created)
709 until <link to="IMachine::saveSettings()"/> is called. If the
710 specified settings file already exists,
711 <link to="IMachine::saveSettings()"/> will return an error.
712
713 You should also specify a valid name for the machine.
714 See the <link to="IMachine::name"/> property
715 description for more details about the machine name.
716
717 The created machine remains
718 unregistered until you call <link to="#registerMachine()"/>.
719
720 @deprecated This method may be removed later. It is better
721 to use <link to="IVirtualBox::createMachine()"/>.
722
723 <note>
724 There is no way to change the name of the settings file
725 of the created machine.
726 </note>
727 </desc>
728 <param name="settingsFile" type="wstring" dir="in">
729 <desc>
730 Name of the file where to store machine settings.
731 </desc>
732 </param>
733 <param name="name" type="wstring" dir="in">
734 <desc>Machine name.</desc>
735 </param>
736 <param name="machine" type="IMachine" dir="return">
737 <desc>Created machine object.</desc>
738 </param>
739 </method>
740
741 <method name="openMachine">
742 <desc>
743 Opens a virtual machine from the existing settings file.
744 The opened machine remains unregistered until you call
745 <link to="#registerMachine()"/>.
746
747 The specified settings file name can be absolute
748 (full path) or relative to the <link to="IVirtualBox::homeFolder">
749 VirtualBox home directory</link>. This file must exist
750 and must be a valid machine settings file whose contents
751 will be used to construct the machine object.
752
753 @deprecated Will be removed soon.
754 </desc>
755 <param name="settingsFile" type="wstring" dir="in">
756 <desc>
757 Name of the machine settings file.
758 </desc>
759 </param>
760 <param name="machine" type="IMachine" dir="return">
761 <desc>Opened machine object.</desc>
762 </param>
763 <note>
764 <link to="IMachine::settingsModified"/> will return
765 false for the created machine, until any of machine settigs
766 are changed.
767 </note>
768 </method>
769
770 <method name="registerMachine">
771 <desc>
772
773 Registers the machine previously created using <link
774 to="#createMachine()"/> or opened using <link to="#openMachine()"/>
775 within this VirtualBox installation. After successful method
776 invocation, the <link
777 to="IVirtualBoxCallback::onMachineRegistered"/> signal is sent
778 to all registered callbacks.
779
780 <note>This method implicitly calls <link
781 to="IMachine::saveSettings"/> to save all current machine
782 settings before registering it.</note>
783
784 </desc>
785 <param name="machine" type="IMachine" dir="in"/>
786 </method>
787
788 <method name="getMachine">
789 <param name="id" type="uuid" dir="in"/>
790 <param name="machine" type="IMachine" dir="return"/>
791 </method>
792
793 <method name="findMachine">
794 <param name="name" type="wstring" dir="in"/>
795 <param name="machine" type="IMachine" dir="return"/>
796 </method>
797
798 <method name="unregisterMachine">
799 <desc>
800
801 Unregisters the machine previously registered using <link
802 to="#registerMachine"/>. After successful method invocation, the
803 <link to="IVirtualBoxCallback::onMachineRegistered"/> signal is
804 sent to all registered callbacks.
805
806 <note> The specified machine must not be in the Saved state,
807 have an open (or a spawning) direct session associated with it,
808 have snapshots or have hard disks attached.</note>
809
810 <note>This method implicitly calls <link
811 to="IMachine::saveSettings"/> to save all current machine
812 settings before unregistering it.</note>
813
814 <note>If the given machine is inaccessible (see
815 <link to="IMachine::accessible"/>), it will be unregistered
816 and fully uninitialized right afterwards. As a result, the
817 returned machine object will be unusable and an attempt to call
818 <b>any</b> method will return the "Object not ready" error.
819 </note>
820
821 </desc>
822 <param name="id" type="uuid" dir="in">
823 <desc>UUID of the machine to unregister.</desc>
824 </param>
825 <param name="machine" type="IMachine" dir="return">
826 <desc>Unregistered machine object.</desc>
827 </param>
828 </method>
829
830 <method name="createHardDisk">
831 <desc>
832
833 Creates a new unregistered hard disk that will use the given
834 storage type.
835
836 Most properties of the created hard disk object are
837 uninitialized. Valid values must be assigned to them (and
838 probalby some actions performed) to make the actual usage of
839 this hard disk (<link to="#registerHardDisk()">register</link>,
840 attach to a virtual machine, etc.). See the description of <link
841 to="IHardDisk"/> and descriptions of storage type specific
842 interfaces for more information.
843
844 <note>For hard disks using the <link
845 to="HardDiskStorageType::VirtualDiskImage">VirtualDiskImage</link>
846 storage type, an image file is not actually created until you
847 call <link to="IVirtualDiskImage::createDynamicImage()"/> or
848 <link to="IVirtualDiskImage::createFixedImage()"/>.</note>
849
850 </desc>
851
852 <param name="storageType" type="HardDiskStorageType" dir="in">
853 <desc>Storage type of the hard disk image to create.</desc>
854 </param>
855 <param name="hardDisk" type="IHardDisk" dir="return">
856 <desc>Created hard disk object of the given storage type.</desc>
857 </param>
858
859 </method>
860
861 <method name="openVirtualDiskImage">
862 <desc>
863
864 Opens a hard disk from an existing Virtual Disk Image file.
865 The opened hard disk remains unregistered
866 until <link to="#registerHardDisk()"/> is called.
867
868 <note>Opening differencing images is not supported.</note>
869
870 <note>The specified file path can be absolute (full path) or
871 relative to the <link to="IVirtualBox::homeFolder"> VirtualBox
872 home directory</link>. If only a file name without any path is
873 given, the <link to="ISystemProperties::defaultVDIFolder">
874 default VDI folder</link> will be used as a path to the image
875 file.</note>
876
877 </desc>
878
879 <param name="filePath" type="wstring" dir="in">
880 <desc>
881 Name of the file that contains a valid Virtual Disk Image.
882 </desc>
883 </param>
884 <param name="image" type="IVirtualDiskImage" dir="return">
885 <desc>Opened hard disk object.</desc>
886 </param>
887 </method>
888
889 <method name="registerHardDisk">
890 <desc>
891
892 Registers the given hard disk within this VirtualBox
893 installation. The hard disk must not be registered, must be
894 <link to="IHardDisk::accessible"/> and must not be a
895 differencing hard disk, otherwise the registration will fail.
896
897 </desc>
898 <param name="hardDisk" type="IHardDisk" dir="in">
899 <desc>Hard disk object to register.</desc>
900 </param>
901 </method>
902
903 <method name="getHardDisk" const="yes">
904 <desc>
905 Returns the registered hard disk with the given UUID.
906 </desc>
907 <param name="id" type="uuid" dir="in">
908 <desc>UUID of the hard disk to look for.</desc>
909 </param>
910 <param name="hardDisk" type="IHardDisk" dir="return">
911 <desc>Found hard disk object.</desc>
912 </param>
913 </method>
914
915 <method name="findVirtualDiskImage">
916 <desc>
917
918 Returns a registered hard disk that uses the given image file.
919
920 <note>The specified file path can be absolute (full path) or
921 relative to the <link to="IVirtualBox::homeFolder"> VirtualBox
922 home directory</link>. If only a file name without any path is
923 given, the <link to="ISystemProperties::defaultVDIFolder">
924 default VDI folder</link> will be used as a path to the image
925 file.</note>
926
927 <note>On host systems with case sensitive filesystems, a case
928 sensitive comparison is performed, otherwise the case of symbols
929 in the file path is ignored.</note>
930
931 </desc>
932 <param name="filePath" type="wstring" dir="in">
933 <desc>Virtual Disk Image file path to look for.</desc>
934 </param>
935 <param name="image" type="IVirtualDiskImage" dir="return">
936 <desc>Found hard disk object.</desc>
937 </param>
938 </method>
939
940 <method name="unregisterHardDisk">
941 <desc>
942 Unregisters a hard disk previously registered using
943 <link to="#registerHardDisk()"/>.
944 <note>
945 The specified hard disk must not be attached to any of
946 the existing virtual machines and must not have children
947 (differencing) hard disks.
948 </note>
949 </desc>
950 <param name="id" type="uuid" dir="in">
951 <desc>UUID of the hard disk to unregister.</desc>
952 </param>
953 <param name="hardDisk" type="IHardDisk" dir="return">
954 <desc>Unregistered hard disk object.</desc>
955 </param>
956 </method>
957
958 <method name="openDVDImage">
959 <desc>
960 Opens the CD/DVD image contained in the specified file of
961 the supported format and assigns it the given UUID. The opened
962 image remains unregistered
963 until <link to="#registerDVDImage()"/> is called.
964 </desc>
965 <param name="filePath" type="wstring" dir="in">
966 <desc>
967 Full name of the file that contains a valid
968 CD/DVD image. Currently, only ISO images are supported.
969 <note>
970 The specified file name can be absolute or relative
971 to the <link to="IVirtualBox::homeFolder">
972 VirtualBox home directory</link>.
973 </note>
974 </desc>
975 </param>
976 <param name="id" type="uuid" dir="in">
977 <desc>
978 UUID to assign to the given image file within this
979 VirtualBox installation. If an empty (null) UUID is
980 specified, the system will randomly generate an UUID.
981 </desc>
982 </param>
983 <param name="image" type="IDVDImage" dir="return">
984 <desc>Opened CD/DVD image object.</desc>
985 </param>
986 </method>
987
988 <method name="registerDVDImage">
989 <desc>
990 Registers a CD/DVD image within this VirtualBox
991 installation. The image must not be registered and must not
992 be associated with the same image file as any of the already
993 registered images, otherwise the registration will fail.
994 </desc>
995 <param name="image" type="IDVDImage" dir="in">
996 <desc>CD/DVD image object to register.</desc>
997 </param>
998 </method>
999
1000 <method name="getDVDImage">
1001 <desc>
1002 Returns a registered CD/DVD image with the given UUID.
1003 </desc>
1004 <param name="id" type="uuid" dir="in">
1005 <desc>UUID of the image to look for.</desc>
1006 </param>
1007 <param name="image" type="IDVDImage" dir="return">
1008 <desc>Found CD/DVD image object.</desc>
1009 </param>
1010 </method>
1011
1012 <method name="findDVDImage">
1013 <desc>
1014 Returns a registered CD/DVD image with the given image file.
1015 <note>
1016 On host systems with case sensitive filesystems, a case
1017 sensitive comparison is performed, otherwise the case of
1018 symbols in the file path is ignored.
1019 </note>
1020 </desc>
1021 <param name="filePath" type="wstring" dir="in">
1022 <desc>CD/DVD image file path to look for.</desc>
1023 </param>
1024 <param name="image" type="IDVDImage" dir="return">
1025 <desc>Found CD/DVD image object.</desc>
1026 </param>
1027 </method>
1028
1029 <method name="getDVDImageUsage">
1030 <desc>
1031 Returns the list of of UUIDs of all virtual machines that use
1032 the given CD/DVD image.
1033 </desc>
1034 <param name="id" type="uuid" dir="in">
1035 <desc>UUID of the image to get the usage information for.</desc>
1036 </param>
1037 <param name="usage" type="ResourceUsage" dir="in">
1038 <desc>Type of the usage (permanent, temporary or all).</desc>
1039 </param>
1040 <param name="machineIDs" type="wstring" dir="return">
1041 <desc>
1042 List of UUIDs of all machines that use the given image
1043 in the way specified by the usage parameter.
1044 The list is returned as a string containing UUIDs separated
1045 by spaces. A null string means that the image is not used.
1046 <note>
1047 When the usage type is <link to="ResourceUsage::AllUsage"/>
1048 and the image is used by the VM both permanently
1049 and temporarily, the VM's UUID will be present only
1050 once in the list.
1051 </note>
1052 </desc>
1053 </param>
1054 </method>
1055
1056 <method name="unregisterDVDImage">
1057 <desc>
1058 Unregisters the CD/DVD image previously registered using
1059 <link to="#registerDVDImage()"/>.
1060 <note>
1061 The specified image must not be mounted to any of
1062 the existing virtual machines.
1063 </note>
1064 </desc>
1065 <param name="id" type="uuid" dir="in">
1066 <desc>UUID of the CD/DVD image to unregister.</desc>
1067 </param>
1068 <param name="image" type="IDVDImage" dir="return">
1069 <desc>Unregistered image object.</desc>
1070 </param>
1071 </method>
1072
1073 <method name="openFloppyImage">
1074 <desc>
1075 Opens a floppy image contained in the specified file of
1076 the supported format and assigns it the given UUID. The opened
1077 image remains unregistered
1078 until <link to="#registerFloppyImage()"/> is called.
1079 </desc>
1080 <param name="filePath" type="wstring" dir="in">
1081 <desc>
1082 Full name of the file that contains a valid
1083 floppy image.
1084 <note>
1085 The specified file name can be absolute or relative
1086 to the <link to="IVirtualBox::homeFolder">
1087 VirtualBox home directory</link>.
1088 </note>
1089 </desc>
1090 </param>
1091 <param name="id" type="uuid" dir="in">
1092 <desc>
1093 UUID to assign to the given image file within this
1094 VirtualBox installation. If an empty (null) UUID is
1095 specified, the system will randomly generate an UUID.
1096 </desc>
1097 </param>
1098 <param name="image" type="IFloppyImage" dir="return">
1099 <desc>Opened CD/DVD image object.</desc>
1100 </param>
1101 </method>
1102
1103 <method name="registerFloppyImage">
1104 <desc>
1105 Registers a floppy image within this VirtualBox
1106 installation. The image must not be registered and must not
1107 be associated with the same image file as any of the already
1108 registered images, otherwise the registration will fail.
1109 </desc>
1110 <param name="image" type="IFloppyImage" dir="in">
1111 <desc>Floppy image object to register.</desc>
1112 </param>
1113 </method>
1114
1115 <method name="getFloppyImage">
1116 <desc>
1117 Returns a registered floppy image with the given UUID.
1118 </desc>
1119 <param name="id" type="uuid" dir="in">
1120 <desc>UUID of the image to look for.</desc>
1121 </param>
1122 <param name="image" type="IFloppyImage" dir="return">
1123 <desc>Found floppy image object.</desc>
1124 </param>
1125 </method>
1126
1127 <method name="findFloppyImage">
1128 <desc>
1129 Returns a registered floppy image with the given image file.
1130 <note>
1131 On host systems with case sensitive filesystems, a case
1132 sensitive comparison is performed, otherwise the case of
1133 symbols in the file path is ignored.
1134 </note>
1135 </desc>
1136 <param name="filePath" type="wstring" dir="in">
1137 <desc>Floppy image file path to look for.</desc>
1138 </param>
1139 <param name="image" type="IFloppyImage" dir="return">
1140 <desc>Found floppy image object.</desc>
1141 </param>
1142 </method>
1143
1144 <method name="getFloppyImageUsage">
1145 <desc>
1146 Returns the list of of UUIDs of all virtual machines that use
1147 the given floppy image.
1148 </desc>
1149 <param name="id" type="uuid" dir="in">
1150 <desc>UUID of the image to get the usage information for.</desc>
1151 </param>
1152 <param name="usage" type="ResourceUsage" dir="in">
1153 <desc>Type of the usage (permanent, temporary or all).</desc>
1154 </param>
1155 <param name="machineIDs" type="wstring" dir="return">
1156 <desc>
1157 List of UUIDs of all machines that use the given image
1158 in the way specified by the usage parameter.
1159 The list is returned as a string containing UUIDs separated
1160 by spaces. A null string means that the image is not used.
1161 <note>
1162 When the usage type is <link to="ResourceUsage::AllUsage"/>
1163 and the image is used by the VM both permanently
1164 and temporarily, the VM's UUID will be present only
1165 once in the list.
1166 </note>
1167 </desc>
1168 </param>
1169 </method>
1170
1171 <method name="unregisterFloppyImage">
1172 <desc>
1173 Unregisters the floppy image previously registered using
1174 <link to="#registerFloppyImage()"/>.
1175 <note>
1176 The specified image must not be mounted to any of
1177 the existing virtual machines.
1178 </note>
1179 </desc>
1180 <param name="id" type="uuid" dir="in">
1181 <desc>UUID of the floppy image to unregister.</desc>
1182 </param>
1183 <param name="image" type="IFloppyImage" dir="return">
1184 <desc>Unregistered image object.</desc>
1185 </param>
1186 </method>
1187
1188 <method name="findGuestOSType">
1189 <param name="id" type="wstring" dir="in"/>
1190 <param name="type" type="IGuestOSType" dir="return"/>
1191 </method>
1192
1193 <method name="createSharedFolder">
1194 <desc>
1195 Creates a new shared folder by associating the given logical
1196 name with the given host path, adds it to the collection of
1197 shared folders and starts sharing it.
1198 Refer to the description of <link to="ISharedFolder"/> to read
1199 about logical name unicity.
1200 </desc>
1201 <param name="name" type="wstring" dir="in">
1202 <desc>Unique logical name of the shared folder.</desc>
1203 </param>
1204 <param name="hostPath" type="wstring" dir="in">
1205 <desc>Full path to the shared folder in the host file system.</desc>
1206 </param>
1207 </method>
1208
1209 <method name="removeSharedFolder">
1210 <desc>
1211 Removes a shared folder with the given name previously created
1212 by <link to="#createSharedFolder"/> from the collection of
1213 shared folders and stops sharing it.
1214 </desc>
1215 <param name="name" type="wstring" dir="in">
1216 <desc>Logical name of the shared folder to remove.</desc>
1217 </param>
1218 </method>
1219
1220 <method name="getNextExtraDataKey">
1221 <desc>
1222 Returns the extra data key name following the supplied key.
1223 An error is returned if the supplied key does not exist.
1224 NULL is returned if the supplied key is the last key.
1225 When supplying NULL for the key, the first item is returned.
1226 NextValue is an optional parameter and if supplied, the next
1227 key's value is returned as well.
1228 </desc>
1229 <param name="key" type="wstring" dir="in"/>
1230 <param name="nextKey" type="wstring" dir="out"/>
1231 <param name="nextValue" type="wstring" dir="out"/>
1232 </method>
1233
1234 <method name="getExtraData">
1235 <desc>Returns associated extra data.</desc>
1236 <param name="key" type="wstring" dir="in"/>
1237 <param name="value" type="wstring" dir="return"/>
1238 </method>
1239
1240 <method name="setExtraData">
1241 <desc>Sets associated extra data.</desc>
1242 <param name="key" type="wstring" dir="in"/>
1243 <param name="value" type="wstring" dir="in"/>
1244 </method>
1245
1246 <method name="openSession">
1247 <desc>
1248 <p>Opens a new direct session with the given virtual machine.
1249 Within the direct session context, it is possible to change
1250 all VM settings, as well as to execute the VM in the process
1251 space of the session object. There can be only one direct
1252 session open at a time for every virtual machine.</p>
1253 <p>Upon successful return, the session object can be used to
1254 get access to the machine and to the VM console.
1255 </p>
1256 </desc>
1257 <param name="session" type="ISession" dir="in">
1258 <desc>
1259 Session object that will represent the opened session after
1260 successful method invocation. This object must not represent
1261 the already open session.
1262 <note>
1263 This session will be automatically closed if the
1264 VirtualBox server is terminated for some reason.
1265 </note>
1266 </desc>
1267 </param>
1268 <param name="machineId" type="uuid" dir="in">
1269 <desc>ID of the virtual machine to open a session with.</desc>
1270 </param>
1271 </method>
1272
1273 <method name="openRemoteSession">
1274 <desc>
1275 <p>Opens a new remote session with the given virtual
1276 machine. Opening the remote session causes the server to start
1277 a new process that opens a direct session with the given VM.
1278 The remote session provides some level of control over the VM
1279 execution (using the IConsole interface) to the caller. Within
1280 the remote session context, it is not possible to change any
1281 static VM settings (such as name, HDD configuration, etc.).</p>
1282 <p>This operation can take some time, so the progress object
1283 is returned to let the caller be informed when the session is
1284 actually open. Until then, the remote session object remains in
1285 the closed state and accessing the machine or its console through
1286 it is invalid.
1287 </p>
1288 <note>
1289 It is impossible to open a remote session with the machine
1290 that already has an open direct session or waits until the
1291 previous request to open the remote session is completed
1292 (see <link to="IMachine::sessionState"/>).
1293 </note>
1294 <see>openExistingSession</see>
1295 </desc>
1296 <param name="session" type="ISession" dir="in">
1297 <desc>
1298 Session object that will represent the opened remote session
1299 after successful method invocation. This object must not
1300 represent an already open session.
1301 <note>
1302 This session will be automatically closed when the peer
1303 (direct) session dies or gets closed.
1304 </note>
1305 </desc>
1306 </param>
1307 <param name="machineId" type="uuid" dir="in">
1308 <desc>ID of the virtual machine to open a session with.</desc>
1309 </param>
1310 <param name="type" type="wstring" dir="in">
1311 <desc>
1312 Type of the remote session (case sensitive). Currently
1313 supported values are:
1314 <ul>
1315 <li><tt>gui</tt>: Qt-based VM session</li>
1316 <li><tt>rdp</tt>: VRDP server session</li>
1317 </ul>
1318 </desc>
1319 </param>
1320 <param name="progress" type="IProgress" dir="return">
1321 <desc>Progress object to track the operation completion.</desc>
1322 </param>
1323 </method>
1324
1325 <method name="openExistingSession">
1326 <desc>
1327 <p>Opens a new remote session with the virtual machine for
1328 which a direct session is already open.
1329 The remote session provides some level of control over the VM
1330 execution (using the IConsole interface) to the caller. Within
1331 the remote session context, it is not possible to change any
1332 static VM settings (such as name, HDD configuration, etc.).</p>
1333 <p>As opposed to <link to="#openRemoteSession()"/>, the number of
1334 remote sessions opened this way is not limited by the API.</p>
1335 <note>
1336 It is impossible to open a remote session with the machine
1337 that doesn't have an open direct session.
1338 </note>
1339 <see>openRemoteSession</see>
1340 </desc>
1341 <param name="session" type="ISession" dir="in">
1342 <desc>
1343 Session object that will represent the open remote session
1344 after successful method invocation. This object must not
1345 represent an already open session.
1346 <note>
1347 This session will be automatically closed when the peer
1348 (direct) session dies or gets closed.
1349 </note>
1350 </desc>
1351 </param>
1352 <param name="machineId" type="uuid" dir="in">
1353 <desc>ID of the virtual machine to open a session with.</desc>
1354 </param>
1355 </method>
1356
1357 <method name="registerCallback">
1358 <param name="callback" type="IVirtualBoxCallback" dir="in"/>
1359 </method>
1360
1361 <method name="unregisterCallback">
1362 <param name="callback" type="IVirtualBoxCallback" dir="in"/>
1363 </method>
1364
1365 </interface>
1366
1367 <class name="VirtualBox" uuid="B1A7A4F2-47B9-4A1E-82B2-07CCD5323C3F">
1368 <interface name="IVirtualBox" default="yes"/>
1369 </class>
1370
1371 <!--
1372 // IMachine
1373 /////////////////////////////////////////////////////////////////////////
1374 -->
1375
1376 <enumerator
1377 name="IMachineEnumerator" type="IMachine"
1378 uuid="1b554149-be0a-4465-9252-9ff8f420af55"
1379 />
1380
1381 <collection
1382 name="IMachineCollection" type="IMachine" enumerator="IMachineEnumerator"
1383 uuid="FD443EC1-3007-4F5B-9282-D72760A66916"
1384 readonly="yes"
1385 />
1386
1387 <interface
1388 name="IInternalMachineControl" extends="$unknown"
1389 uuid="F466BF2E-BD6B-4af0-9C08-46DD42B28A44"
1390 internal="yes"
1391 >
1392 <method name="updateState">
1393 <desc>
1394 Updates the VM state.
1395 <note>
1396 This operation will also update the settings file with
1397 the correct information about the saved state file
1398 and delete this file from disk when appropriate.
1399 </note>
1400 </desc>
1401 <param name="state" type="MachineState" dir="in"/>
1402 </method>
1403
1404 <method name="getIPCId">
1405 <param name="id" type="wstring" dir="return"/>
1406 </method>
1407
1408 <method name="getLogFolder">
1409 <desc>
1410 Returns the full name of the directory where to store
1411 log files created during this machine's executoin.
1412 </desc>
1413 <param name="logFolder" type="wstring" dir="return"/>
1414 </method>
1415
1416 <method name="runUSBDeviceFilters">
1417 <desc>
1418 Asks the server to run USB devices filters of the associated
1419 machine against the given USB device and tell if there is
1420 a match.
1421 <note>
1422 Intended to be used only for remote USB devices. Local
1423 ones don't require to call this method (this is done
1424 implicitly by the Host and USBProxyService).
1425 </note>
1426 </desc>
1427 <param name="device" type="IUSBDevice" dir="in"/>
1428 <param name="matched" type="boolean" dir="return"/>
1429 </method>
1430
1431 <method name="captureUSBDevice">
1432 <desc>
1433 Requests a capture of the given host USB device, and returns
1434 the captured device (as IUSBDevice) to the caller.
1435 <note>
1436 The server must mark the device as USBDeviceCaptured
1437 during this call.
1438
1439 This method must return extended error info in case of any
1440 eroror (<link to="IConsole::detachUSBDevice()"/>) relies
1441 on this.
1442 </note>
1443 </desc>
1444 <param name="id" type="uuid" dir="in"/>
1445 <param name="hostDevice" type="IUSBDevice" dir="return"/>
1446 </method>
1447
1448 <method name="releaseUSBDevice">
1449 <desc>
1450 Releases the given USB device.
1451 <note>
1452 The server must run its own filters and filters of all VMs
1453 but this one on the given device as if it were just attached
1454 to the host computer.
1455 </note>
1456 </desc>
1457 <param name="id" type="uuid" dir="in"/>
1458 </method>
1459
1460 <method name="autoCaptureUSBDevices">
1461 <desc>
1462 Queries the list of available devices that must be auto-captured
1463 according to this VM's filters. Devices returned as IUSBDevice
1464 instances.
1465 <note>
1466 The server must mark all returned devices as USBDeviceCaptured
1467 during this call.
1468 </note>
1469 </desc>
1470 <param name="hostDevices" type="IUSBDeviceCollection" dir="return"/>
1471 </method>
1472
1473 <method name="releaseAllUSBDevices">
1474 <desc>
1475 Releases all USB devices that are captured by this VM because
1476 the VM has been terminated.
1477 <note>
1478 The server must run its own filters and filters of all VMs
1479 but this one on all released devices as if they were just
1480 attached to the host computer.
1481 </note>
1482 </desc>
1483 </method>
1484
1485 <method name="onSessionEnd">
1486 <desc>
1487 Triggered by the given session object when the session is about
1488 to close normally.
1489 </desc>
1490 <param name="session" type="ISession" dir="in">
1491 <desc>Session that is being closed</desc>
1492 </param>
1493 <param name="progress" type="IProgress" dir="return">
1494 <desc>
1495 Used to wait until the corresponding machine is actually
1496 deassociated from the given session on the server.
1497 Returned only when this session is a direct one.
1498 </desc>
1499 </param>
1500 </method>
1501
1502 <method name="beginSavingState">
1503 <desc>
1504 Called by the VM process to inform the server it wants to
1505 save the current state and stop the VM execution.
1506 </desc>
1507 <param name="progress" type="IProgress" dir="in">
1508 <desc>
1509 Progress object created by the VM process to wait until
1510 the state is saved.
1511 </desc>
1512 </param>
1513 <param name="stateFilePath" type="wstring" dir="out">
1514 <desc>
1515 File path the VM process must save the execution state to.
1516 </desc>
1517 </param>
1518 </method>
1519
1520 <method name="endSavingState">
1521 <desc>
1522 Called by the VM process to inform the server that saving
1523 the state previously requested by #beginSavingState is either
1524 successfully finished or there was a failure.
1525 </desc>
1526
1527 <param name="success" type="boolean" dir="in">
1528 <desc><tt>true</tt> to indicate success and <tt>false</tt> otherwise</desc>
1529 </param>
1530 </method>
1531
1532 <method name="beginTakingSnapshot">
1533 <desc>
1534 Called by the VM process to inform the server it wants to
1535 take a snapshot.
1536 </desc>
1537 <param name="initiator" type="IConsole" dir="in">
1538 <desc>The console object that initiated this call.</desc>
1539 </param>
1540 <param name="name" type="wstring" dir="in">
1541 <desc>Snapshot name</desc>
1542 </param>
1543 <param name="description" type="wstring" dir="in">
1544 <desc>Snapshot description</desc>
1545 </param>
1546 <param name="progress" type="IProgress" dir="in">
1547 <desc>
1548 Progress object created by the VM process to wait until
1549 the state is saved (only for online snapshots).
1550 </desc>
1551 </param>
1552 <param name="stateFilePath" type="wstring" dir="out">
1553 <desc>
1554 File path the VM process must save the execution state to.
1555 </desc>
1556 </param>
1557 <param name="serverProgress" type="IProgress" dir="out">
1558 <desc>
1559 Progress object created by the server process to wait until
1560 the snapshot is taken (VDI diff creation, etc.).
1561 </desc>
1562 </param>
1563 </method>
1564
1565 <method name="endTakingSnapshot">
1566 <desc>
1567 Called by the VM process to inform the server that the snapshot
1568 previously requested by #beginTakingSnapshot is either
1569 successfully taken or there was a failure.
1570 </desc>
1571
1572 <param name="success" type="boolean" dir="in">
1573 <desc><tt>true</tt> to indicate success and <tt>false</tt> otherwise</desc>
1574 </param>
1575 </method>
1576
1577 <method name="discardSnapshot">
1578 <desc>
1579 Gets called by IConsole::discardSnapshot.
1580 </desc>
1581 <param name="initiator" type="IConsole" dir="in">
1582 <desc>The console object that initiated this call.</desc>
1583 </param>
1584 <param name="id" type="uuid" dir="in">
1585 <desc>UUID of the snapshot to discard.</desc>
1586 </param>
1587 <param name="machineState" type="MachineState" dir="out">
1588 <desc>New machine state after this operation is started.</desc>
1589 </param>
1590 <param name="progress" type="IProgress" dir="return">
1591 <desc>Progress object to track the operation completion.</desc>
1592 </param>
1593 </method>
1594
1595 <method name="discardCurrentState">
1596 <desc>
1597 Gets called by IConsole::discardCurrentState.
1598 </desc>
1599 <param name="initiator" type="IConsole" dir="in">
1600 <desc>The console object that initiated this call.</desc>
1601 </param>
1602 <param name="machineState" type="MachineState" dir="out">
1603 <desc>New machine state after this operation is started.</desc>
1604 </param>
1605 <param name="progress" type="IProgress" dir="return">
1606 <desc>Progress object to track the operation completion.</desc>
1607 </param>
1608 </method>
1609
1610 <method name="discardCurrentSnapshotAndState">
1611 <desc>
1612 Gets called by IConsole::discardCurrentSnapshotAndState.
1613 </desc>
1614 <param name="initiator" type="IConsole" dir="in">
1615 <desc>The console object that initiated this call.</desc>
1616 </param>
1617 <param name="machineState" type="MachineState" dir="out">
1618 <desc>New machine state after this operation is started.</desc>
1619 </param>
1620 <param name="progress" type="IProgress" dir="return">
1621 <desc>Progress object to track the operation completion.</desc>
1622 </param>
1623 </method>
1624
1625 </interface>
1626
1627 <enum
1628 name="BIOSBootMenuMode"
1629 uuid="ae4fb9f7-29d2-45b4-b2c7-d579603135d5"
1630 >
1631 <desc>
1632 This represents the BIOS boot menu state.
1633 </desc>
1634
1635 <const name="Disabled" value="0"/>
1636 <const name="MenuOnly" value="1"/>
1637 <const name="MessageAndMenu" value="2"/>
1638 </enum>
1639
1640 <interface
1641 name="IBIOSSettings" extends="$unknown"
1642 uuid="00fff9d7-983e-462d-a1aa-4cc26de4f0d4"
1643 >
1644 <attribute name="LogoFadeIn" type="boolean">
1645 <desc>Fade in flag for BIOS logo animation.</desc>
1646 </attribute>
1647
1648 <attribute name="LogoFadeOut" type="boolean">
1649 <desc>Fade out flag for BIOS logo animation.</desc>
1650 </attribute>
1651
1652 <attribute name="LogoDisplayTime" type="unsigned long">
1653 <desc>BIOS logo display time in milliseconds (0 = default).</desc>
1654 </attribute>
1655
1656 <attribute name="LogoImagePath" type="wstring">
1657 <desc>Local file system path for external BIOS image.</desc>
1658 </attribute>
1659
1660 <attribute name="BootMenuMode" type="BIOSBootMenuMode">
1661 <desc>Mode of the BIOS boot device menu.</desc>
1662 </attribute>
1663
1664 <attribute name="ACPIEnabled" type="boolean">
1665 <desc>ACPI support flag.</desc>
1666 </attribute>
1667
1668 <attribute name="IOAPICEnabled" type="boolean">
1669 <desc>
1670 IO APIC support flag. If set, VirtualBox will provide an IO APIC
1671 and support IRQs above 15.
1672 </desc>
1673 </attribute>
1674
1675 </interface>
1676
1677 <interface
1678 name="IMachine" extends="$unknown"
1679 uuid="FD443EC1-0009-4F5B-9282-D72760A66916"
1680 >
1681 <attribute name="parent" type="IVirtualBox" readonly="yes">
1682 <desc>Associated parent obect.</desc>
1683 </attribute>
1684
1685 <attribute name="accessible" type="boolean" readonly="yes">
1686 <desc>
1687 Whether this virtual machine is currently accessible or not.
1688
1689 The machine is considered to be inaccessible when:
1690 <ul>
1691 <li>It is a registered virtual machine, and
1692 </li>
1693 <li>Its settings file is inaccessible (for example, it is
1694 located on a network share that is not accessible during
1695 VirtualBox startup, or becomes inaccessible later, or if
1696 the settings file can be read but is invalid).
1697 </li>
1698 </ul>
1699
1700 Otherwise, the value of this property is always <tt>true</tt>.
1701
1702 Every time this property is read, the accessibility state of
1703 this machine is re-evaluated. If the returned value is |false|,
1704 the <link to="#accessError"/> property may be used to get the
1705 detailed error information describing the reason of
1706 inaccessibility.
1707
1708 When the machine is inaccessible, only the following properties
1709 can be used on it:
1710 <ul>
1711 <li><link to="#parent"/></li>
1712 <li><link to="#id"/></li>
1713 <li><link to="#settingsFilePath"/></li>
1714 <li><link to="#accessible"/></li>
1715 <li><link to="#accessError"/></li>
1716 </ul>
1717
1718 An attempt to access any other property or method will return
1719 an error.
1720
1721 The only possible action you can perform on an inaccessible
1722 machine is to unregister it using the
1723 <link to="IVirtualBox::unregisterMachine"/> call (or, to check
1724 for the accessibility state once more by querying this
1725 property).
1726
1727 <note>
1728 In the current implementation, once this property returns
1729 <tt>true</tt>, the machine will never become inaccessible
1730 later, even if its settings file cannot be successfully
1731 read/written any more (at least, until the VirtualBox
1732 server is restarted). This limitation may be removed in
1733 future releases.
1734 </note>
1735 </desc>
1736 </attribute>
1737
1738 <attribute name="accessError" type="IVirtualBoxErrorInfo" readonly="yes">
1739 <desc>
1740 Error information describing the reason of machine
1741 inaccessibility.
1742
1743 Reading this property is only valid after the last call to
1744 <link to="#accessible"/> returned <tt>false</tt> (i.e. the
1745 machine is currently unaccessible). Otherwise, a null
1746 IVirtualBoxErrorInfo object will be returned.
1747 </desc>
1748 </attribute>
1749
1750 <attribute name="name" type="wstring">
1751 <desc>
1752 Name of the virtual machine.
1753
1754 Besides being used for human-readable identification purposes
1755 everywhere in VirtualBox, the virtual machine name is also used
1756 as a name of the machine's settings file and as a name of the
1757 subdirectory this settings file resides in. Thus, every time you
1758 change the value of this property, the settings file will be
1759 renamed once you call <link to="#saveSettings()"/> to confirm the
1760 change. The containing subdirectory will be also renamed, but
1761 only if it has exactly the same name as the settings file
1762 itself prior to changing this property (for backward compatibility
1763 with previous API releases). The above implies the following
1764 limitations:
1765 <ul>
1766 <li>The machine name cannot be empty.</li>
1767 <li>The machine name can contain only characters that are valid
1768 file name characters according to the rules of the file
1769 system used to store VirtualBox configuration.</li>
1770 <li>You cannot have two or more machines with the same name
1771 if they use the same subdirectory for storing the machine
1772 settings files.</li>
1773 <li>You cannot change the name of the machine if it is running,
1774 or if any file in the directory containing the settings file
1775 is being used by another running machine or by any other
1776 process in the host operating system at a time when
1777 <link to="#saveSettings()"/> is called.
1778 </li>
1779 </ul>
1780 If any of the above limitations are hit, <link to="#saveSettings()"/>
1781 will return an appropriate error message explaining the exact
1782 reason and the changes you made to this machine will not be
1783 saved.
1784 <note>
1785 For "legacy" machines created using the
1786 <link to="IVirtualBox::createLegacyMachine()"/> call,
1787 the above naming limitations do not apply because the
1788 machine name does not affect the settings file name.
1789 The settings file name remains the same as it was specified
1790 during machine creation and never changes.
1791 </note>
1792 </desc>
1793 </attribute>
1794
1795 <attribute name="id" type="uuid" readonly="yes">
1796 <desc>UUID of the virtual machine.</desc>
1797 </attribute>
1798
1799 <attribute name="OSType" type="IGuestOSType">
1800 <desc>
1801 Guest OS type configured by the user.
1802 <note>
1803 This value may differ from the value returned by
1804 <link to="IGuest::OSType"/> if Guest Additions are
1805 installed to the guest OS.
1806 </note>
1807 </desc>
1808 </attribute>
1809
1810 <attribute name="memorySize" type="unsigned long">
1811 <desc>Sytem memory size in megabytes.</desc>
1812 </attribute>
1813
1814 <attribute name="VRAMSize" type="unsigned long">
1815 <desc>Video memory size in megabytes.</desc>
1816 </attribute>
1817
1818 <attribute name="BIOSSettings" type="IBIOSSettings" readonly="yes">
1819 <desc>Object containing all BIOS settings.</desc>
1820 </attribute>
1821
1822 <attribute name="HWVirtExEnabled" type="TriStateBool">
1823 <desc>
1824 This setting determines whether VirtualBox will try to make use of
1825 the host CPU's hardware virtualization extensions such as Intel VT-x
1826 and AMD SVM. Note that in case such extensions are not available,
1827 they will not be used.
1828 </desc>
1829 </attribute>
1830
1831 <attribute name="snapshotFolder" type="wstring">
1832 <desc>
1833 Full path to the directory used to store snapshot data
1834 (difrerencing hard disks and saved state files) of this machine.
1835
1836 The initial value of this property is
1837 <tt>&lt;</tt><link to="#settingsFilePath">
1838 path_to_settings_file</link><tt>&gt;/&lt;</tt>
1839 <link to="#id">machine_uuid</link>
1840 <tt>&gt;</tt>.
1841
1842 Currently, it is an error to try to change this property on
1843 a machine that has snapshots (because this would require to
1844 move possibly large files to a different location).
1845 A separate method will be available for this purpose later.
1846
1847 <note>
1848 Setting this property to <tt>null</tt> will restore the
1849 initial value.
1850 </note>
1851 <note>
1852 When setting this property, the specified path can be
1853 absolute (full path) or relative to the directory where the
1854 <link to="#settingsFilePath">machine settings file</link>
1855 is located. When reading this property, a full path is
1856 always returned.
1857 </note>
1858 <note>
1859 The specified path may not exist, it will be created
1860 when necessary.
1861 </note>
1862 </desc>
1863 </attribute>
1864
1865 <attribute name="VRDPServer" type="IVRDPServer" readonly="yes">
1866 <desc>VRDP server object.</desc>
1867 </attribute>
1868
1869 <attribute name="hardDiskAttachments" type="IHardDiskAttachmentCollection" readonly="yes">
1870 <desc>Collection of hard disks attached to the machine.</desc>
1871 </attribute>
1872
1873 <attribute name="DVDDrive" type="IDVDDrive" readonly="yes">
1874 <desc>Associated DVD drive object.</desc>
1875 </attribute>
1876
1877 <attribute name="FloppyDrive" type="IFloppyDrive" readonly="yes">
1878 <desc>Associated floppy drive object.</desc>
1879 </attribute>
1880
1881 <attribute name="USBController" type="IUSBController" readonly="yes">
1882 <desc>Associated USB controller object.</desc>
1883 </attribute>
1884
1885 <attribute name="audioAdapter" type="IAudioAdapter" readonly="yes">
1886 <desc>Associated audio adapter, always present.</desc>
1887 </attribute>
1888
1889 <attribute name="settingsFilePath" type="wstring" readonly="yes">
1890 <desc>
1891 Full name of the file containing machine settings data.
1892 </desc>
1893 </attribute>
1894
1895 <attribute name="settingsModified" type="boolean" readonly="yes">
1896 <desc>
1897 Whether the settings of this machine have been modified
1898 (but neither yet saved nor discarded).
1899 <note>
1900 Reading this property is only valid on instances returned
1901 by <link to="ISession::machine"/> and on new machines
1902 created by <link to="IVirtualBox::createMachine"/> or opened
1903 by <link to="IVirtualBox::openMachine"/> but not
1904 yet registered, or on unregistered machines after calling
1905 <link to="IVirtualBox::unregisterMachine"/>. For all other
1906 cases, the settigs can never be modified.
1907 </note>
1908 <note>
1909 For newly created unregistered machines, the value of this
1910 property is always TRUE until <link to="#saveSettings"/>
1911 is called (no matter if any machine settings have been
1912 changed after the creation or not). For opened machines
1913 the value is set to FALSE (and then follows to normal rules).
1914 </note>
1915 </desc>
1916 </attribute>
1917
1918 <attribute name="sessionState" type="SessionState" readonly="yes">
1919 <desc>Current session state for this machine.</desc>
1920 </attribute>
1921
1922 <attribute name="state" type="MachineState" readonly="yes">
1923 <desc>Current execution state of this machine.</desc>
1924 </attribute>
1925
1926 <attribute name="lastStateChange" type="long long" readonly="yes">
1927 <desc>
1928 Time stamp of the last execution state change,
1929 in milliseconds since 1970-01-01 UTC.
1930 </desc>
1931 </attribute>
1932
1933 <attribute name="stateFilePath" type="wstring" readonly="yes">
1934 <desc>
1935 Full path to the file that stores the execution state of
1936 the machine when it is in the <link to="MachineState::Saved"/>
1937 state.
1938 <note>
1939 When the machine is not in the Saved state, this attribute
1940 <tt>null</tt>.
1941 </note>
1942 </desc>
1943 </attribute>
1944
1945 <attribute name="currentSnapshot" type="ISnapshot" readonly="yes">
1946 <desc>
1947 Current snapshot of this machine.
1948 <note>
1949 A <tt>null</tt> object is returned if the machine doesn't
1950 have snapshots.
1951 </note>
1952 <see><link to="ISnapshot"/></see>
1953 </desc>
1954 </attribute>
1955
1956 <attribute name="snapshotCount" type="unsigned long" readonly="yes">
1957 <desc>
1958 Number of snapshots taken on this machine. Zero means the
1959 machine doesn't have any snapshots.
1960 </desc>
1961 </attribute>
1962
1963 <attribute name="currentStateModified" type="boolean" readonly="yes">
1964 <desc>
1965 Returns <tt>true</tt> if the current state of the machine is not
1966 identical to the state stored in the current snapshot.
1967
1968 The current state is identical to the current snapshot right
1969 after one of the following calls are made:
1970 <ul>
1971 <li><link to="IConsole::discardCurrentState"/> or
1972 <link to="IConsole::discardCurrentSnapshotAndState"/>
1973 </li>
1974 <li><link to="IConsole::takeSnapshot"/> (issued on a
1975 powered off or saved machine, for which
1976 <link to="#settingsModified"/> returns <tt>false</tt>)
1977 </li>
1978 <li><link to="IMachine::setCurrentSnapshot"/>
1979 </li>
1980 </ul>
1981
1982 The current state remains identical until one of the following
1983 happens:
1984 <ul>
1985 <li>settings of the machine are changed</li>
1986 <li>the saved state is discarded</li>
1987 <li>the current snapshot is discarded</li>
1988 <li>an attempt to execute the machine is made</li>
1989 </ul>
1990
1991 <note>
1992 For machines that don't have snapshots, this property is
1993 always <tt>false</tt>.
1994 </note>
1995 </desc>
1996 </attribute>
1997
1998 <attribute name="sharedFolders" type="ISharedFolderCollection" readonly="yes">
1999 <desc>
2000 Collection of shared folders for this machine. These folders
2001 are shared automatically upon machine startup and available only
2002 to the guest OS installed within this machine.
2003
2004 New folders to share are added to the collection using
2005 <link to="#createSharedFolder"/>. An existing shared folder can
2006 be removed using <link to="#removeSharedFolder"/>.
2007 </desc>
2008 </attribute>
2009
2010 <attribute name="clipboardMode" type="ClipboardMode">
2011 <desc>
2012 Synchronization mode between the host OS clipboard
2013 and the guest OS clipboard.
2014 </desc>
2015 </attribute>
2016
2017 <method name="setBootOrder">
2018 <desc>
2019 Puts the given device to the specified position in
2020 the boot order.
2021
2022 @todo [remove?]
2023 If the machine can have more than one device of the given type
2024 (such as hard disks), then a separate method should be used to
2025 specify the boot order for individual devices. Using this method
2026 in such cases will put the first device in the group
2027 (for example, a hard disk attached as Master on the primary
2028 IDE controller) to the given position.
2029
2030 To indicate that no any device is associated with the
2031 given position, <link to="DeviceType::NoDevice"/> should be used.
2032
2033 @todo setHardDiskBootOrder(), setNetworkBootOrder()
2034 </desc>
2035 <param name="position" type="unsigned long" dir="in">
2036 <desc>
2037 Position in the boot order (<tt>1</tt> to the total number of
2038 devices the machine can boot from, as returned by
2039 <link to="ISystemProperties::maxBootPosition"/>).
2040 </desc>
2041 </param>
2042 <param name="device" type="DeviceType" dir="in">
2043 <desc>
2044 The type of the device used to boot at the given position.
2045 </desc>
2046 </param>
2047 </method>
2048
2049 <method name="getBootOrder" const="yes">
2050 <desc>
2051 Returns the device type that occupies the specified
2052 position in the boot order.
2053
2054 @todo [remove?]
2055 If the machine can have more than one device of the returned type
2056 (such as hard disks), then a separate method should be used to
2057 retrieve the individual device that occupies the given position.
2058
2059 If here are no devices at the given position, then
2060 <link to="DeviceType::NoDevice"/> is returned.
2061
2062 @todo getHardDiskBootOrder(), getNetworkBootOrder()
2063 </desc>
2064 <param name="order" type="unsigned long" dir="in">
2065 <desc>
2066 Position in the boot order (<tt>1</tt> to the total number of
2067 devices the machine can boot from, as returned by
2068 <link to="ISystemProperties::maxBootPosition"/>).
2069 </desc>
2070 </param>
2071 <param name="device" type="DeviceType" dir="return">
2072 <desc>
2073 Device at the given position.
2074 </desc>
2075 </param>
2076 </method>
2077
2078 <method name="attachHardDisk">
2079 <desc>
2080
2081 Attaches a virtual hard disk identified by the given UUID to the
2082 given device slot of the given controller. The specified device
2083 must not have another disk attached and the given hard disk must
2084 not be already attached to this machine.
2085
2086 See <link to="IHardDisk"/> for detailed information about
2087 attaching hard disks.
2088
2089 <note>You cannot attach a hard disk to a running machine. Also,
2090 you cannot attach a hard disk to a newly created machine until
2091 it is registered.</note>
2092
2093 <note>Attaching a hard disk to a machine creates a <i>lazy</i>
2094 attachment. In particular, no differeincing images are
2095 actually created until <link to="#saveSettings"/> is called to
2096 commit all changed settings.</note>
2097
2098 </desc>
2099 <param name="diskID" type="uuid" dir="in">
2100 <desc>UUID of the hard disk to attach.</desc>
2101 </param>
2102 <param name="controller" type="DiskControllerType" dir="in">
2103 <desc>Controller to attach the hard disk to.</desc>
2104 </param>
2105 <param name="device" type="long" dir="in">
2106 <desc>Device slot to attach the hard disk to.</desc>
2107 </param>
2108 </method>
2109
2110 <method name="getHardDisk" const="yes">
2111 <desc>
2112 Returns the hard disk attached to the
2113 given controller under the specified device number.
2114 </desc>
2115 <param name="controller" type="DiskControllerType" dir="in"/>
2116 <param name="deviceNumber" type="long" dir="in"/>
2117 <param name="hardDisk" type="IHardDisk" dir="return"/>
2118 </method>
2119
2120 <method name="detachHardDisk">
2121 <desc>
2122
2123 Detaches the hard disk drive attached to the given device slot
2124 of the given controller.
2125
2126 See <link to="IHardDisk"/> for detailed information about
2127 attaching hard disks.
2128
2129 <note>You cannot detach a hard disk from a running
2130 machine.</note>
2131
2132 <note>Detaching a hard disk from a machine creates a <i>lazy</i>
2133 detachment. In particular, if the detached hard disk is a
2134 differencing hard disk, it is not actually deleted until <link
2135 to="#saveSettings"/> is called to commit all changed settings.
2136 Keep in mind, that doing <link to="#saveSettings"/> will
2137 <b>physically delete</b> all detached differencing hard disks,
2138 so be careful.</note>
2139
2140 </desc>
2141 <param name="controller" type="DiskControllerType" dir="in">
2142 <desc>Controller to dettach the hard disk from.</desc>
2143 </param>
2144 <param name="device" type="long" dir="in">
2145 <desc>Device slot to dettach the hard disk from.</desc>
2146 </param>
2147 </method>
2148
2149 <method name="getNetworkAdapter" const="yes">
2150 <desc>
2151 Returns the network adapter associated with the given slot.
2152 Slots are numbered sequentially, starting with zero. The total
2153 number of adapters per every machine is defined by the
2154 <link to="ISystemProperties::networkAdapterCount"/> property,
2155 so the maximum slot number is one less than that property's value.
2156 </desc>
2157 <param name="slot" type="unsigned long" dir="in"/>
2158 <param name="adapter" type="INetworkAdapter" dir="return"/>
2159 </method>
2160
2161 <method name="getNextExtraDataKey">
2162 <desc>
2163 Returns the extra data key name following the supplied key.
2164 An error is returned if the supplied key does not exist.
2165 NULL is returned if the supplied key is the last key.
2166 When supplying NULL for the key, the first item is returned.
2167 NextValue is an optional parameter and if supplied, the next
2168 key's value is returned as well.
2169 </desc>
2170 <param name="key" type="wstring" dir="in"/>
2171 <param name="nextKey" type="wstring" dir="out"/>
2172 <param name="nextValue" type="wstring" dir="out"/>
2173 </method>
2174
2175 <method name="getExtraData">
2176 <desc>Returns associated extra data.</desc>
2177 <param name="key" type="wstring" dir="in"/>
2178 <param name="value" type="wstring" dir="return"/>
2179 </method>
2180
2181 <method name="setExtraData">
2182 <desc>Sets associated extra data.</desc>
2183 <param name="key" type="wstring" dir="in"/>
2184 <param name="value" type="wstring" dir="in"/>
2185 </method>
2186
2187 <method name="saveSettings">
2188 <desc>
2189 Saves any changes to machine settings made since the session
2190 has been opened or a new machine has been created, or since the
2191 last call to <link to="#saveSettings"/> or <link to="#discardSettings"/>.
2192 For registered machines, new settings become visible to all
2193 other VirtualBox clients after successful invocation of this
2194 method.
2195 <note>
2196 The method sends <link to="IVirtualBoxCallback::onMachineDataChange"/>
2197 notification event after the configuration has been successfully
2198 saved (only for registered machines).
2199 </note>
2200 <note>
2201 Calling this method is only valid on instances returned
2202 by <link to="ISession::machine"/> and on new machines
2203 created by <link to="IVirtualBox::createMachine"/> but not
2204 yet registered, or on unregistered machines after calling
2205 <link to="IVirtualBox::unregisterMachine"/>.
2206 </note>
2207 </desc>
2208 </method>
2209
2210 <method name="discardSettings">
2211 <desc>
2212 Discards any changes to the machine settings made since the session
2213 has been opened or since the last call to <link to="#saveSettings"/>
2214 or <link to="#discardSettings"/>.
2215 <note>
2216 Calling this method is only valid on instances returned
2217 by <link to="ISession::machine"/> and on new machines
2218 created by <link to="IVirtualBox::createMachine"/> or
2219 opened by <link to="IVirtualBox::openMachine"/> but not
2220 yet registered, or on unregistered machines after calling
2221 <link to="IVirtualBox::unregisterMachine"/>.
2222 </note>
2223 </desc>
2224 </method>
2225
2226 <method name="deleteSettings">
2227 <desc>
2228 Deletes the settings file of this machine from disk.
2229 The machine must not be registered in order for this operation
2230 to succeed.
2231 <note>
2232 <link to="#settingsModified"/> will return TRUE after this
2233 method successfully returns.
2234 </note>
2235 <note>
2236 Calling this method is only valid on instances returned
2237 by <link to="ISession::machine"/> and on new machines
2238 created by <link to="IVirtualBox::createMachine"/> or
2239 opened by <link to="IVirtualBox::openMachine"/> but not
2240 yet registered, or on unregistered machines after calling
2241 <link to="IVirtualBox::unregisterMachine"/>.
2242 </note>
2243 <note>
2244 The deleted machine settings file can be restored (saved again)
2245 by calling <link to="#saveSettings"/>.
2246 </note>
2247 </desc>
2248 </method>
2249
2250 <method name="getSnapshot">
2251 <desc>
2252 Returns a snapshot of this machine with the given UUID.
2253 A <tt>null</tt> UUID can be used to obtain the first snapshot
2254 taken on this machine. This is useful if you want to traverse
2255 the whole tree of snapshots starting from the root.
2256 </desc>
2257 <param name="id" type="uuid" dir="in">
2258 <desc>UUID of the snapshot to get</desc>
2259 </param>
2260 <param name="snapshot" type="ISnapshot" dir="return">
2261 <desc>Snapshot object with the given UUID.</desc>
2262 </param>
2263 </method>
2264
2265 <method name="findSnapshot">
2266 <desc>
2267 Returns a snapshot of this machine with the given name.
2268 </desc>
2269 <param name="name" type="wstring" dir="in">
2270 <desc>Name of the snapshot to find</desc>
2271 </param>
2272 <param name="snapshot" type="ISnapshot" dir="return">
2273 <desc>Snapshot object with the given name.</desc>
2274 </param>
2275 </method>
2276
2277 <method name="setCurrentSnapshot">
2278 <desc>
2279 Sets the current snapshot of this machine.
2280 <note>
2281 In the current implementation, this operation is not
2282 implemented.
2283 </note>
2284 </desc>
2285 <param name="id" type="uuid" dir="in">
2286 <desc>UUID of the snapshot to set as the current snapshot.</desc>
2287 </param>
2288 </method>
2289
2290 <method name="createSharedFolder">
2291 <desc>
2292 Creates a new shared folder by associating the given logical
2293 name with the given host path, adds it to the collection of
2294 shared folders and starts sharing it.
2295 Refer to the description of <link to="ISharedFolder"/> to read
2296 about logical name unicity.
2297 </desc>
2298 <param name="name" type="wstring" dir="in">
2299 <desc>Unique logical name of the shared folder.</desc>
2300 </param>
2301 <param name="hostPath" type="wstring" dir="in">
2302 <desc>Full path to the shared folder in the host file system.</desc>
2303 </param>
2304 </method>
2305
2306 <method name="removeSharedFolder">
2307 <desc>
2308 Removes a shared folder with the given name previously created
2309 by <link to="#createSharedFolder"/> from the collection of
2310 shared folders and stops sharing it.
2311 </desc>
2312 <param name="name" type="wstring" dir="in">
2313 <desc>Logical name of the shared folder to remove.</desc>
2314 </param>
2315 </method>
2316
2317 </interface>
2318
2319 <!--
2320 // IConsole
2321 /////////////////////////////////////////////////////////////////////////
2322 -->
2323
2324 <interface
2325 name="IConsoleCallback" extends="$unknown"
2326 uuid="05D3DD3F-0550-4953-BB3C-4ECB3EBF7C2E"
2327 >
2328
2329 <method name="onMousePointerShapeChange">
2330 <desc>
2331 Notification when the guest mouse pointer shape has
2332 changed. The new shape data is given.
2333 </desc>
2334 <param name="visible" type="boolean" dir="in">
2335 <desc>
2336 Flag whether the pointer is visible.
2337 </desc>
2338 </param>
2339 <param name="alpha" type="boolean" dir="in">
2340 <desc>
2341 Flag whether the pointer has an alpha channel.
2342 </desc>
2343 </param>
2344 <param name="xHot" type="unsigned long" dir="in">
2345 <desc>
2346 The pointer hot spot x coordinate.
2347 </desc>
2348 </param>
2349 <param name="yHot" type="unsigned long" dir="in">
2350 <desc>
2351 The pointer hot spot y coordinate.
2352 </desc>
2353 </param>
2354 <param name="width" type="unsigned long" dir="in">
2355 <desc>
2356 Width of the pointer shape in pixels.
2357 </desc>
2358 </param>
2359 <param name="height" type="unsigned long" dir="in">
2360 <desc>
2361 Height of the pointer shape in pixels.
2362 </desc>
2363 </param>
2364 <param name="shape" type="unsigned long" dir="in">
2365 <desc>
2366 Address of the shape buffer.
2367
2368 The buffer contains 1 bpp (bits per pixel) AND mask followed by 32 bpp XOR (color) mask.
2369
2370 For pointers without alpha channel the XOR mask pixels are 32 bit values: (lsb)BGR0(msb).
2371 For pointers with alpha channel the XOR mask consists of (lsb)BGRA(msb) 32 bit values.
2372
2373 AND mask presents for pointers with alpha channel, so if the callback does not
2374 support alpha, the pointer could be displayed as a normal color pointer.
2375
2376 The AND mask is 1 bpp bitmap with byte aligned scanlines. Size of AND mask,
2377 therefore, is <tt>cbAnd = (width + 7) / 8 * height</tt>. The padding bits at the
2378 end of any scanline are undefined.
2379
2380 The XOR mask follows the AND mask on the next 4 bytes aligned offset:
2381 <tt>uint8_t *pXor = pAnd + (cbAnd + 3) &amp; ~3</tt>
2382 Bytes in the gap between the AND and the XOR mask are undefined.
2383 XOR mask scanlines have no gap between them and size of XOR mask is:
2384 <tt>cXor = width * 4 * height</tt>.
2385
2386 <note>
2387 If 'shape' is equal to 0, only pointer visibility is being changed.
2388 </note>
2389 </desc>
2390 </param>
2391 </method>
2392
2393 <method name="onMouseCapabilityChange">
2394 <desc>
2395 Notification when the mouse capabilities reported by the
2396 guest have changed. The new capabilities are passed.
2397 </desc>
2398 <param name="supportsAbsolute" type="boolean" dir="in"/>
2399 <param name="needsHostCursor" type="boolean" dir="in"/>
2400 </method>
2401
2402 <method name="onKeyboardLedsChange">
2403 <desc>
2404 Notification of the host if the guest executed the KBD_CMD_SET_LEDS
2405 command to alter the state of the keyboard LEDs.
2406 </desc>
2407 <param name="numLock" type="boolean" dir="in"/>
2408 <param name="capsLock" type="boolean" dir="in"/>
2409 <param name="scrollLock" type="boolean" dir="in"/>
2410 </method>
2411
2412 <method name="onStateChange">
2413 <desc>
2414 Notification when the execution state of the machine has changed.
2415 The new state will be given.
2416 </desc>
2417 <param name="state" type="MachineState" dir="in"/>
2418 </method>
2419
2420 <method name="onAdditionsStateChange">
2421 <desc>
2422 Notification when a Guest Additions property changes.
2423 Interested callees should query IGuest's properties to
2424 find out what has changed.
2425 </desc>
2426 </method>
2427
2428 <method name="onRuntimeError">
2429 <desc>
2430 Notification when an error happens during the virtual
2431 machine execution.
2432
2433 There are three kinds of runtime errors:
2434 <ul>
2435 <li><i>fatal</i></li>
2436 <li><i>non-fatal with retry</i></li>
2437 <li><i>non-fatal warnings</i></li>
2438 </ul>
2439
2440 <b>Fatal</b> errors are indicated by the @a fatal parameter set
2441 to <tt>true</tt>. In case of fatal errors, the virtual machine
2442 execution is always paused before calling this notification, and
2443 the notification handler is supposed either to immediately save
2444 the virtual machine state using <link to="IConsole::saveState()"/>
2445 or power it off using <link to="IConsole::powerDown()"/>.
2446 Resuming the execution can lead to unpredictable results.
2447
2448 <b>Non-fatal</b> errors and warnings are indicated by the
2449 @a fatal parameter set to <tt>false</tt>. If the virtual machine
2450 is in the Paused state by the time the error notification is
2451 received, it means that the user can <i>try to resume</i> the machine
2452 execution after attempting to solve the probem that caused the
2453 error. In this case, the notification handler is supposed
2454 to show an appropriate message to the user (depending on the
2455 value of the @a id parameter) that offers several actions such
2456 as <i>Retry</i>, <i>Save</i> or <i>Power Off</i>. If the user
2457 wants to retry, the notification handler should continue
2458 the machine execution using the <link to="IConsole::resume()"/>
2459 call. If the machine execution is not Paused during this
2460 notification, then it means this notification is a <i>warning</i>
2461 (for example, about a fatal condition that can happen very soon);
2462 no immediate action is required from the user, the machine
2463 continues its normal execution.
2464
2465 Note that in either case the notification handler
2466 <b>must not</b> perform any action directly on a thread
2467 where this notification is called. Everything it is allowed to
2468 do is to post a message to another thread that will then talk
2469 to the user and take the corresponding action.
2470
2471 Currently, the following error identificators are known:
2472 <ul>
2473 <li><tt>"HostMemoryLow"</tt></li>
2474 <li><tt>"HostAudioNotResponding"</tt></li>
2475 <li><tt>"VDIStorageFull"</tt></li>
2476 </ul>
2477
2478 <note>
2479 This notification is not designed to be implemented by more
2480 than one callback at a time. If you have multiple
2481 IConsoleCallback instances registered on the given
2482 IConsole object, make sure you just return S_OK from all but
2483 one of them that does actual user notification and performs
2484 necessary actions.
2485 </note>
2486
2487 </desc>
2488 <param name="fatal" type="boolean" dir="in">
2489 <desc>Whether the error is fatal or not</desc>
2490 </param>
2491 <param name="id" type="wstring" dir="in">
2492 <desc>Error identificator</desc>
2493 </param>
2494 <param name="message" type="wstring" dir="in">
2495 <desc>Optional error message</desc>
2496 </param>
2497 </method>
2498
2499 </interface>
2500
2501 <interface
2502 name="IRemoteDisplayInfo" extends="$unknown"
2503 uuid="550104cd-2dfd-4a6c-857d-f6f8e088e62c"
2504 >
2505 <attribute name="active" type="boolean" readonly="yes">
2506 <desc>
2507 Whether the remote display connection is active.
2508 </desc>
2509 </attribute>
2510
2511 <attribute name="numberOfClients" type="unsigned long" readonly="yes">
2512 <desc>
2513 How many times a client connected.
2514 </desc>
2515 </attribute>
2516
2517 <attribute name="beginTime" type="long long" readonly="yes">
2518 <desc>
2519 When the last connection was established, in milliseconds since 1970-01-01 UTC.
2520 </desc>
2521 </attribute>
2522
2523 <attribute name="endTime" type="long long" readonly="yes">
2524 <desc>
2525 When the last connection was terminated or the current time, if
2526 connection is still active, in milliseconds since 1970-01-01 UTC.
2527 </desc>
2528 </attribute>
2529
2530 <attribute name="bytesSent" type="unsigned long long" readonly="yes">
2531 <desc>
2532 How many bytes were sent in last or current, if still active, connection.
2533 </desc>
2534 </attribute>
2535
2536 <attribute name="bytesSentTotal" type="unsigned long long" readonly="yes">
2537 <desc>
2538 How many bytes were sent in all connections.
2539 </desc>
2540 </attribute>
2541
2542 <attribute name="bytesReceived" type="unsigned long long" readonly="yes">
2543 <desc>
2544 How many bytes were received in last or current, if still active, connection.
2545 </desc>
2546 </attribute>
2547
2548 <attribute name="bytesReceivedTotal" type="unsigned long long" readonly="yes">
2549 <desc>
2550 How many bytes were received in all connections.
2551 </desc>
2552 </attribute>
2553
2554 <attribute name="user" type="wstring" readonly="yes">
2555 <desc>
2556 Login user name supplied by the client.
2557 </desc>
2558 </attribute>
2559
2560 <attribute name="domain" type="wstring" readonly="yes">
2561 <desc>
2562 Login domain name supplied by the client.
2563 </desc>
2564 </attribute>
2565
2566 <attribute name="clientName" type="wstring" readonly="yes">
2567 <desc>
2568 The client name supplied by the client.
2569 </desc>
2570 </attribute>
2571
2572 <attribute name="clientIP" type="wstring" readonly="yes">
2573 <desc>
2574 The IP address of the client.
2575 </desc>
2576 </attribute>
2577
2578 <attribute name="clientVersion" type="unsigned long" readonly="yes">
2579 <desc>
2580 The client software version number.
2581 </desc>
2582 </attribute>
2583
2584 <attribute name="encryptionStyle" type="unsigned long" readonly="yes">
2585 <desc>
2586 Public key exchange method used when connection was established.
2587 Values: 0 - RDP4 public key exchange scheme.
2588 1 - X509 sertificates were sent to client.
2589 </desc>
2590 </attribute>
2591
2592 </interface>
2593
2594 <interface
2595 name="IConsole" extends="$unknown"
2596 uuid="1DEA5C4B-0753-4193-B909-22330F64EC45"
2597 >
2598 <attribute name="machine" type="IMachine" readonly="yes">
2599 <desc>
2600 Machine object this console is sessioned with.
2601 <note>
2602 This is a convenience property, it has the same value as
2603 <link to="ISession::machine"/> of the corresponding session
2604 object.
2605 </note>
2606 </desc>
2607 </attribute>
2608
2609 <attribute name="state" type="MachineState" readonly="yes">
2610 <desc>
2611 Current execution state of the machine.
2612 <note>
2613 This property always returns the same value as the corresponding
2614 property of the IMachine object this console is sessioned with.
2615 For the process, that owns (executes) the VM, this is the
2616 preferrable way of quierying the VM state, because no IPC
2617 calls are made.
2618 </note>
2619 </desc>
2620 </attribute>
2621
2622 <attribute name="guest" type="IGuest" readonly="yes">
2623 <desc>Guest object.</desc>
2624 </attribute>
2625
2626 <attribute name="keyboard" type="IKeyboard" readonly="yes">
2627 <desc>
2628 Virtual keyboard object.
2629 <note>
2630 If the machine is not running, any attempt to use
2631 the returned object will result in an error.
2632 </note>
2633 </desc>
2634 </attribute>
2635
2636 <attribute name="mouse" type="IMouse" readonly="yes">
2637 <desc>
2638 Virtual mouse object.
2639 <note>
2640 If the machine is not running, any attempt to use
2641 the returned object will result in an error.
2642 </note>
2643 </desc>
2644 </attribute>
2645
2646 <attribute name="display" type="IDisplay" readonly="yes">
2647 <desc>Virtual display object.
2648 <note>
2649 If the machine is not running, any attempt to use
2650 the returned object will result in an error.
2651 </note>
2652 </desc>
2653 </attribute>
2654
2655 <attribute name="debugger" type="IMachineDebugger" readonly="yes">
2656 <desc>Debugging interface.</desc>
2657 </attribute>
2658
2659 <attribute name="USBDevices" type="IUSBDeviceCollection" readonly="yes">
2660 <desc>
2661 Collection of USB devices currently attached to the virtual
2662 USB controller.
2663 <note>
2664 The collection is empty if the machine is not running.
2665 </note>
2666 </desc>
2667 </attribute>
2668
2669 <attribute name="remoteUSBDevices" type="IHostUSBDeviceCollection" readonly="yes">
2670 <desc>
2671 List of USB devices currently attached to the remote VRDP client.
2672 Once a new device is physically attached to the remote host computer,
2673 it appears in this list and remains there until detached.
2674 </desc>
2675 </attribute>
2676
2677 <attribute name="sharedFolders" type="ISharedFolderCollection" readonly="yes">
2678 <desc>
2679 Collection of shared folders for the current session.
2680 This collection is initially empty and is cleared once the
2681 session is closed. On other words, this collection represents
2682 transient shares (as opposed to <link to="IMachine::sharedFolders"/>
2683 that stores permanent shares stored in the settings file).
2684
2685 New folders to share are added to the collection using
2686 <link to="#createSharedFolder"/>. An existing shared folder can
2687 be removed using <link to="#removeSharedFolder"/>.
2688 </desc>
2689 </attribute>
2690
2691 <attribute name="remoteDisplayInfo" type="IRemoteDisplayInfo" readonly="yes">
2692 <desc>
2693 Interface that provides information on Remote Display (VRDP) connection.
2694 </desc>
2695 </attribute>
2696
2697 <method name="powerUp">
2698 <desc>
2699 Starts the virtual machine execution using the current machine
2700 state (i.e. its current execution state, current settings and
2701 current hard disks).
2702
2703 If the machine is powered off or aborted, the execution will
2704 start from the beginning (as if the real hardware were just
2705 powered on).
2706
2707 If the machine is in the <link to="MachineState::Saved"/> state,
2708 it will continue its execution the point where the state has
2709 beem saved.
2710
2711 <see>#saveState</see>
2712 </desc>
2713 <param name="progress" type="IProgress" dir="return">
2714 <desc>Progress object to track the operation completion.</desc>
2715 </param>
2716 </method>
2717
2718 <method name="powerDown">
2719 <desc>
2720 Stops the virtual machine execution.
2721 After this operation completes, the machine will go to the
2722 PoweredOff state.
2723 </desc>
2724 </method>
2725
2726 <method name="reset">
2727 <desc>Resets the virtual machine.</desc>
2728 </method>
2729
2730 <method name="pause">
2731 <desc>Pauses the virtual machine execution.</desc>
2732 </method>
2733
2734 <method name="resume">
2735 <desc>Resumes the virtual machine execution.</desc>
2736 </method>
2737
2738 <method name="powerButton">
2739 <desc>Send the ACPI power button event to the guest.</desc>
2740 </method>
2741
2742 <method name="saveState">
2743 <desc>
2744 Saves the current execution state of a running virtual machine
2745 and stops its executiuon.
2746
2747 After this operation completes, the machine will go to the
2748 Saved state. Next time it is powered up, this state will
2749 be restored and the machine will continue its execution from
2750 the place where it was saved.
2751
2752 This operation differs from taking a snapshot to the effect
2753 that it doesn't create new differencing hard disks. Also, once
2754 the machine is powered up from the state saved using this method,
2755 the saved state is deleted, so it will be impossible to return
2756 to this state later.
2757
2758 <note>On success, this method implicitly calls <link
2759 to="IMachine::saveSettings"/> to save all current machine
2760 settings (including runtime changes to the DVD drive, etc.).
2761 Together with the impossibility to change any VM settings when
2762 it is in the Saved state, this guarantees the adequate hardware
2763 configuration of the machine when it is restored from the saved
2764 state file.</note>
2765
2766 <note>
2767 The machine must be in the Running or Paused state, otherwise
2768 the operation will fail.
2769 </note>
2770
2771 <see><link to="#takeSnapshot"/></see>
2772 </desc>
2773 <param name="progress" type="IProgress" dir="return">
2774 <desc>Progress object to track the operation completion.</desc>
2775 </param>
2776 </method>
2777
2778 <method name="discardSavedState">
2779 <desc>
2780 Discards (deletes) the saved state of the virtual machine
2781 previously created by <link to="#saveState"/>. Next time the
2782 machine is powered up, a clean boot will occur.
2783 <note>
2784 This operation is equivalent to resetting or powering off
2785 the machine without doing a proper shutdown in the guest OS.
2786 </note>
2787 </desc>
2788 </method>
2789
2790 <method name="getDeviceActivity">
2791 <desc>
2792 Gets the current activity type of a given device or device group.
2793 </desc>
2794 <param name="type" type="DeviceType" dir="in"/>
2795 <param name="activity" type="DeviceActivity" dir="return"/>
2796 </method>
2797
2798 <method name="attachUSBDevice">
2799 <desc>
2800 Attaches a host USB device with the given UUID to the
2801 USB controller of the virtual machine.
2802
2803 The device needs to be in one of the following states:
2804 <link to="USBDeviceState::USBDeviceBusy">USBDeviceBusy</link>,
2805 <link to="USBDeviceState::USBDeviceAvailable">USBDeviceAvailable</link> or
2806 <link to="USBDeviceState::USBDeviceHeld">USBDeviceHeld</link>,
2807 otherwise an error is immediately returned.
2808
2809 When the device state is
2810 <link to="USBDeviceState::USBDeviceBusy">USBDeviceBusy</link>,
2811 an error may also be returned if the host computer
2812 refuses to release it for some reason.
2813
2814 <see>IUSBController::DeviceFilters, USBDeviceState</see>
2815 </desc>
2816 <param name="id" type="uuid" dir="in">
2817 <desc>UUID of the host USB device to attach.</desc>
2818 </param>
2819 </method>
2820
2821 <method name="detachUSBDevice">
2822 <desc>
2823 Detaches an USB device with the given UUID from the USB controller
2824 oif the virtual machine.
2825
2826 After this method succeeds, the VirtualBox server reinitiates
2827 all USB filters as if the device were just physically attached
2828 to the host, but filters of this machine are ignored to avoid
2829 a possible automatic reattachment.
2830
2831 <see>IUSBController::DeviceFilters, USBDeviceState</see>
2832 </desc>
2833 <param name="id" type="uuid" dir="in">
2834 <desc>UUID of the USB device to detach.</desc>
2835 </param>
2836 <param name="device" type="IUSBDevice" dir="return">
2837 <desc>Detached USB device.</desc>
2838 </param>
2839 </method>
2840
2841 <method name="createSharedFolder">
2842 <desc>
2843 Creates a new shared folder by associating the given logical
2844 name with the given host path, adds it to the collection of
2845 shared folders and starts sharing it.
2846 Refer to the description of <link to="ISharedFolder"/> to read
2847 about logical name unicity.
2848 </desc>
2849 <param name="name" type="wstring" dir="in">
2850 <desc>Unique logical name of the shared folder.</desc>
2851 </param>
2852 <param name="hostPath" type="wstring" dir="in">
2853 <desc>Full path to the shared folder in the host file system.</desc>
2854 </param>
2855 </method>
2856
2857 <method name="removeSharedFolder">
2858 <desc>
2859 Removes a shared folder with the given name previously created
2860 by <link to="#createSharedFolder"/> from the collection of
2861 shared folders and stops sharing it.
2862 </desc>
2863 <param name="name" type="wstring" dir="in">
2864 <desc>Logical name of the shared folder to remove.</desc>
2865 </param>
2866 </method>
2867
2868 <method name="takeSnapshot">
2869 <desc>
2870 Saves the current execution state and all settings of the
2871 machine and creates differencing images for all
2872 normal (non-independent) hard disks.
2873
2874 This method can be called for a PoweredOff, Saved, Running or
2875 Paused virtual machine. When the machine is PoweredOff, an
2876 offline <link to="ISnapshot">snapshot</link> is created,
2877 in all other cases -- an online snapshot.
2878
2879 The taken snapshot is always based on the
2880 <link to="IMachine::currentSnapshot">current
2881 snapshot</link> of the associated virtual machine and becomes
2882 a new current snapshot.
2883
2884 <note>This method implicitly calls <link
2885 to="IMachine::saveSettings"/> to save all current machine
2886 settings before taking an offline snapshot.</note>
2887
2888 <see>ISnapshot, <link to="#saveState"/></see>
2889 </desc>
2890 <param name="name" type="wstring" dir="in">
2891 <desc>Short name for the snapshot.</desc>
2892 </param>
2893 <param name="description" type="wstring" dir="in">
2894 <desc>Optional description of the snapshot.</desc>
2895 </param>
2896 <param name="progress" type="IProgress" dir="return">
2897 <desc>Progress object to track the operation completion.</desc>
2898 </param>
2899 </method>
2900
2901 <method name="discardSnapshot">
2902 <desc>
2903
2904 Starts discarding the specified snapshot. The execution state
2905 and settings of the associated machine stored in the snapshot
2906 will be deleted. The contents of all differencing hard disks of
2907 this snapshot will be merged with the contents of their
2908 dependent child hard disks to keep the, disks valid (in other
2909 words, all changes represented by hard disks being discarded
2910 will be propagated to their child hard disks). After that, this
2911 snapshot's differencing hard disks will be deleted. The parent
2912 of this snapshot will become a new parent for all its child
2913 snapshots.
2914
2915 If the discarded snapshot is the current one, its parent
2916 snapshot will become a new current snapshot. The current machine
2917 state is not directly affected in this case, except that
2918 currently attached differencing hard disks based on hard disks
2919 of the discarded snapshot will be also merged as described
2920 above.
2921
2922 If the discarded snapshot is the first one (the root snapshot)
2923 and it has exactly one child snapshot, this child snapshot will
2924 become the first snapshot after discarding. If there are no
2925 children at all (i.e. the first snapshot is the only snapshot of
2926 the machine), both the current and the first snapshot of the
2927 machine will be set to null. In all other cases, the first
2928 snapshot cannot be discarded.
2929
2930 You cannot discard the snapshot if it stores <link
2931 to="HardDiskType::NormalHardDisk">normal</link>
2932 (non-differencing) hard disks that have differencing hard disks
2933 based on them. Snapshots of such kind can be discarded only when
2934 every normal hard disk has either no children at all or exactly
2935 one child. In the former case, the normal hard disk simply
2936 becomes unused (i.e. not attached to any VM). In the latter
2937 case, it receives all the changes strored in the child hard
2938 disk, and then it replaces the child hard disk in the
2939 configuration of the corresponding snapshot or machine.
2940
2941 Also, you cannot discard the snapshot if it stores hard disks
2942 (of any type) having differencing child hard disks that belong
2943 to other machines. Such snapshots can be only discarded after
2944 you discard all snapshots of other machines containing "foreign"
2945 child disks, or detach these "foreign" child disks from machines
2946 they are attached to.
2947
2948 One particular example of the snapshot storing normal hard disks
2949 is the first snapshot of a virtual machine that had normal hard
2950 disks attached when taking the snapshot. Be careful when
2951 discarding such snapshots because this implicitly commits
2952 changes (made since the snapshot being discarded has been taken)
2953 to normal hard disks (as described above), which may be not what
2954 you want.
2955
2956 The virtual machine is put to the <link
2957 to="MachineState::Discarding">Discarding</link> state until the
2958 discard operation is completed.
2959
2960 <note>The machine must not be running, otherwise the operation
2961 will fail.</note>
2962
2963 <note>
2964 Child hard disks of all normal hard disks of the
2965 discarded snapshot must be <link to="IHardDisk::accessible">
2966 accessible</link> for this operation to succeed.
2967 In particular, this means that all virtual machines,
2968 whose hard disks are directly or indirectly based on
2969 the hard disks of discarded snapshot, must be powered off.
2970 </note>
2971 <note>
2972 Merging hard disk contents can be very time and disk space
2973 consuming, if these disks are big in size and have many
2974 children. However, if the snapshot being discarded is the last
2975 (head) snapshot on the branch, the operation will be rather
2976 quick.
2977 </note>
2978 <note>
2979 Note that discarding the current snapshot
2980 will imlicitly call <link to="IMachine::saveSettings()"/> to
2981 make all current machine settings permanent.
2982 </note>
2983 </desc>
2984 <param name="id" type="uuid" dir="in">
2985 <desc>UUID of the snapshot to discard.</desc>
2986 </param>
2987 <param name="progress" type="IProgress" dir="return">
2988 <desc>Progress object to track the operation completion.</desc>
2989 </param>
2990 </method>
2991
2992 <method name="discardCurrentState">
2993 <desc>
2994 This operation is similar to <link to="#discardSnapshot()"/> but
2995 affects the current machine state. This means that the state stored
2996 in the current snapshot will become a new current state, and
2997 all current settings of the machine and changes stored in
2998 differencing hard disks will be lost.
2999
3000 After this operation is successfully completed, new empty
3001 differencing hard disks are created for all normal hard disks
3002 of the machine.
3003
3004 If the current snapshot of the machine is an online snapshot,
3005 the machine will go to the <link to="MachineState::Saved">
3006 saved state</link>, so that the next time it is powered on,
3007 the execution state will be restored from the current snapshot.
3008
3009 <note>The machine must not be running, otherwise the operation
3010 will fail.</note>
3011
3012 <note>If the machine state is <link
3013 to="MachineState::Saved">Saved</link> prior to this operation,
3014 the saved state file will be implicitly discarded (as if <link
3015 to="IConsole::discardSavedState()"/> were called).</note>
3016
3017 </desc>
3018 <param name="progress" type="IProgress" dir="return">
3019 <desc>Progress object to track the operation completion.</desc>
3020 </param>
3021 </method>
3022
3023 <method name="discardCurrentSnapshotAndState">
3024 <desc>
3025
3026 This method is equivalent to doing <link
3027 to="#discardSnapshot">discardSnapshot</link> (<link
3028 to="IMachine::currentSnapshot">currentSnapshot</link>.<link
3029 to="ISnapshot::id">id()</link>, ...) followed by <link
3030 to="#discardCurrentState()"/>.
3031
3032 As a result, the machine will be fully restored from the
3033 snapshot preceeding the current snapshot, while both the current
3034 snapshot and the current machine state will be discarded.
3035
3036 If the current snapshot is the first snapshot of the machine
3037 (i.e. it has the only snapshot), the current machine state will
3038 be discarded <b>before</b> discarding the snapshot. In other
3039 words, the machine will be restored from its last snapshot,
3040 before discarding it. This differs from performing a single
3041 <link to="#discardSnapshot()"/> call (note that no <link
3042 to="#discardCurrentState()"/> will be possible after it) to the
3043 effect that the latter will preserve the current state instead
3044 of discarding it.
3045
3046 Unless explicitly mentioned otherwise, all remarks and
3047 limitations of the above two methods also apply to this method.
3048
3049 <note>The machine must not be running, otherwise the operation
3050 will fail.</note>
3051
3052 <note>If the machine state is <link
3053 to="MachineState::Saved">Saved</link> prior to this operation,
3054 the saved state file will be implicitly discarded (as if <link
3055 to="IConsole::discardSavedState()"/> were called).</note>
3056
3057 <note>
3058 This method is more efficient than calling two above
3059 methods separately: it requires less IPC calls and provides
3060 a single progress object.
3061 </note>
3062
3063 </desc>
3064 <param name="progress" type="IProgress" dir="return">
3065 <desc>Progress object to track the operation completion.</desc>
3066 </param>
3067 </method>
3068
3069 <method name="registerCallback">
3070 <param name="callback" type="IConsoleCallback" dir="in"/>
3071 <desc>
3072 Registers a new console callback on this instance. The methods of the
3073 callback interface will be called by this instance when the appropriate
3074 event occurs.
3075 </desc>
3076 </method>
3077
3078 <method name="unregisterCallback">
3079 <param name="callback" type="IConsoleCallback" dir="in"/>
3080 <desc>
3081 Unregisters the console callback previously registered using
3082 <link to="#registerCallback"/>.
3083 </desc>
3084 </method>
3085
3086 </interface>
3087
3088 <!--
3089 // IHost
3090 /////////////////////////////////////////////////////////////////////////
3091 -->
3092
3093 <interface
3094 name="IHostDVDDrive" extends="$unknown"
3095 uuid="c2308775-85f3-45ab-ade5-97f02d1e61e0"
3096 >
3097 <attribute name="name" type="wstring" readonly="yes">
3098 <desc>Returns the platform device identifier.</desc>
3099 </attribute>
3100
3101 </interface>
3102
3103 <enumerator
3104 name="IHostDVDDriveEnumerator" type="IHostDVDDrive"
3105 uuid="1ed7cfaf-c363-40df-aa4e-89c1afb7d96b"
3106 />
3107
3108 <collection
3109 name="IHostDVDDriveCollection" type="IHostDVDDrive"
3110 enumerator="IHostDVDDriveEnumerator"
3111 uuid="1909c533-1a1e-445f-a4e1-a267cffc30ed"
3112 readonly="yes"
3113 >
3114 <method name="findByName">
3115 <desc>
3116 Searches this collection for a host drive with the given name.
3117 <note>
3118 The method returns an error if the given name does not
3119 correspond to any host drive in the collection.
3120 </note>
3121 </desc>
3122 <param name="name" type="wstring" dir="in">
3123 <desc>Name of the host drive to search for</desc>
3124 </param>
3125 <param name="drive" type="IHostDVDDrive" dir="return">
3126 <desc>Found host drive object</desc>
3127 </param>
3128 </method>
3129 </collection>
3130
3131 <interface
3132 name="IHostFloppyDrive" extends="$unknown"
3133 uuid="2b2ad1ab-2ea9-4cf8-be3c-2a76677d8725"
3134 >
3135 <attribute name="name" type="wstring" readonly="yes">
3136 <desc>Returns the platform device identifier.</desc>
3137 </attribute>
3138 </interface>
3139
3140 <enumerator
3141 name="IHostFloppyDriveEnumerator" type="IHostFloppyDrive"
3142 uuid="ce04c924-4f54-432a-9dec-11fddc3ea875"
3143 />
3144
3145 <collection
3146 name="IHostFloppyDriveCollection" type="IHostFloppyDrive"
3147 enumerator="IHostFloppyDriveEnumerator"
3148 uuid="fd84bb86-c59a-4037-a557-755ff263a460"
3149 readonly="yes"
3150 >
3151 <method name="findByName">
3152 <desc>
3153 Searches this collection for a host drive with the given name.
3154 <note>
3155 The method returns an error if the given name does not
3156 correspond to any host drive in the collection.
3157 </note>
3158 </desc>
3159 <param name="name" type="wstring" dir="in">
3160 <desc>Name of the host drive to search for</desc>
3161 </param>
3162 <param name="drive" type="IHostFloppyDrive" dir="return">
3163 <desc>Found host drive object</desc>
3164 </param>
3165 </method>
3166 </collection>
3167
3168<if target="midl">
3169 <interface
3170 name="IHostNetworkInterface" extends="$unknown"
3171 uuid="F4512D7C-B074-4e97-99B8-6D2BD27C3F5A"
3172 >
3173 <attribute name="name" type="wstring" readonly="yes">
3174 <desc>Returns the host network interface name.</desc>
3175 </attribute>
3176
3177 <attribute name="id" type="uuid" readonly="yes">
3178 <desc>Returns the interface UUID.</desc>
3179 </attribute>
3180 </interface>
3181
3182 <enumerator
3183 name="IHostNetworkInterfaceEnumerator" type="IHostNetworkInterface"
3184 uuid="7B52FEF7-56E8-4aec-92F5-15E6D11EC630"
3185 />
3186
3187 <collection
3188 name="IHostNetworkInterfaceCollection" type="IHostNetworkInterface"
3189 enumerator="IHostNetworkInterfaceEnumerator"
3190 uuid="BF1D41F2-B97B-4314-A0FB-D4823AF42FB5"
3191 readonly="yes"
3192 >
3193 <method name="findByName">
3194 <desc>
3195 Searches this collection for a host network interface with the given name.
3196 <note>
3197 The method returns an error if the given name does not
3198 correspond to any host network interface in the collection.
3199 </note>
3200 </desc>
3201 <param name="name" type="wstring" dir="in">
3202 <desc>Name of the host network interface to search for.</desc>
3203 </param>
3204 <param name="networkInterface" type="IHostNetworkInterface" dir="return">
3205 <desc>Found host network interface object.</desc>
3206 </param>
3207 </method>
3208 <method name="findById">
3209 <desc>
3210 Searches this collection for a host network interface with the given GUID.
3211 <note>
3212 The method returns an error if the given GUID does not
3213 correspond to any host network interface in the collection.
3214 </note>
3215 </desc>
3216 <param name="id" type="uuid" dir="in">
3217 <desc>GUID of the host network interface to search for.</desc>
3218 </param>
3219 <param name="networkInterface" type="IHostNetworkInterface" dir="return">
3220 <desc>Found host network interface object.</desc>
3221 </param>
3222 </method>
3223 </collection>
3224</if>
3225
3226 <interface
3227 name="IHost" extends="$unknown"
3228 uuid="FD443EC1-000B-4F5B-9282-D72760A66916"
3229 >
3230 <attribute name="DVDDrives" type="IHostDVDDriveCollection" readonly="yes">
3231 <desc>List of DVD drives available on the host.</desc>
3232 </attribute>
3233
3234 <attribute name="floppyDrives" type="IHostFloppyDriveCollection" readonly="yes">
3235 <desc>List of floppy drives available on the host.</desc>
3236 </attribute>
3237
3238 <attribute name="USBDevices" type="IHostUSBDeviceCollection" readonly="yes">
3239 <desc>
3240 List of USB devices currently attached to the host.
3241 Once a new device is physically attached to the host computer,
3242 it appears in this list and remains there until detached.
3243 </desc>
3244 </attribute>
3245
3246 <attribute name="USBDeviceFilters" type="IHostUSBDeviceFilterCollection" readonly="yes">
3247 <desc>
3248 List of USB device filters in action.
3249 When a new device is physically attached to the host computer,
3250 filters from this list are applied to it (in order they are stored
3251 in the list). The first matched filter will determine the
3252 <link to="IHostUSBDeviceFilter::action">action</link>
3253 performed on the device.
3254
3255 Unless the device is ignored by these filters, filters of all
3256 currently running virtual machines
3257 (<link to="IUSBController::DeviceFilters"/>) are applied to it.
3258
3259 <see>IHostUSBDeviceFilter, USBDeviceState</see>
3260 </desc>
3261 </attribute>
3262
3263<if target="midl">
3264 <attribute name="networkInterfaces" type="IHostNetworkInterfaceCollection" readonly="yes">
3265 <desc>List of host network interfaces currently defined on the host.</desc>
3266 </attribute>
3267</if>
3268
3269 <attribute name="processorCount" type="unsigned long" readonly="yes">
3270 <desc>Number of (logical) CPUs installed in the host system.</desc>
3271 </attribute>
3272
3273 <attribute name="processorSpeed" type="unsigned long" readonly="yes">
3274 <desc>(Approximate) speed of the host CPU in Megahertz.</desc>
3275 </attribute>
3276
3277 <attribute name="processorDescription" type="wstring" readonly="yes">
3278 <desc>Description string of the host CPU.</desc>
3279 </attribute>
3280
3281 <attribute name="memorySize" type="unsigned long" readonly="yes">
3282 <desc>Amount of system memory in megabytes installed in the host system.</desc>
3283 </attribute>
3284
3285 <attribute name="memoryAvailable" type="unsigned long" readonly="yes">
3286 <desc>Available system memory in the host system.</desc>
3287 </attribute>
3288
3289 <attribute name="operatingSystem" type="wstring" readonly="yes">
3290 <desc>Name of the host system's operating system.</desc>
3291 </attribute>
3292
3293 <attribute name="OSVersion" type="wstring" readonly="yes">
3294 <desc>Host operating system's version string.</desc>
3295 </attribute>
3296
3297 <attribute name="UTCTime" type="long long" readonly="yes">
3298 <desc>Returns the current host time in milliseconds since 1970-01-01 UTC.</desc>
3299 </attribute>
3300
3301<if target="midl">
3302 <method name="createHostNetworkInterface">
3303 <desc>
3304 Creates a new adapter for Host Interface Networking.
3305 </desc>
3306 <param name="name" type="wstring" dir="in">
3307 <desc>
3308 Adapter name.
3309 </desc>
3310 </param>
3311 <param name="hostInterface" type="IHostNetworkInterface" dir="out">
3312 <desc>
3313 Created host interface object.
3314 </desc>
3315 </param>
3316 <param name="progress" type="IProgress" dir="return">
3317 <desc>
3318 Progress object to track the operation completion.
3319 </desc>
3320 </param>
3321 </method>
3322 <method name="removeHostNetworkInterface">
3323 <desc>
3324 Removes the given host network interface.
3325 </desc>
3326 <param name="id" type="uuid" dir="in">
3327 <desc>
3328 Adapter GUID.
3329 </desc>
3330 </param>
3331 <param name="hostInterface" type="IHostNetworkInterface" dir="out">
3332 <desc>
3333 Removed host interface object.
3334 </desc>
3335 </param>
3336 <param name="progress" type="IProgress" dir="return">
3337 <desc>
3338 Progress object to track the operation completion.
3339 </desc>
3340 </param>
3341 </method>
3342</if>
3343
3344 <method name="createUSBDeviceFilter">
3345 <desc>
3346 Creates a new USB device filter. All attributes except
3347 the filter name are set to <tt>null</tt> (any match),
3348 <i>active</i> is <tt>false</tt> (the filter is not active).
3349
3350 The created filter can be added to the list of filters using
3351 <link to="#insertUSBDeviceFilter()"/>.
3352
3353 <see>#USBDeviceFilters</see>
3354 </desc>
3355 <param name="name" type="wstring" dir="in">
3356 <desc>
3357 Filter name. See <link to="IHostUSBDeviceFilter::name"/>
3358 for more info.
3359 </desc>
3360 </param>
3361 <param name="filter" type="IHostUSBDeviceFilter" dir="out">
3362 <desc>Created filter object.</desc>
3363 </param>
3364 </method>
3365
3366 <method name="insertUSBDeviceFilter">
3367 <desc>
3368 Inserts the given USB device to the specified position
3369 in the list of filters.
3370
3371 Positions are numbered starting from <tt>0</tt>. If the specified
3372 position is equal to or greater than the number of elements in
3373 the list, the filter is added to the end of the collection.
3374
3375 <note>
3376 Duplicates are not allowed, so an attempt to insert a
3377 filter that is already in the list, will return an
3378 error.
3379 </note>
3380
3381 <see>#USBDeviceFilters</see>
3382 </desc>
3383 <param name="position" type="unsigned long" dir="in">
3384 <desc>Position to insert the filter to.</desc>
3385 </param>
3386 <param name="filter" type="IHostUSBDeviceFilter" dir="in">
3387 <desc>USB device filter to insert.</desc>
3388 </param>
3389 </method>
3390
3391 <method name="removeUSBDeviceFilter">
3392 <desc>
3393 Removes a USB device filter from the specified position in the
3394 list of filters.
3395
3396 Positions are numbered starting from <tt>0</tt>. Specifying a
3397 position equal to or greater than the number of elements in
3398 the list will produce an error.
3399
3400 <see>#USBDeviceFilters</see>
3401 </desc>
3402 <param name="position" type="unsigned long" dir="in">
3403 <desc>Position to remove the filter from.</desc>
3404 </param>
3405 <param name="filter" type="IHostUSBDeviceFilter" dir="out">
3406 <desc>Removed USB device filter.</desc>
3407 </param>
3408 </method>
3409
3410 </interface>
3411
3412 <!--
3413 // ISystemProperties
3414 /////////////////////////////////////////////////////////////////////////
3415 -->
3416
3417 <interface
3418 name="ISystemProperties" extends="$unknown"
3419 uuid="6dc28c62-7924-43de-8336-fa754aa531d7"
3420 >
3421 <desc>
3422 The ISystemProperties interface represents global properties
3423 of the given VirtualBox installation.
3424
3425 These properties define limits and default values for various
3426 attributes and parameters.
3427
3428 Most of the properties are read-only, but some can be changed by
3429 a user.
3430 </desc>
3431
3432 <attribute name="minGuestRAM" type="unsigned long" readonly="yes">
3433 <desc>Minium guest system memory in Megabytes.</desc>
3434 </attribute>
3435
3436 <attribute name="maxGuestRAM" type="unsigned long" readonly="yes">
3437 <desc>Maximum guest system memory in Megabytes.</desc>
3438 </attribute>
3439
3440 <attribute name="minGuestVRAM" type="unsigned long" readonly="yes">
3441 <desc>Minimum guest video memory in Megabytes.</desc>
3442 </attribute>
3443
3444 <attribute name="maxGuestVRAM" type="unsigned long" readonly="yes">
3445 <desc>Maximum guest video memory in Megabytes.</desc>
3446 </attribute>
3447
3448 <attribute name="maxVDISize" type="unsigned long long" readonly="yes">
3449 <desc>Maximum size of a virtual disk image in Megabytes.</desc>
3450 </attribute>
3451
3452 <attribute name="networkAdapterCount" type="unsigned long" readonly="yes">
3453 <desc>
3454 Number of network adapters associated with every
3455 <link to="IMachine"/> instance.
3456 </desc>
3457 </attribute>
3458
3459 <attribute name="maxBootPosition" type="unsigned long" readonly="yes">
3460 <desc>
3461 Maximum device position in the boot order. This value corresponds
3462 to the total number of devices a machine can boot from, to make it
3463 possible to include all possible devices to the boot list.
3464 <see><link to="IMachine::setBootOrder()"/></see>
3465 </desc>
3466 </attribute>
3467
3468 <attribute name="defaultVDIFolder" type="wstring">
3469 <desc>
3470 Full path to the default directory used to create new or open
3471 existing virtual disk images when an image file name contains no
3472 path.
3473
3474 The initial value of this property is
3475 <tt>&lt;</tt><link to="IVirtualBox::homeFolder">
3476 VirtualBox_home</link><tt>&gt;/VDI</tt>.
3477
3478 <note>
3479 Setting this property to <tt>null</tt> will restore the
3480 initial value.
3481 </note>
3482 <note>
3483 When settings this property, the specified path can be
3484 absolute (full path) or relative
3485 to the <link to="IVirtualBox::homeFolder">
3486 VirtualBox home directory</link>.
3487 When reading this property, a full path is
3488 always returned.
3489 </note>
3490 <note>
3491 The specified path may not exist, it will be created
3492 when necessary.
3493 </note>
3494
3495 <see>
3496 <link to="IVirtualBox::createHardDisk()"/>,
3497 <link to="IVirtualBox::openVirtualDiskImage()"/>
3498 </see>
3499 </desc>
3500 </attribute>
3501
3502 <attribute name="defaultMachineFolder" type="wstring">
3503 <desc>
3504 Full path to the default directory used to create new or open
3505 existing machines when a settings file name contains no
3506 path.
3507
3508 The initial value of this property is
3509 <tt>&lt;</tt><link to="IVirtualBox::homeFolder">
3510 VirtualBox_home</link><tt>&gt;/Machines</tt>.
3511
3512 <note>
3513 Setting this property to <tt>null</tt> will restore the
3514 initial value.
3515 </note>
3516 <note>
3517 When settings this property, the specified path can be
3518 absolute (full path) or relative
3519 to the <link to="IVirtualBox::homeFolder">
3520 VirtualBox home directory</link>.
3521 When reading this property, a full path is
3522 always returned.
3523 </note>
3524 <note>
3525 The specified path may not exist, it will be created
3526 when necessary.
3527 </note>
3528
3529 <see>
3530 <link to="IVirtualBox::createMachine()"/>,
3531 <link to="IVirtualBox::openMachine()"/>
3532 </see>
3533 </desc>
3534 </attribute>
3535
3536 <attribute name="remoteDisplayAuthLibrary" type="wstring">
3537 <desc>
3538 Path to the library that provides authentication
3539 for VRDP clients. The library is used if authentication
3540 type is set to "external" in the VM RemoteDisplay
3541 configuration.
3542
3543 The initial value of this property is <tt>VRDPAuth</tt>.
3544 That is library called VRDPAuth in one of default library
3545 directories. A full path can be used as well.
3546
3547 <note>
3548 The library name does not include the file extension.
3549 </note>
3550 <note>
3551 Setting this property to <tt>null</tt> will restore the
3552 initial value.
3553 </note>
3554 </desc>
3555 </attribute>
3556
3557 <attribute name="HWVirtExEnabled" type="boolean">
3558 <desc>
3559 This specifies the default value for hardware virtualization
3560 extensions. If enabled, virtual machines will make use of
3561 hardware virtualization extensions such as Intel VT-x and
3562 AMD SVM by default. This value can be overridden by each VM
3563 using their <link to="IMachine::HWVirtExEnabled"/> property.
3564 </desc>
3565 </attribute>
3566
3567 </interface>
3568
3569 <!--
3570 // IGuest
3571 /////////////////////////////////////////////////////////////////////////
3572 -->
3573
3574 <interface
3575 name="IGuestOSType" extends="$unknown"
3576 uuid="da94f478-1f37-4726-b750-2235950dc2fe"
3577 >
3578 <attribute name="id" type="wstring" readonly="yes">
3579 <desc>Guest OS identifier string.</desc>
3580 </attribute>
3581
3582 <attribute name="description" type="wstring" readonly="yes">
3583 <desc>Human readable description of the guest OS.</desc>
3584 </attribute>
3585
3586 <attribute name="recommendedRAM" type="unsigned long" readonly="yes">
3587 <desc>Recommended RAM size in Megabytes.</desc>
3588 </attribute>
3589
3590 <attribute name="recommendedVRAM" type="unsigned long" readonly="yes">
3591 <desc>Recommended video RAM size in Megabytes.</desc>
3592 </attribute>
3593
3594 <attribute name="recommendedHDD" type="unsigned long" readonly="yes">
3595 <desc>Recommended hard disk size in Megabytes.</desc>
3596 </attribute>
3597 </interface>
3598
3599
3600 <enumerator
3601 name="IGuestOSTypeEnumerator" type="IGuestOSType"
3602 uuid="a3335e02-4669-4e3c-80c7-c4dc7056a07c"
3603 />
3604
3605 <collection
3606 name="IGuestOSTypeCollection" type="IGuestOSType" enumerator="IGuestOSTypeEnumerator"
3607 uuid="a5e36749-a610-498b-9f29-2e36c1042d65"
3608 readonly="yes"
3609 />
3610
3611 <interface
3612 name="IGuest" extends="$unknown"
3613 uuid="FD443EC1-000E-4F5B-9282-D72760A66916"
3614 >
3615 <desc>
3616 The IGuest interface represents a guest (virtual machine's) operating
3617 system. It provides information about the Guest Additions and other
3618 guest OS properties.
3619
3620 <see>IConsole::guest</see>
3621 </desc>
3622
3623 <attribute name="OSType" type="IGuestOSType" readonly="yes">
3624 <desc>
3625 Guest OS type as reported by the Guest Additions.
3626 <note>
3627 If Guest Additions are not installed, this value will be
3628 the same as <link to="IMachine::OSType"/>.
3629 </note>
3630 </desc>
3631 </attribute>
3632
3633 <attribute name="additionsActive" type="boolean" readonly="yes">
3634 <desc>
3635 Flag whether the Guest Additions are installed and active
3636 in which case their version will be returned by the
3637 <link to="#additionsVersion"/> property.
3638 </desc>
3639 </attribute>
3640
3641 <attribute name="additionsVersion" type="wstring" readonly="yes">
3642 <desc>
3643 Version of the Guest Additions (3 decimal numbers separated
3644 by dots) or empty when the Additions are not installed. The
3645 Additions may also report a version but yet not be active as
3646 the version might be refused by VirtualBox (incompatible) or
3647 other failures occured.
3648 </desc>
3649 </attribute>
3650
3651 <method name="setCredentials">
3652 <desc>
3653 Store login credentials that can be queried by guest operating
3654 systems with Additions installed. The credentials are transient
3655 to the session and the guest may also choose to erase them. Note
3656 that the caller cannot determine whether the guest operating system
3657 has queried or made use of the credentials.
3658 </desc>
3659 <param name="userName" type="wstring" dir="in">
3660 <desc>User name string, can be empty</desc>
3661 </param>
3662 <param name="password" type="wstring" dir="in">
3663 <desc>Password string, can be empty</desc>
3664 </param>
3665 <param name="domain" type="wstring" dir="in">
3666 <desc>Domain name (guest logon scheme specific), can be emtpy</desc>
3667 </param>
3668 <param name="allowInteractiveLogon" type="boolean" dir="in">
3669 <desc>
3670 Flag whether the guest should alternatively allow the user to
3671 interactively specify different credentials. This flag might
3672 not be supported by all versions of the Additions.
3673 </desc>
3674 </param>
3675 </method>
3676
3677 </interface>
3678
3679
3680 <!--
3681 // IProgress
3682 /////////////////////////////////////////////////////////////////////////
3683 -->
3684
3685 <enumerator
3686 name="IProgressEnumerator" type="IProgress"
3687 uuid="e0380522-4ef1-48f4-856c-e455177ccb2d"
3688 />
3689
3690 <collection
3691 name="IProgressCollection" type="IProgress" enumerator="IProgressEnumerator"
3692 uuid="78B76A7C-F0F2-467c-9F0E-F089A54EE957"
3693 readonly="yes"
3694 />
3695
3696 <interface
3697 name="IProgress" extends="$unknown"
3698 uuid="10CC03A1-717E-429b-992D-C67B56175A51"
3699 >
3700 <desc>
3701 The IProgress interface represents a task progress object that allows
3702 to wait for the completion of some asynchronous task.
3703
3704 The task consists of one or more operations that run sequentially,
3705 one after one. There is an individual percent of completion of the
3706 current operation and the percent of completion of the task as a
3707 whole. Similarly, you can wait for the completion of a particular
3708 operation or for the completion of the whole task.
3709
3710 Every operation is identified by a number (starting from 0)
3711 and has a separate description.
3712 </desc>
3713
3714 <attribute name="id" type="uuid" readonly="yes">
3715 <desc>ID of the task.</desc>
3716 </attribute>
3717
3718 <attribute name="description" type="wstring" readonly="yes">
3719 <desc>Description of the task.</desc>
3720 </attribute>
3721
3722 <attribute name="initiator" type="$unknown" readonly="yes">
3723 <desc>Initiator of the task.</desc>
3724 </attribute>
3725
3726 <attribute name="cancelable" type="boolean" readonly="yes">
3727 <desc>Whether the task can be interrupted.</desc>
3728 </attribute>
3729
3730 <attribute name="percent" type="long" readonly="yes">
3731 <desc>
3732 Current task progress value in percent.
3733 This value depends on how many operations are already complete.
3734 </desc>
3735 </attribute>
3736
3737 <attribute name="completed" type="boolean" readonly="yes">
3738 <desc>Whether the task has been completed.</desc>
3739 </attribute>
3740
3741 <attribute name="canceled" type="boolean" readonly="yes">
3742 <desc>Whether the task has been canceled.</desc>
3743 </attribute>
3744
3745 <attribute name="resultCode" type="result" readonly="yes">
3746 <desc>
3747 Result code of the progress task.
3748 Valid only if <link to="#completed"/> is true.
3749 </desc>
3750 </attribute>
3751
3752 <attribute name="errorInfo" type="IVirtualBoxErrorInfo" readonly="yes">
3753 <desc>
3754 Extended information about the unsuccessful result of the
3755 progress operation. May be NULL when no extended information
3756 is available.
3757 Valid only if <link to="#completed"/> is true and
3758 <link to="#resultCode"/> indicates a failure.
3759 </desc>
3760 </attribute>
3761
3762 <attribute name="operationCount" type="unsigned long" readonly="yes">
3763 <desc>
3764 Number of operations this task is divided into.
3765 Every task consists of at least one operation.
3766 </desc>
3767 </attribute>
3768
3769 <attribute name="operation" type="unsigned long" readonly="yes">
3770 <desc>Number of the operation being currently executed.</desc>
3771 </attribute>
3772
3773 <attribute name="operationDescription" type="wstring" readonly="yes">
3774 <desc>
3775 Description of the operation being currently executed.
3776 </desc>
3777 </attribute>
3778
3779 <attribute name="operationPercent" type="long" readonly="yes">
3780 <desc>Current operation progress value in percent.</desc>
3781 </attribute>
3782
3783 <method name="waitForCompletion">
3784 <desc>
3785 Waits until the task is done (including all operations) with a
3786 given timeout.
3787 </desc>
3788 <param name="timeout" type="long" dir="in">
3789 <desc>
3790 Timeout value in milliseconds.
3791 Specify -1 for an indefinite wait.
3792 </desc>
3793 </param>
3794 </method>
3795
3796 <method name="waitForOperationCompletion">
3797 <desc>
3798 Waits until the given operation is done with a given timeout.
3799 </desc>
3800 <param name="operation" type="unsigned long" dir="in">
3801 <desc>
3802 Number of the operation to wait for.
3803 Must be less than <link to="#operationCount"/>.
3804 </desc>
3805 </param>
3806 <param name="timeout" type="long" dir="in">
3807 <desc>
3808 Timeout value in milliseconds.
3809 Specify -1 for an indefinite wait.
3810 </desc>
3811 </param>
3812 </method>
3813
3814 <method name="cancel">
3815 <desc>
3816 Cancels the task.
3817 <note>
3818 If <link to="#cancelable"/> is <tt>false</tt>, then
3819 this method will fail.
3820 </note>
3821 </desc>
3822 </method>
3823
3824 </interface>
3825
3826
3827 <!--
3828 // ISnapshot
3829 /////////////////////////////////////////////////////////////////////////
3830 -->
3831
3832 <enumerator
3833 name="ISnapshotEnumerator" type="ISnapshot"
3834 uuid="25cfa2a4-1f1d-4f05-9658-b7a5894ef1a3"
3835 />
3836
3837 <collection
3838 name="ISnapshotCollection" type="ISnapshot"
3839 enumerator="ISnapshotEnumerator"
3840 uuid="23852e3c-94cd-4801-ab05-ed35675b3894"
3841 readonly="yes"
3842 />
3843
3844 <interface
3845 name="ISnapshot" extends="$unknown"
3846 uuid="9f1bbf79-13b0-4da2-abba-4a992c65c083"
3847 >
3848 <desc>
3849 The ISnapshot interface represents a snapshot of the virtual
3850 machine.
3851
3852 The <i>snapshot</i> stores all the information about a virtual
3853 machine necessary to bring it to exactly the same state as it was at
3854 the time of taking the snapshot. The snapshot includes:
3855
3856 <ul>
3857 <li>all settings of the virtual machine (i.e. its hardware
3858 configuration: RAM size, attached hard disks, etc.)
3859 </li>
3860 <li>the execution state of the virtual machine (memory contents,
3861 CPU state, etc.).
3862 </li>
3863 </ul>
3864
3865 Snapshots can be <i>offline</i> (taken when the VM is powered off)
3866 or <i>online</i> (taken when the VM is running). The execution
3867 state of the offline snapshot is called a <i>zero execution state</i>
3868 (it doesn't actually contain any information about memory contents
3869 or the CPU state, assuming that all hardware is just powered off).
3870
3871 <h3>Snapshot branches</h3>
3872
3873 Snapshots can be chained. Chained snapshots form a branch where
3874 every next snapshot is based on the previous one. This chaining is
3875 mostly related to hard disk branching (see <link to="IHardDisk"/>
3876 description). This means that every time a new snapshot is created,
3877 a new differencing hard disk is implicitly created for all normal
3878 hard disks attached to the given virtual machine. This allows to
3879 fully restore hard disk contents when the machine is later reverted
3880 to a particular snapshot.
3881
3882 In the current implelemtation, multiple snapshot branches within one
3883 virtual machine are not allowed. Every machine has a signle branch,
3884 and <link to="IConsole::takeSnapshot()"/> operation adds a new
3885 snapshot to the top of that branch.
3886
3887 Existings snapshots can be discarded using
3888 <link to="IConsole::discardSnapshot()"/>.
3889
3890 <h3>Current snapshot</h3>
3891
3892 Every virtual machine has a current snapshot, identified by
3893 <link to="IMachine::currentSnapshot"/>. This snapshot is used as
3894 a base for the <i>current machine state</i> (see below), to the effect
3895 that all normal hard disks of the machine and its execution
3896 state are based on this snapshot.
3897
3898 In the current implementation, the current snapshot is always the
3899 last taken snapshot (i.e. the head snapshot on the branch) and it
3900 cannot be changed.
3901
3902 The current snapshot is <tt>null</tt> if the machine doesn't have
3903 snapshots at all; in this case the current machine state is just
3904 current settings of this machine plus its current execution state.
3905
3906 <h3>Current machine state</h3>
3907
3908 The current machine state is what represened by IMachine instances
3909 got directly from IVirtualBox using <link
3910 to="IVirtualBox::getMachine()">getMachine()</link>, <link
3911 to="IVirtualBox::findMachine()">findMachine()</link>, etc. (as
3912 opposed to instances returned by <link to="ISnapshot::machine"/>).
3913 This state is always used when the machine is <link
3914 to="IConsole::powerUp"> powered on</link>.
3915
3916 The current machine state also includes the current execution state.
3917 If the machine is being currently executed
3918 (<link to="IMachine::state"/> is <link to="MachineState::Running"/>
3919 and above), its execution state is just what's happening now.
3920 If it is powered off (<link to="MachineState::PoweredOff"/> or
3921 <link to="MachineState::Aborted"/>), it has a zero execution state.
3922 If the machine is saved (<link to="MachineState::Saved"/>), its
3923 execution state is what saved in the execution state file
3924 (<link to="IMachine::stateFilePath"/>).
3925
3926 If the machine is in the saved state, then, next time it is powered
3927 on, its execution state will be fully restored from the saved state
3928 file and the execution will continue from the point where the state
3929 was saved.
3930
3931 Similarly to snapshots, the current machine state can be discarded
3932 using <link to="IConsole::discardCurrentState()"/>.
3933
3934 <h3>Taking and discarding snapshots</h3>
3935
3936 The table below briefly explains the meaning of every snapshot
3937 operation:
3938
3939 <table>
3940 <tr><th>Operation</th><th>Meaning</th><th>Remarks</th></tr>
3941
3942 <tr><td><link to="IConsole::takeSnapshot()"/></td>
3943
3944 <td>Save the current state of the virtual machine, including all
3945 settings, contents of normal hard disks and the current modifications
3946 to immutable hard disks (for online snapshots)</td>
3947
3948 <td>The current state is not changed (the machine will continue
3949 execution if it is being executed when the snapshot is
3950 taken)</td></tr>
3951
3952 <tr><td><link to="IConsole::discardSnapshot()"/></td>
3953
3954 <td>Forget the state of the virtual machine stored in the snapshot:
3955 dismiss all saved settings and delete the saved execution state (for
3956 online snapshots)</td>
3957
3958 <td>Other snapshots (including child snapshots, if any) and the
3959 current state are not directly affected</td></tr>
3960
3961 <tr><td><link to="IConsole::discardCurrentState()"/></td>
3962
3963 <td>Restore the current state of the virtual machine from the state
3964 stored in the current snapshot, including all settings and hard disk
3965 contents</td>
3966
3967 <td>The current state of the machine existed prior to this operation
3968 is lost</td></tr>
3969
3970 <tr><td><link to="IConsole::discardCurrentSnapshotAndState()"/></td>
3971
3972 <td>Completely revert the virtual machine to the state it was in
3973 before the current snapshot has been taken</td>
3974
3975 <td>The current state, as well as the current snapshot, are
3976 lost</td></tr>
3977
3978 </table>
3979
3980 </desc>
3981
3982 <attribute name="id" type="uuid" readonly="yes">
3983 <desc>UUID of the snapshot.</desc>
3984 </attribute>
3985
3986 <attribute name="name" type="wstring">
3987 <desc>Short name of the snapshot.</desc>
3988 </attribute>
3989
3990 <attribute name="description" type="wstring">
3991 <desc>Optional description of the snapshot.</desc>
3992 </attribute>
3993
3994 <attribute name="timeStamp" type="long long" readonly="yes">
3995 <desc>
3996 Time stamp of the snapshot, in milliseconds since 1970-01-01 UTC.
3997 </desc>
3998 </attribute>
3999
4000 <attribute name="online" type="boolean" readonly="yes">
4001 <desc>
4002 <tt>true</tt> if this snapshot is an online snapshot and
4003 <tt>false</tt> otherwise.
4004
4005 <note>
4006 When this attribute is <tt>true</tt>, the
4007 <link to="IMachine::stateFilePath"/> attribute of the
4008 <link to="#machine"/> object associated with this snapshot
4009 will point to the saved state file. Otherwise, it will be
4010 <tt>null</tt>.
4011 </note>
4012 </desc>
4013 </attribute>
4014
4015 <attribute name="machine" type="IMachine" readonly="yes">
4016 <desc>
4017 Virtual machine this snapshot is taken on. This object
4018 stores all settings the machine had when taking this snapshot.
4019 <note>
4020 The returned machine object is immutable, i.e. no
4021 any settings can be changed.
4022 </note>
4023 </desc>
4024 </attribute>
4025
4026 <attribute name="parent" type="ISnapshot" readonly="yes">
4027 <desc>
4028 Parent snapshot (a snapshot this one is based on).
4029 <note>
4030 It's not an error to read this attribute on a snapshot
4031 that doesn't have a parent -- a null object will be
4032 returned to indicate this.
4033 </note>
4034 </desc>
4035 </attribute>
4036
4037 <attribute name="children" type="ISnapshotCollection" readonly="yes">
4038 <desc>
4039 Child snapshots (all snapshots having this one as a parent).
4040 <note>
4041 In the current implementation, there can be only one
4042 child snapshot, or no children at all, meaning this is the
4043 last (head) snapshot.
4044 </note>
4045 </desc>
4046 </attribute>
4047
4048 </interface>
4049
4050 <!--
4051 // IHardDisk
4052 /////////////////////////////////////////////////////////////////////////
4053 -->
4054
4055 <enum
4056 name="HardDiskStorageType"
4057 uuid="e45e2303-38fd-4f75-a791-5cb321759f53"
4058 >
4059 <desc>
4060 Virtual hard disk storage type.
4061 <see>IHardDisk</see>
4062 </desc>
4063 <const name="VirtualDiskImage" value="0">
4064 <desc>
4065 Virtual Disk Image, VDI (a regular file in the file
4066 system of the host OS, see <link to="IVirtualDiskImage"/>)
4067 </desc>
4068 </const>
4069 <const name="ISCSIHardDisk" value="1">
4070 <desc>
4071 iSCSI Remote Disk (a disk accessed via the Internet
4072 SCSI protocol over a TCP/IP network, see
4073 <link to="IISCSIHardDisk"/>)
4074 </desc>
4075 </const>
4076 </enum>
4077
4078 <enum
4079 name="HardDiskType"
4080 uuid="a348fafd-a64e-4643-ba65-eb3896bd7e0a"
4081 >
4082 <desc>
4083 Virtual hard disk type.
4084 <see>IHardDisk</see>
4085 </desc>
4086 <const name="NormalHardDisk" value="0">
4087 <desc>
4088 Normal hard disk (attached directly or indirectly, preserved
4089 when taking snapshots).
4090 </desc>
4091 </const>
4092 <const name="ImmutableHardDisk" value="1">
4093 <desc>
4094 Immutable hard disk (attached indirectly, changes are wiped out
4095 after powering off the virtual machine).
4096 </desc>
4097 </const>
4098 <const name="WritethroughHardDisk" value="2">
4099 <desc>
4100 Write through hard disk (attached directly, ignored when
4101 taking snapshots).
4102 </desc>
4103 </const>
4104 </enum>
4105
4106 <interface
4107 name="IHardDiskAttachment" extends="$unknown"
4108 uuid="c0ffe596-21c6-4797-8d8a-b47b66881e7a"
4109 >
4110 <attribute name="hardDisk" type="IHardDisk" readonly="yes">
4111 <desc>Harddisk object this attachment is about.</desc>
4112 </attribute>
4113
4114 <attribute name="controller" type="DiskControllerType" readonly="yes">
4115 <desc>Disk controller ID of this attachment.</desc>
4116 </attribute>
4117
4118 <attribute name="deviceNumber" type="long" readonly="yes">
4119 <desc>Device number of the attachment.</desc>
4120 </attribute>
4121
4122 </interface>
4123
4124 <enumerator
4125 name="IHardDiskAttachmentEnumerator" type="IHardDiskAttachment"
4126 uuid="9955e486-2f0b-432a-99e4-0ebbd338875e"
4127 />
4128
4129 <collection
4130 name="IHardDiskAttachmentCollection" type="IHardDiskAttachment"
4131 enumerator="IHardDiskAttachmentEnumerator"
4132 uuid="8f727842-bb77-45d4-92de-4ec14bf613c9"
4133 readonly="yes"
4134 />
4135
4136 <enumerator
4137 name="IHardDiskEnumerator" type="IHardDisk"
4138 uuid="b976f97b-cdb8-47e3-9860-084031cbd533"
4139 />
4140
4141 <collection
4142 name="IHardDiskCollection" type="IHardDisk"
4143 enumerator="IHardDiskEnumerator"
4144 uuid="43EAC2BC-5C61-40fa-BC38-46DE2C7DB6BB"
4145 readonly="yes"
4146 />
4147
4148 <interface
4149 name="IHardDisk" extends="$unknown"
4150 uuid="FD443EC1-000F-4F5B-9282-D72760A66916"
4151 >
4152 <desc>
4153 The IHardDisk interface represents a virtual hard disk drive
4154 used by virtual machines.
4155
4156 The virtual hard disk drive virtualizes the hard disk hardware and
4157 looks like a regular hard disk inside the virtual machine and
4158 the guest OS.
4159
4160 <h3>Storage Types</h3>
4161
4162 The <link to="HardDiskStorageType">storage type</link> of the
4163 virtual hard disk determines where and how it stores its data
4164 (sectors). Currently, the following storage types are supported:
4165
4166 <ul>
4167
4168 <li><i>Virtual Disk Image (VDI)</i>, a regular file in the file
4169 system of the host OS (represented by the <link
4170 to="IVirtualDiskImage"/> interface). This file has a special
4171 format optimized so that unused sectors of data occupy much less
4172 space than on a physical hard disk.</li>
4173
4174 <li><i>iSCSI Remote Disk</i>, a disk accessed via the Internet
4175 SCSI protocol over a TCP/IP network link (represented by the
4176 <link to="IISCSIHardDisk"/> interface).</li>
4177
4178 </ul>
4179
4180 The storage type of the particular hard disk object is indicated by
4181 the <link to="#storageType"/> property.
4182
4183 Each storage type is represented by its own interface (as shown
4184 above), that allows to query and set properties and perform
4185 operations specific to that storage type. When an IHardDisk object
4186 reports it uses some particular storage type, it also guaranteed to
4187 support the corresponding interface which you can query. And vice
4188 versa, every object that supports a storage-specific interface, also
4189 supports IHardDisk.
4190
4191 <h3>Virtual Hard Disk Types</h3>
4192
4193 The <link to="HardDiskType">type</link> of the virtual hard disk
4194 determines how it is attached to the virtual machine when you call
4195 <link to="IMachine::attachHardDisk()"/> and what happens to it when
4196 a <link to="ISnapshot">snapshot</link> of the virtual machine is
4197 taken.
4198
4199 There are three types of virtual hard disks:
4200
4201 <ul>
4202 <li><i>Normal</i></li>
4203 <li><i>Immutable</i></li>
4204 <li><i>Writethrough</i></li>
4205 </ul>
4206
4207 The virtual disk type is indicated by the <link to="#type"/>
4208 property. Each of the above types is described in detail further
4209 down.
4210
4211 There is also a forth, "hidden" virtual disk type:
4212 <i>Differencing</i>. It is "hidden" because you cannot directly
4213 create hard disks of this type -- they are automatically created by
4214 VirtualBox when necessary.
4215
4216 <b>Differencing Hard Disks</b>
4217
4218 Unlike disks of other types (that are similar to real hard disks),
4219 the differencing hard disk does not store the full range of data
4220 sectors. Instead, it stores only a subset of sectors of some other
4221 disk that were changed since the differencing hard disk has been
4222 created. Thus, every differencing hard disk has a parent hard disk
4223 it is linked to, and represents the difference between the initial
4224 and the current hard disk state. A differencing hard disk can be
4225 linked to another differencing hard disk -- this way, differencing
4226 hard disks can form a branch of changes. More over, a given virtual
4227 hard disk can have more than one differencing hard disk linked to
4228 it.
4229
4230 A disk the differencing hard disk is linked to (or, in other
4231 words, based on) is called a <i>parent</i> hard disk and is
4232 accessible through the <link to="#parent"/> property. Similarly, all
4233 existing differencing hard disks for a given parent hard disk are
4234 called its <i>child</i> hard disks (and accessible through the <link
4235 to="#children"/> property).
4236
4237 All differencing hard disks use Virtual Disk Image files to store
4238 changed sectors. They have the <link to="#type"/> property set to
4239 Normal, but can be easily distinguished from normal hard disks using
4240 the <link to="#parent"/> property: all differencing hard disks have
4241 a parent, while all normal hard disks don't.
4242
4243 When the virtual machine makes an attempt to read a sector that is
4244 missing in a differencing hard disk, its parent is accessed to
4245 resolve the sector in question. This process continues until the
4246 sector is found, or until the root hard disk is encountered, which
4247 always contains all sectors. As a consequence,
4248
4249 <ul>
4250
4251 <li>The virtual hard disk geometry seen by the guest OS is
4252 always defined by the root hard disk.</li>
4253
4254 <li>All hard disks on a branch, up to the root, must be <link
4255 to="#accessible"/> for a given differencing hard disk in order
4256 to let it function properly when the virtual machine is
4257 running.</li>
4258
4259 </ul>
4260
4261 Differencing hard disks can be implicitly created by VirtualBox in
4262 the following cases:
4263
4264 <ul>
4265
4266 <li>When a hard disk is <i>indirectly</i> attached to the
4267 virtual machine using <link to="IMachine::attachHardDisk()"/>.
4268 In this case, all disk writes performed by the guest OS will go
4269 to the created diffferencing hard disk, as opposed to the
4270 <i>direct</i> attachment, where all changes are written to the
4271 attached hard disk itself.</li>
4272
4273 <li>When a <link to="ISnapshot">snapshot</link> of the virtual
4274 machine is taken. After that, disk writes to hard disks the
4275 differencing ones have been created for, will be directed to
4276 those differencing hard disks, to preserve the contents of the
4277 original disks.</li>
4278
4279 </ul>
4280
4281 Whether to create a differencing hard disk or not depends on the
4282 type of the hard disk attached to the virtual machine. This is
4283 explained below.
4284
4285 <b>Normal Hard Disks</b>
4286
4287 Normal hard disks are the most commonly used virtual hard disk. A
4288 normal hard disk is attached to the machine directly if it is not
4289 already attached to some other machine. Otherwise, an attempt to
4290 make an indirect attachment through a differencing hard disk will be
4291 made. This attempt will fail if the hard disk is attached to a
4292 virtual machine without snapshots (because it's impossible to create
4293 a differencing hard disk based on a hard disk that is subject to
4294 change).
4295
4296 When an indirect attachment takes place, in the simplest case, where
4297 the machine the hard disk is being attached to doesn't have
4298 snapshots, the differencing hard disk will be based on the normal
4299 hard disk being attached. Otherwise, the first (i.e. the most
4300 recent) descendant of the given normal hard disk found in the
4301 current snapshot branch (starting from the current snapshot and
4302 going up to the root) will be actually used as a base.
4303
4304 Note that when you detach an indirectly attached hard disk from the
4305 machine, the created differencing hard disk image is simply
4306 <b>deleted</b>, so <b>all changes are lost</b>. If you attach the
4307 same disk again, a clean differencing disk will be created based on
4308 the most recent child, as described above.
4309
4310 When taking a snapshot, the contents of all normal hard disks (and
4311 all differencing disks whose roots are normal hard disks) currently
4312 attached to the virtual machine is preserved by creating
4313 differencing hard disks based on them.
4314
4315 <b>Immutable Hard Disks</b>
4316
4317 Immutable hard disks can be used to provide a sort of read-only
4318 access. An immutable hard disk is always attached indirectly. The
4319 created differencing hard disk is automatically wiped out (recreated
4320 from scratch) every time you power off the virtual machine. Thus,
4321 the contents of the immutable disk remains unchanged between runs.
4322
4323 Detaching an immutable hard disk deletes the differencing disk
4324 created for it, with the same effect as in case with normal hard
4325 disks.
4326
4327 When taking a snapshot, the differencing part of the immutable
4328 hard disk is cloned (i.e. copied to a separate Virtual Disk Image
4329 file) without any changes. This is necessary to preserve the exact
4330 virtual machine state when you create an online snapshot.
4331
4332 <b>Writethrough Hard Disks</b>
4333
4334 Hard disks of this type are always attached directly. This means
4335 that every given writethrough hard disk can be attached only to one
4336 virtual machine at a time.
4337
4338 It is impossible to take a snapshot of a virtual machine with the
4339 writethrough hard disk attached, because taking a snapshot implies
4340 saving the execution state and preserving the contents of all hard
4341 disks, but writethrough hard disks cannot be preserved. Preserving
4342 hard disk contents is necessary to ensure the guest OS stored in the
4343 snapshot will get the same hard disk state when restored, which is
4344 especially important when it has open file handles or when there are
4345 cached files and directories stored in memory.
4346
4347 <h3>Creating, Opening and Registering Hard Disks</h3>
4348
4349 Non-differencing hard disks are either created from scratch using
4350 <link to="IVirtualBox::createHardDisk()"/> or opened from a VDI file
4351 using <link to="IVirtualBox::openVirtualDiskImage()"/> (only for
4352 hard disks using the VirtualDiskImage storage type). Once a hard
4353 disk is created or opened, it needs to be registered using <link
4354 to="IVirtualBox::registerHardDisk()"/> to make it available for
4355 attaching to virtual machines. See the documentation of individual
4356 interfaces for various storage types to get more information.
4357
4358 Differencing hard disks are never created explicitly and cannot
4359 be registered or unregistered; they are automatically registered
4360 upon creation and deregistered when deleted.
4361
4362 <h3>More about Indirect Hard Disk Attachments</h3>
4363
4364 Normally, when you attach a hard disk to the virtual machine, and
4365 then query the corresponding attachment using <link
4366 to="IMachine::getHardDisk()"/> or <link
4367 to="IMachine::hardDiskAttachments"/> you will get the same hard disk
4368 object, whose UUID you passed earlier to <link
4369 to="IMachine::attachHardDisk()"/>. However, when an indirect
4370 attachment takes place, calling <link to="IMachine::getHardDisk()"/>
4371 will return a differencing hard disk object, that is either based on
4372 the attached hard disk or on another differencing hard disk, the
4373 attached hard disk is eventually a root for (as described above). In
4374 both cases the returned hard disk object is the object the virtual
4375 machine actually uses to perform disk writes to.
4376
4377 Regardless of whether the attachment is direct or indirect, the
4378 <link to="#machineId"/> property of the attached disk will contain an
4379 UUID of the machine object <link to="IMachine::attachHardDisk()"/>
4380 has been called on.
4381
4382 Note that both <link to="IMachine::attachHardDisk()"/> and <link
4383 to="IMachine::detachHardDisk()"/> are <i>lazy</i> operations. In
4384 particular, this means that when an indirect attachment is made,
4385 differencing hard disks are not created until machine settings are
4386 committed using <link to="IMachine::saveSettings()"/>. Similarly,
4387 when a differencing hard disk is detached, it is not deleted until
4388 <link to="IMachine::saveSettings()"/> is called. Calling <link
4389 to="IMachine::discardSettings()"/> cancels all lazy attachments or
4390 detachments made since the last commit and effectively restores the
4391 previous set of hard disks.
4392
4393 <h3>Hard Disk Accessibility</h3>
4394
4395 The <link to="#accessible"/> attribute of the hard disk object
4396 defines the accessibility state of the respective hard disk storage
4397 (for example, the VDI file for IVirtualDiskImage objects). If the
4398 value of this attribute is <tt>false</tt> then some hard disk
4399 attributes may contain invalid or outdated values (for example, the
4400 virtual or the actual hard disk size) until a new accessibility
4401 check is done that returns <tt>true</tt> (see the attribute
4402 description for more details).
4403
4404 <note>
4405 Because of the possible slowness of the accessibility check,
4406 it is not implicitly performed upon the VirtualBox server startup
4407 (to prevent the application freeze). In partcular, this means that
4408 if you try to read hard disk properties that depend on the
4409 accessibility state without first reading the value of the
4410 <link to="#accessible"/> attribute and ensuring it's value is
4411 <tt>true</tt>, you will get wrong (zero) values.
4412 </note>
4413
4414 </desc>
4415
4416 <attribute name="id" type="uuid" readonly="yes">
4417 <desc>
4418
4419 UUID of the hard disk. For newly created hard disk objects,
4420 this value is a randomly generated UUID.
4421
4422 </desc>
4423 </attribute>
4424
4425 <attribute name="description" type="wstring">
4426 <desc>
4427
4428 Optional description of the hard disk. For a newly created hard
4429 disk, this value is <tt>null</tt>.
4430
4431 <note>For some storage types, reading this property is
4432 meaningless when <link to="#accessible"/> is <tt>false</tt>.
4433 Also, you cannot assign it a new value in this case.</note>
4434
4435 </desc>
4436 </attribute>
4437
4438 <attribute name="storageType" type="HardDiskStorageType" readonly="yes">
4439 <desc>
4440
4441 Storage type of this hard disk.
4442
4443 Storage type is defined when you open or create a new hard disk
4444 object.
4445
4446 </desc>
4447 </attribute>
4448
4449 <attribute name="location" type="wstring" readonly="yes">
4450 <desc>
4451
4452 Storage location of this hard disk. The returned string serves
4453 for informational purposes only. To access detailed information
4454 about the storage, query the appropriate storage-specific
4455 interface.
4456
4457 </desc>
4458 </attribute>
4459
4460 <attribute name="type" type="HardDiskType">
4461 <desc>
4462
4463 Type (behavior) of this hard disk. For a newly created or opened
4464 hard disk, this value is <link
4465 to="HardDiskType::NormalHardDisk"/>.
4466
4467 <note>In the current implementation, this property can be
4468 changed only on an unregistered hard disk object. This may be
4469 changed later.</note>
4470
4471 </desc>
4472 </attribute>
4473
4474 <attribute name="parent" type="IHardDisk" readonly="yes">
4475 <desc>
4476
4477 Parent of this hard disk (a hard disk this one is directly based
4478 on).
4479
4480 Only differencing hard disks have parents, so a <tt>null</tt>
4481 object is returned for a hard disk of any other type.
4482 </desc>
4483 </attribute>
4484
4485 <attribute name="children" type="IHardDiskCollection" readonly="yes">
4486 <desc>
4487
4488 Children of this hard disk (all differencing hard disks for
4489 those this one is a parent). An empty collection is returned, if
4490 this hard disk doesn't have any children.
4491
4492 </desc>
4493 </attribute>
4494
4495 <attribute name="root" type="IHardDisk" readonly="yes">
4496 <desc>
4497
4498 Root hard disk of this hard disk. If this hard disk is a
4499 differencing hard disk, its root hard disk is the first disk on
4500 the branch. For all other types of hard disks, this property
4501 returns the hard disk object itself (i.e. the same object you
4502 read this property on).
4503
4504 </desc>
4505 </attribute>
4506
4507 <attribute name="accessible" type="boolean" readonly="yes">
4508 <desc>
4509
4510 Whether the hard disk storage is currently accessible or not.
4511 The storage, for example, can be unaccessible if it doesn't exist
4512 or if it is placed on a network resource that is not available
4513 by the time this attribute is read.
4514
4515 In the current implementation, the value of this property is
4516 also <tt>false</tt> if this hard disk is attached to a running
4517 virtual machine.
4518
4519 The accessibility check is performed automatically every time
4520 this attribute is read. You should keep it in mind that this check
4521 may be slow and can block the calling thread for a long time (for
4522 example, if the network resourse where the hard disk storage is
4523 located is down).
4524
4525 The following attributes of the hard disk object are considered
4526 to be invalid when this attribute is <tt>false</tt>:
4527 <ul>
4528 <li><link to="#size"/></li>
4529 <li><link to="#actualSize"/></li>
4530 </ul>
4531 Individual hard disk storage type interfaces may define
4532 additional attributes that depend on the accessibility state.
4533 </desc>
4534 </attribute>
4535
4536 <attribute name="allAccessible" type="boolean" readonly="yes">
4537 <desc>
4538
4539 Whether the whole hard disk branch, starting from this image and
4540 going through its ancestors up to the root, is accessible or
4541 not.
4542
4543 This property makes sense only for differencing hard disks. For
4544 all other types of hard disks it returns the same value as
4545 <link to="#accessible"/>.
4546
4547 </desc>
4548 </attribute>
4549
4550 <attribute name="lastAccessError" type="wstring" readonly="yes">
4551 <desc>
4552
4553 String describing the reason of inaccessibility of this hard
4554 disk after the last call to <link to="#accessible"/> that
4555 returned <tt>false</tt>. A <tt>null</tt> value of this property
4556 means that the last accessibility check returned <tt>true</tt>.
4557
4558 </desc>
4559 </attribute>
4560
4561 <attribute name="size" type="unsigned long long" readonly="yes">
4562 <desc>
4563
4564 Logical size of this hard disk (in megabytes), as reported to the
4565 guest OS running inside the vurtual machine this disk is
4566 attached to. The logical size is defined when the hard disk is
4567 created.
4568
4569 <note>Reading this property on a differencing hard disk will
4570 return the size of its root hard disk.</note>
4571
4572 <note>Reading this property is meaningless when
4573 <link to="#accessible"/> is <tt>false</tt></note>
4574
4575 </desc>
4576 </attribute>
4577
4578 <attribute name="actualSize" type="unsigned long long" readonly="yes">
4579 <desc>
4580
4581 Physical size of the storage used to store hard disk data (in
4582 bytes). This size is usually less than the logical size of the
4583 hard disk, depending on the storage type and on the size
4584 optimization method used for that storage.
4585
4586 <note>Reading this property is meaningless when
4587 <link to="#accessible"/> is <tt>false</tt></note>
4588
4589 </desc>
4590 </attribute>
4591
4592 <attribute name="machineId" type="uuid" readonly="yes">
4593 <desc>
4594
4595 UUID of the machine this hard disk is attached to (or a
4596 <tt>null</tt> UUID if it is not attached).
4597
4598 <note>Immutable hard disks are never attached directly, so this
4599 attribute is always <tt>null</tt> in this case.</note>
4600
4601 </desc>
4602 </attribute>
4603
4604 <attribute name="snapshotId" type="uuid" readonly="yes">
4605 <desc>
4606
4607 UUID of the <link to="ISnapshot">snapshot</link> this hard disk
4608 is associated with (or <tt>null</tt> UUID if it is not
4609 associated with any snapshot).
4610
4611 <note>This attribute is always <tt>null</tt> if <link
4612 to="#machineId"/> is <tt>null</tt>.</note>
4613
4614 <note>Writethrough hard disks are always attached directly and
4615 cannot be involved when taking snapshots, so this attribute is
4616 meaningless and therefore always <tt>null</tt>.</note>
4617
4618 </desc>
4619 </attribute>
4620
4621 <method name="cloneToImage">
4622
4623 <desc>
4624
4625 Starts creating a clone of this hard disk. The cloned hard disk
4626 will use the specified Virtual Disk Image file as a storage and
4627 will contain exactly the same sector data as the hard disk being
4628 cloned, except that a new UUID for the clone will be randomly
4629 generated.
4630
4631 The specified image file path can be absolute (full path) or
4632 relative to the <link to="IVirtualBox::homeFolder"> VirtualBox
4633 home directory</link>. If only a file name without any path is
4634 given, the <link to="ISystemProperties::defaultVDIFolder">
4635 default VDI folder</link> will be used as a path to the image
4636 file.
4637
4638 It is an error to use the object returned in the @a image
4639 parameter until the returned @a progress object reports success.
4640
4641 <note>In the current implementation, only non-differencing hard
4642 disks can be cloned.</note>
4643
4644 </desc>
4645
4646 <param name="filePath" type="wstring" dir="in">
4647 <desc>Path to a file where to store the cloned hard disk.</desc>
4648 </param>
4649 <param name="image" type="IVirtualDiskImage" dir="out">
4650 <desc>Cloned hard disk object.</desc>
4651 </param>
4652 <param name="progress" type="IProgress" dir="return">
4653 <desc>Progress object to track the operation completion.</desc>
4654 </param>
4655
4656 </method>
4657
4658 </interface>
4659
4660 <!--
4661 // IVirtualDiskImage
4662 /////////////////////////////////////////////////////////////////////////
4663 -->
4664
4665 <interface
4666 name="IVirtualDiskImage" extends="$unknown"
4667 uuid="a8265b5a-0d20-4a46-a02f-65693a4e8239"
4668 >
4669
4670 <desc>
4671
4672 The IVirtualDiskImage interface represents <link
4673 to="IHardDisk">virtual hard disks</link> that use virtual disk image
4674 files to store hard disk data.
4675
4676 Hard disks using virtual disk images can be either opened using
4677 <link to="IVirtualBox::openVirtualDiskImage()"/> or created from
4678 scratch using <link to="IVirtualBox::createHardDisk()"/>.
4679
4680 Objects that support this interface also support the <link
4681 to="IHardDisk"/> interface.
4682
4683 When a new hard disk object is created from scatch, an image file
4684 for it is not automatically created. To do it, you need to specify a
4685 valid <link to="#filePath">file path</link>, and call <link
4686 to="#createFixedImage()"/> or <link to="#createDynamicImage()"/>.
4687 When it is done, the hard disk object can be registered by calling
4688 <link to="IVirtualBox::registerHardDisk()"/> and then
4689 <link to="IMachine::attachHardDisk()">attached</link> to
4690 virtual machines.
4691
4692 The <link to="IHardDisk::description">description</link> of the
4693 Virtual Disk Image is stored in the image file. For this reason,
4694 changing the value of this property requires the hard disk to be
4695 <link to="IHardDisk::accessible">accessible</link>. The description
4696 of a registered hard disk can be changed only if a virtual machine
4697 using it is not running.
4698
4699 </desc>
4700
4701 <attribute name="filePath" type="wstring">
4702 <desc>
4703
4704 Full file name of the virtual disk image of this hard disk. For
4705 newly created hard disk objects, this value is <tt>null</tt>.
4706
4707 When assigning a new path, it can be absolute (full path) or
4708 relative to the <link to="IVirtualBox::homeFolder"> VirtualBox
4709 home directory</link>. If only a file name without any path is
4710 given, the <link to="ISystemProperties::defaultVDIFolder">
4711 default VDI folder</link> will be used as a path to the image
4712 file.
4713
4714 When reading this propery, a full path is always returned.
4715
4716 <note>This property cannot be changed when <link to="#created"/>
4717 returns <tt>true</tt>. In this case, the specified file name can
4718 be absolute (full path) or relative to the <link
4719 to="IVirtualBox::homeFolder"> VirtualBox home directory</link>.
4720 If only a file name without any path is given, the <link
4721 to="ISystemProperties::defaultVDIFolder"> default VDI
4722 folder</link> will be used as a path to the image file.</note>
4723
4724 </desc>
4725 </attribute>
4726
4727 <attribute name="created" type="boolean" readonly="yes">
4728 <desc>
4729
4730 Whether the virual disk image is created or not. For newly
4731 created hard disk objects or after a successful invocation of
4732 <link to="#deleteImage()"/>, this value is <tt>false</tt> until
4733 <link to="#createFixedImage()"/> or <link
4734 to="#createDynamicImage()"/> is called.
4735
4736 </desc>
4737 </attribute>
4738
4739 <method name="createDynamicImage">
4740
4741 <desc>
4742
4743 Starts creating a dymically expanding hard disk image in the
4744 background. The previous image associated with this object, if
4745 any, must be deleted using <link to="#deleteImage"/>, otherwise
4746 the operation will fail.
4747
4748 <note>After the returned progress object reports that the
4749 operation is complete, this hard disk object can be
4750 <link to="IVirtualBox::registerHardDisk()">registered</link>
4751 within this VirtualBox installation.</note>
4752
4753 </desc>
4754
4755 <param name="size" type="unsigned long long" dir="in">
4756 <desc>Maximum logical size of the hard disk in megabytes.</desc>
4757 </param>
4758 <param name="progress" type="IProgress" dir="return">
4759 <desc>Progress object to track the operation completion.</desc>
4760 </param>
4761
4762 </method>
4763
4764 <method name="createFixedImage">
4765 <desc>
4766
4767 Starts creating a fixed-size hard disk image in the background.
4768 The previous image, if any, must be deleted using <link
4769 to="#deleteImage"/>, otherwise the operation will fail.
4770
4771 <note>After the returned progress object reports that the
4772 operation is complete, this hard disk object can be
4773 <link to="IVirtualBox::registerHardDisk()">registered</link>
4774 within this VirtualBox installation.</note>
4775
4776 </desc>
4777
4778 <param name="size" type="unsigned long long" dir="in">
4779 <desc>Logical size of the hard disk in megabytes.</desc>
4780 </param>
4781 <param name="progress" type="IProgress" dir="return">
4782 <desc>Progress object to track the operation completion.</desc>
4783 </param>
4784
4785 </method>
4786
4787 <method name="deleteImage">
4788 <desc>
4789
4790 Deletes the existing hard disk image. The hard disk must not be
4791 registered within this VirtualBox installation, otherwise the
4792 operation will fail.
4793
4794 <note>After this operation succeeds, it will be impossible to
4795 register the hard disk until the image file is created
4796 again.</note>
4797
4798 <note>This operation is valid only for non-differencing hard
4799 disks, after they are unregistered using <link
4800 to="IVirtualBox::unregisterHardDisk()"/>.</note>
4801
4802 </desc>
4803 </method>
4804
4805 </interface>
4806
4807 <!--
4808 // IISCSIHardDisk
4809 /////////////////////////////////////////////////////////////////////////
4810 -->
4811
4812 <interface
4813 name="IISCSIHardDisk" extends="$unknown"
4814 uuid="003f6ca9-3257-4ef9-99c9-c66ce44576cb"
4815 >
4816
4817 <desc>
4818
4819 The IISCSIHardDisk interface represents <link to="IHardDisk">virtual
4820 hard disks</link> that use the Internet SCSI (iSCSI) protocol to
4821 store hard disk data on remote machines.
4822
4823 iSCSI hard disks can be created using <link
4824 to="IVirtualBox::createHardDisk()"/>. When a new hard disk object is
4825 created, all its properties are uninitialized. After you assign some
4826 meaningful values to them, the hard disk object can be registered by
4827 calling <link to="IVirtualBox::registerHardDisk()"/> and then <link
4828 to="IMachine::attachHardDisk()">attached</link> to virtual machines.
4829
4830 Objects that support this interface also support the <link
4831 to="IHardDisk"/> interface.
4832
4833 The <link to="IHardDisk::description">description</link> the iSCSI
4834 hard disk is stored in the VirtualBox configuration file, so it can
4835 be changed (at appropriate times) even when <link
4836 to="IHardDisk::accessible">accessible</link> returns <tt>false</tt>.
4837 However, the hard disk may not be attached to a running virtual
4838 machine.
4839
4840 <note>In the current imlementation, the type of all iSCSI hard disks
4841 is <link to="HardDiskType::WritethroughHardDisk">Writethrough</link>
4842 and cannot be changed.</note>
4843
4844 </desc>
4845
4846 <attribute name="server" type="wstring">
4847 <desc>
4848
4849 iSCSI Server name (either a host name or an IP address). For
4850 newly created hard disk objects, this value is <tt>null</tt>.
4851
4852 </desc>
4853 </attribute>
4854
4855 <attribute name="port" type="unsigned short">
4856 <desc>
4857
4858 iSCSI Server port. For newly created hard disk objects, this
4859 value is <tt>0</tt>, which means the default port.
4860
4861 </desc>
4862 </attribute>
4863
4864 <attribute name="target" type="wstring">
4865 <desc>
4866
4867 iSCSI target name. For newly created hard disk objects, this
4868 value is <tt>null</tt>.
4869
4870 </desc>
4871 </attribute>
4872
4873 <attribute name="lun" type="unsigned long long">
4874 <desc>
4875
4876 Logical unit number for this iSCSI disk. For newly created hard
4877 disk objects, this value is <tt>0</tt>.
4878
4879 </desc>
4880 </attribute>
4881
4882 <attribute name="userName" type="wstring">
4883 <desc>
4884
4885 User name for accessing this iSCSI disk. For newly created hard
4886 disk objects, this value is <tt>null</tt>.
4887
4888 </desc>
4889 </attribute>
4890
4891 <attribute name="password" type="wstring">
4892 <desc>
4893
4894 User password for accessing this iSCSI disk. For newly created
4895 hard disk objects, this value is <tt>null</tt>.
4896
4897 </desc>
4898 </attribute>
4899
4900 </interface>
4901
4902 <!--
4903 // IDVDImage
4904 /////////////////////////////////////////////////////////////////////////
4905 -->
4906
4907 <enumerator
4908 name="IDVDImageEnumerator" type="IDVDImage"
4909 uuid="9BE77C8D-E1BE-4bf2-A67B-B4DD3D2B0F28"
4910 />
4911
4912 <collection
4913 name="IDVDImageCollection" type="IDVDImage"
4914 enumerator="IDVDImageEnumerator"
4915 uuid="AE7053FA-ADD2-4ea4-AFCF-24D5F8DDED64"
4916 readonly="yes"
4917 >
4918 <method name="findByPath">
4919 <desc>
4920 Searches this collection for a DVD image with the given disk path.
4921 <note>
4922 The method returns an error if the given name does not
4923 correspond to any DVD image in the collection.
4924 </note>
4925 </desc>
4926 <param name="path" type="wstring" dir="in">
4927 <desc>Name of the DVD image's file system location.</desc>
4928 </param>
4929 <param name="image" type="IDVDImage" dir="return">
4930 <desc>Found DVD image object</desc>
4931 </param>
4932 </method>
4933 </collection>
4934
4935 <interface
4936 name="IDVDImage" extends="$unknown"
4937 uuid="140FFF03-E479-4194-8562-ABC4F8171009"
4938 >
4939 <desc>
4940
4941 The IDVDImage interface represents a file containing the image
4942 of the DVD or CD disk.
4943
4944 <h3>Image Accessibility</h3>
4945
4946 The <link to="#accessible"/> attribute of the image object
4947 defines the accessibility state of the image file. If the
4948 value of this attribute is <tt>false</tt> then some image
4949 attributes may contain invalid or outdated values (for example, the
4950 the image file size) until a new accessibility
4951 check is done that returns <tt>true</tt>.
4952
4953 <note>
4954 Because of the possible slowness of the accessibility check,
4955 it is not implicitly performed upon the VirtualBox server startup
4956 (to prevent the application freeze). In partcular, this means that
4957 if you try to read image properties that depend on the
4958 accessibility state without first reading the value of the
4959 <link to="#accessible"/> attribute and ensuring it's value is
4960 <tt>true</tt>, you will get wrong (zero) values.
4961 </note>
4962
4963 </desc>
4964 <attribute name="id" type="uuid" readonly="yes">
4965 <desc>UUID of the CD/DVD image.</desc>
4966 </attribute>
4967
4968 <attribute name="filePath" type="wstring" readonly="yes">
4969 <desc>Full file name of the CD/DVD image.</desc>
4970 </attribute>
4971
4972 <attribute name="accessible" type="boolean" readonly="yes">
4973 <desc>
4974
4975 Whether the CD/DVD image is currently accessible or not.
4976 The image, for example, can be unaccessible if it is placed
4977 on a network share that is not available by the time
4978 this property is read.
4979
4980 The accessibility check is performed automatically every time
4981 this attribute is read. You should keep it in mind that this check
4982 may be slow and can block the calling thread for a long time (for
4983 example, if the network share where the image is located is down).
4984
4985 The following attributes of the image object are considered
4986 to be invalid when this attribute is <tt>false</tt>:
4987 <ul>
4988 <li><link to="#size"/></li>
4989 </ul>
4990
4991 </desc>
4992 </attribute>
4993
4994 <attribute name="size" type="unsigned long long" readonly="yes">
4995 <desc>Size of the ISO image in bytes.</desc>
4996 </attribute>
4997
4998 </interface>
4999
5000
5001 <!--
5002 // IDVDDrive
5003 /////////////////////////////////////////////////////////////////////////
5004 -->
5005
5006 <enum
5007 name="DriveState"
5008 uuid="cb7233b7-c519-42a5-8310-1830953cacbc"
5009 >
5010 <const name="InvalidDriveState" value="0"/>
5011 <const name="NotMounted" value="1"/>
5012 <const name="ImageMounted" value="2"/>
5013 <const name="HostDriveCaptured" value="3"/>
5014 </enum>
5015
5016 <interface
5017 name="IDVDDrive" extends="$unknown"
5018 uuid="d9bd101a-8079-4fb9-bad1-31bf32482b75"
5019 >
5020 <attribute name="state" type="DriveState" readonly="yes">
5021 <desc>Current drive state.</desc>
5022 </attribute>
5023
5024 <attribute name="passthrough" type="boolean">
5025 <desc>
5026 When a host drive is mounted and passthrough is enabled
5027 the guest will be able to directly send SCSI commands to
5028 the host drive. This enables the guest to use CD/DVD writers
5029 but is potentially dangerous.
5030 </desc>
5031 </attribute>
5032
5033 <method name="mountImage">
5034 <desc>Mounts the specified image.</desc>
5035 <param name="imageId" type="uuid" dir="in"/>
5036 </method>
5037
5038 <method name="captureHostDrive">
5039 <desc>Captures the specified host drive.</desc>
5040 <param name="drive" type="IHostDVDDrive" dir="in"/>
5041 </method>
5042
5043 <method name="unmount">
5044 <desc>Unmounts the currently mounted image/device.</desc>
5045 </method>
5046
5047 <method name="getImage">
5048 <desc>Gets the currently mounted image ID.</desc>
5049 <param name="image" type="IDVDImage" dir="return"/>
5050 </method>
5051
5052 <method name="getHostDrive">
5053 <desc>Gets the currently mounted image ID.</desc>
5054 <param name="drive" type="IHostDVDDrive" dir="return"/>
5055 </method>
5056
5057 </interface>
5058
5059 <!--
5060 // IFloppyImage
5061 /////////////////////////////////////////////////////////////////////////
5062 -->
5063
5064 <enumerator
5065 name="IFloppyImageEnumerator" type="IFloppyImage"
5066 uuid="902C4089-76B7-41f1-91E8-49A261A28A2C"
5067 />
5068
5069 <collection
5070 name="IFloppyImageCollection" type="IFloppyImage"
5071 enumerator="IFloppyImageEnumerator"
5072 uuid="327A8928-8572-446e-AD9A-18FE30E81F3F"
5073 readonly="yes">
5074 <method name="findByPath">
5075 <desc>
5076 Searches this collection for a floppy image with the given disk path.
5077 <note>
5078 The method returns an error if the given name does not
5079 correspond to any floppy image in the collection.
5080 </note>
5081 </desc>
5082 <param name="path" type="wstring" dir="in">
5083 <desc>Name of the floppy image's file system location.</desc>
5084 </param>
5085 <param name="image" type="IFloppyImage" dir="return">
5086 <desc>Found Floppy image object</desc>
5087 </param>
5088 </method>
5089 </collection>
5090
5091 <interface
5092 name="IFloppyImage" extends="$unknown"
5093 uuid="CC696755-EA98-4ffe-9DC5-C003047034AB"
5094 >
5095 <desc>
5096
5097 The IFloppyImage interface represents a file containing the image
5098 of a floppy disk.
5099
5100 <h3>Image Accessibility</h3>
5101
5102 The <link to="#accessible"/> attribute of the image object
5103 defines the accessibility state of the image file. If the
5104 value of this attribute is <tt>false</tt> then some image
5105 attributes may contain invalid or outdated values (for example, the
5106 the image file size) until a new accessibility
5107 check is done that returns <tt>true</tt>.
5108
5109 <note>
5110 Because of the possible slowness of the accessibility check,
5111 it is not implicitly performed upon the VirtualBox server startup
5112 (to prevent the application freeze). In partcular, this means that
5113 if you try to read image properties that depend on the
5114 accessibility state without first reading the value of the
5115 <link to="#accessible"/> attribute and ensuring it's value is
5116 <tt>true</tt>, you will get wrong (zero) values.
5117 </note>
5118
5119 </desc>
5120 <attribute name="id" type="uuid" readonly="yes">
5121 <desc>UUID of the floppy image.</desc>
5122 </attribute>
5123
5124 <attribute name="filePath" type="wstring" readonly="yes">
5125 <desc>Full file name of the floppy image.</desc>
5126 </attribute>
5127
5128 <attribute name="accessible" type="boolean" readonly="yes">
5129 <desc>
5130
5131 Whether the floppy image is currently accessible or not.
5132 The image, for example, can be unaccessible if it is placed
5133 on a network share that is not available by the time
5134 this property is read.
5135
5136 The accessibility check is performed automatically every time
5137 this attribute is read. You should keep it in mind that this check
5138 may be slow and can block the calling thread for a long time (for
5139 example, if the network share where the image is located is down).
5140
5141 The following attributes of the image object are considered
5142 to be invalid when this attribute is <tt>false</tt>:
5143 <ul>
5144 <li><link to="#size"/></li>
5145 </ul>
5146
5147 </desc>
5148 </attribute>
5149
5150 <attribute name="size" type="unsigned long" readonly="yes">
5151 <desc>Size of the floppy image in bytes.</desc>
5152 </attribute>
5153
5154 </interface>
5155
5156
5157 <!--
5158 // IFloppyDrive
5159 /////////////////////////////////////////////////////////////////////////
5160 -->
5161
5162 <interface
5163 name="IFloppyDrive" extends="$unknown"
5164 uuid="E9318F71-78D2-4b00-863C-B7CB0030A2D9"
5165 >
5166 <attribute name="enabled" type="boolean">
5167 <desc>
5168 Flag whether the floppy drive is enabled. If it is disabled,
5169 the floppy drive will not be reported to the guest.
5170 </desc>
5171 </attribute>
5172
5173 <attribute name="state" type="DriveState" readonly="yes">
5174 <desc>Current drive state.</desc>
5175 </attribute>
5176
5177 <method name="mountImage">
5178 <desc>Mounts the specified image.</desc>
5179 <param name="imageId" type="uuid" dir="in"/>
5180 </method>
5181
5182 <method name="captureHostDrive">
5183 <desc>Captures the specified host drive.</desc>
5184 <param name="drive" type="IHostFloppyDrive" dir="in"/>
5185 </method>
5186
5187 <method name="unmount">
5188 <desc>Unmounts the currently mounted image/device.</desc>
5189 </method>
5190
5191 <method name="getImage">
5192 <desc>Gets the currently mounted image ID.</desc>
5193 <param name="image" type="IFloppyImage" dir="return"/>
5194 </method>
5195
5196 <method name="getHostDrive">
5197 <desc>Gets the currently mounted image ID.</desc>
5198 <param name="drive" type="IHostFloppyDrive" dir="return"/>
5199 </method>
5200
5201 </interface>
5202
5203
5204 <!--
5205 // IKeyboard
5206 /////////////////////////////////////////////////////////////////////////
5207 -->
5208
5209 <interface
5210 name="IKeyboard" extends="$unknown"
5211 uuid="FD443EC1-000A-4F5B-9282-D72760A66916"
5212 >
5213 <method name="putScancode">
5214 <desc>Sends a scancode to the keyboard.</desc>
5215 <param name="scancode" type="long" dir="in"/>
5216 </method>
5217
5218 <method name="putScancodes">
5219 <desc>Sends an array of scancode to the keyboard.</desc>
5220 <param name="scancodes" type="long" dir="in" array="count"/>
5221 <param name="count" type="unsigned long" dir="in"/>
5222 <param name="codesStored" type="unsigned long" dir="return"/>
5223 </method>
5224
5225 <method name="putCAD">
5226 <desc>Sends the Ctrl-Alt-Del sequence to the keyboard.</desc>
5227 </method>
5228
5229 </interface>
5230
5231
5232 <!--
5233 // IMouse
5234 /////////////////////////////////////////////////////////////////////////
5235 -->
5236
5237 <enum
5238 name="MouseButtonState"
5239 uuid="03131722-2EC5-4173-9794-0DACA46673EF"
5240 >
5241 <const name="LeftButton" value="0x01"/>
5242 <const name="RightButton" value="0x02"/>
5243 <const name="MiddleButton" value="0x04"/>
5244 <const name="WheelUp" value="0x08"/>
5245 <const name="WheelDown" value="0x10"/>
5246 <const name="MouseStateMask" value="0x1F"/>
5247 </enum>
5248
5249 <interface
5250 name="IMouse" extends="$unknown"
5251 uuid="FD443EC1-0006-4F5B-9282-D72760A66916"
5252 >
5253 <desc>
5254 The IMouse interface represents a virtual mouse device.
5255 </desc>
5256
5257 <attribute name="absoluteSupported" type="boolean" readonly="yes">
5258 <desc>
5259 Whether the guest OS supports absolute mouse pointer positioning
5260 or not.
5261 <note>
5262 VirtualBox Guest Tools need to be installed to the guest OS
5263 in order to enable absolute mouse positioning support.
5264 You can use the <link to="IConsoleCallback::onMouseCapabilityChange"/>
5265 callback to be instantly informed about changes of this attribute
5266 during virtual machine execution.
5267 </note>
5268 <see><link to="#putMouseEventAbsolute"/></see>
5269 </desc>
5270 </attribute>
5271
5272 <method name="putMouseEvent">
5273 <desc>
5274 Initiates a mouse event using relative pointer movements
5275 along x and y axis.
5276 </desc>
5277
5278 <param name="dx" type="long" dir="in">
5279 <desc>
5280 Amout of pixels the mouse should move to the right.
5281 Negative values move the mouse to the left.
5282 </desc>
5283 </param>
5284 <param name="dy" type="long" dir="in">
5285 <desc>
5286 Amout of pixels the mouse should move downwards.
5287 Negative values move the mouse upwards.
5288 </desc>
5289 </param>
5290 <param name="dz" type="long" dir="in">
5291 <desc>
5292 Amount of mouse wheel moves.
5293 Positive values describe clockwize wheel rotations,
5294 negative values describe counterclockwise rotations.
5295 </desc>
5296 </param>
5297 <param name="buttonState" type="long" dir="in">
5298 <desc>
5299 The current state of mouse buttons. Every bit represents
5300 a mouse button as follows:
5301 <table>
5302 <tr><td>Bit 0 (<tt>0x01</tt>)</td><td>left mouse button</td></tr>
5303 <tr><td>Bit 1 (<tt>0x02</tt>)</td><td>right mouse button</td></tr>
5304 <tr><td>Bit 2 (<tt>0x04</tt>)</td><td>middle mouse button</td></tr>
5305 </table>
5306 A value of <tt>1</tt> means the corresponding button is pressed.
5307 otherwise it is released.
5308 </desc>
5309 </param>
5310 </method>
5311
5312 <method name="putMouseEventAbsolute">
5313 <desc>
5314 Positions the mouse pointer using absolute x and y coordinates.
5315 These coordinates are expressed in pixels and
5316 start from <tt>[1,1]</tt> which corresponds to the top left
5317 corner of the virtual display.
5318
5319 <note>
5320 This method will have effect only if absolute mouse
5321 positioning is supported by the guest OS.
5322 </note>
5323
5324 <see><link to="#absoluteSupported"/></see>
5325 </desc>
5326
5327 <param name="x" type="long" dir="in">
5328 <desc>
5329 X coordinate of the pointer in pixels, starting from <tt>1</tt>.
5330 </desc>
5331 </param>
5332 <param name="y" type="long" dir="in">
5333 <desc>
5334 Y coordinate of the pointer in pixels, starting from <tt>1</tt>.
5335 </desc>
5336 </param>
5337 <param name="dz" type="long" dir="in">
5338 <desc>
5339 Amout of mouse wheel moves.
5340 Positive values describe clockwize wheel rotations,
5341 negative values describe counterclockwise rotations.
5342 </desc>
5343 </param>
5344 <param name="buttonState" type="long" dir="in">
5345 <desc>
5346 The current state of mouse buttons. Every bit represents
5347 a mouse button as follows:
5348 <table>
5349 <tr><td>Bit 0 (<tt>0x01</tt>)</td><td>left mouse button</td></tr>
5350 <tr><td>Bit 1 (<tt>0x02</tt>)</td><td>right mouse button</td></tr>
5351 <tr><td>Bit 2 (<tt>0x04</tt>)</td><td>middle mouse button</td></tr>
5352 </table>
5353 A value of <tt>1</tt> means the corresponding button is pressed.
5354 otherwise it is released.
5355 </desc>
5356 </param>
5357 </method>
5358
5359 </interface>
5360
5361
5362 <!--
5363 // IDisplay
5364 /////////////////////////////////////////////////////////////////////////
5365 -->
5366
5367 <enum
5368 name="FramebufferAccelerationOperation"
5369 uuid="f0e5ebbe-dc8e-4e2d-916e-53baa3844df8"
5370 >
5371 <const name="SolidFillAcceleration" value="1"/>
5372 <const name="ScreenCopyAcceleration" value="2"/>
5373 </enum>
5374
5375 <enum
5376 name="FramebufferPixelFormat"
5377 uuid="d15f9c8b-bd7e-4003-981c-4ca14f49f2c3"
5378 >
5379 <const name="PixelFormatDefault" value="0"/>
5380 <const name="PixelFormatRGB16" value="1"/>
5381 <const name="PixelFormatRGB24" value="2"/>
5382 <const name="PixelFormatRGB32" value="3"/>
5383 </enum>
5384
5385 <interface
5386 name="IFramebuffer" extends="$unknown"
5387 uuid="4481F27F-5C79-48d9-86C1-A2EC6747034D"
5388 >
5389 <attribute name="address" type="unsigned long" readonly="yes">
5390 <desc>Address of the start byte of the framebuffer.</desc>
5391 </attribute>
5392
5393 <attribute name="width" type="unsigned long" readonly="yes">
5394 <desc>Framebuffer width.</desc>
5395 </attribute>
5396
5397 <attribute name="height" type="unsigned long" readonly="yes">
5398 <desc>Framebuffer height.</desc>
5399 </attribute>
5400
5401 <attribute name="colorDepth" type="unsigned long" readonly="yes">
5402 <desc>Framebuffer color depth.</desc>
5403 </attribute>
5404
5405 <attribute name="lineSize" type="unsigned long" readonly="yes">
5406 <desc>framebuffer scan line size in bytes.</desc>
5407 </attribute>
5408
5409 <attribute name="pixelFormat" type="FramebufferPixelFormat" readonly="yes">
5410 <desc>Framebuffer pixel format.</desc>
5411 </attribute>
5412
5413 <attribute name="heightReduction" type="unsigned long" readonly="yes">
5414 <desc>
5415 Hint from the framebuffer about how much of the standard
5416 screen height it wants to use for itself. This information is
5417 exposed to the guest through the VESA BIOS and VMMDev interface
5418 so that it can use it for determining its video mode table. It
5419 is not guaranteed that the guest respects the value.
5420 </desc>
5421 </attribute>
5422
5423 <attribute name="overlay" type="IFramebufferOverlay" readonly="yes">
5424 <desc>
5425 An alpha-blended overlay which is superposed over the framebuffer.
5426 The initial purpose is to allow the display of icons providing
5427 information about the VM state, including disk activity, in front
5428 ends which do not have other means of doing that. The overlay is
5429 designed to controlled exclusively by IDisplay. It has no locking
5430 of its own, and any changes made to it are not guaranteed to be
5431 visible until the affected portion of IFramebuffer is updated. The
5432 overlay can be created lazily the first time it is requested. This
5433 attribute can also return NULL to signal that the overlay is not
5434 implemented.
5435 </desc>
5436 </attribute>
5437
5438 <method name="lock">
5439 <desc>
5440 Locks the framebuffer.
5441 Gets called by the display object where this buffer is
5442 registered.
5443 </desc>
5444 </method>
5445
5446 <method name="unlock">
5447 <desc>
5448 Unlocks the framebuffer.
5449 Gets called by the display object where this buffer is
5450 registered.
5451 </desc>
5452 </method>
5453
5454 <method name="notifyUpdate">
5455 <desc>
5456 Informs about an update.
5457 Gets called by the display object where this buffer is
5458 registered.
5459 </desc>
5460 <param name="x" type="unsigned long" dir="in"/>
5461 <param name="y" type="unsigned long" dir="in"/>
5462 <param name="width" type="unsigned long" dir="in"/>
5463 <param name="height" type="unsigned long" dir="in"/>
5464 <param name="finished" type="boolean" dir="return"/>
5465 </method>
5466
5467 <method name="requestResize">
5468 <desc>
5469 Requests a size and pixel format change.
5470
5471 The IFramebuffer implementation should try to setup
5472 a memory buffer suitable for the given pixel format
5473 and line size.
5474 The buffer must be page aligned, must contain
5475 whole number of pages, and one should be able
5476 to lock it to obtain physical addresses of pages.
5477 (Note: this method is currently not supported,
5478 use the below mentioned vram pointer!)
5479
5480 If the requested pixel format is not supported,
5481 or a PixelFormatDefault is requested,
5482 a default format is set. In that case the memory
5483 buffer does not have to be aligned and lockable.
5484
5485 The callee is also allowed to use the memory buffer
5486 pointed to by the vram parameter. For non linear
5487 modes (such as text and standard VGA), the parameter
5488 is NULL and must not be used. When using it, all the
5489 IFramebuffer implementation has to do is return the
5490 same pointer as the Address property. It is recommended
5491 to use it as it will remove one copy operation.
5492
5493 The caller checks if the call was successful
5494 via IFramebuffer property 'PixelFormat'.
5495
5496 Note: The method is called by IDisplay under the Framebuffer lock.
5497 </desc>
5498 <param name="pixelFormat" type="FramebufferPixelFormat" dir="in">
5499 <desc>Specifies the pixel format of the surface (bpp and layout)</desc>
5500 </param>
5501 <param name="vram" type="unsigned long" dir="in">
5502 <desc>Pointer to original guest VRAM (NULL for non linear modes)</desc>
5503 </param>
5504 <param name="lineSize" type="unsigned long" dir="in"/>
5505 <param name="width" type="unsigned long" dir="in"/>
5506 <param name="height" type="unsigned long" dir="in"/>
5507 <param name="finished" type="boolean" dir="return"/>
5508 </method>
5509
5510 <method name="operationSupported">
5511 <desc>
5512 Returns whether the given acceleration operation is supported
5513 by the IFramebuffer implementation. If not, the display object
5514 will not attempt to call the corresponding IFramebuffer entry
5515 point. Even if an operation is indicated to supported, the
5516 IFramebuffer implementation always has the option to return non
5517 supported from the corresponding acceleration method in which
5518 case the operation will be performed by the display engine. This
5519 allows for reduced IFramebuffer implementation complexity where
5520 only common cases are handled.
5521 </desc>
5522 <param name="operation" type="FramebufferAccelerationOperation" dir="in"/>
5523 <param name="supported" type="boolean" dir="return"/>
5524 </method>
5525
5526 <method name="videoModeSupported">
5527 <desc>
5528 Returns whether the framebuffer implementation is willing to
5529 support a given video mode. In case it is not able to render
5530 the video mode (or for some reason not willing), it should
5531 return false. Usually this method is called when the guest
5532 asks the VMM device whether a given video mode is supported
5533 so the information returned is directly exposed to the guest.
5534 It is important that this method returns very quickly.
5535 </desc>
5536 <param name="width" type="unsigned long" dir="in"/>
5537 <param name="height" type="unsigned long" dir="in"/>
5538 <param name="bpp" type="unsigned long" dir="in"/>
5539 <param name="supported" type="boolean" dir="return"/>
5540 </method>
5541
5542 <method name="solidFill">
5543 <desc>
5544 Fill the specified rectangle on screen with a solid color.
5545 </desc>
5546 <param name="x" type="unsigned long" dir="in"/>
5547 <param name="y" type="unsigned long" dir="in"/>
5548 <param name="width" type="unsigned long" dir="in"/>
5549 <param name="height" type="unsigned long" dir="in"/>
5550 <param name="color" type="unsigned long" dir="in"/>
5551 <param name="handled" type="boolean" dir="return"/>
5552 </method>
5553
5554 <method name="copyScreenBits">
5555 <desc>
5556 Copy specified rectangle on the screen.
5557 </desc>
5558 <param name="xDst" type="unsigned long" dir="in"/>
5559 <param name="yDst" type="unsigned long" dir="in"/>
5560 <param name="xSrc" type="unsigned long" dir="in"/>
5561 <param name="ySrc" type="unsigned long" dir="in"/>
5562 <param name="width" type="unsigned long" dir="in"/>
5563 <param name="height" type="unsigned long" dir="in"/>
5564 <param name="handled" type="boolean" dir="return"/>
5565 </method>
5566
5567 </interface>
5568
5569 <interface
5570 name="IFramebufferOverlay" extends="IFrameBuffer"
5571 uuid="0bcc1c7e-e415-47d2-bfdb-e4c705fb0f47"
5572 >
5573 <desc>
5574 An alpha blended overlay for displaying status icons above an IFramebuffer.
5575 It is always created not visible, so that it must be explicitly shown. It
5576 only covers a portion of the IFramebuffer, determined by its width, height
5577 and co-ordinates. It is always in packed pixel little-endian 32bit ARGB (in
5578 that order) format, and may be written to directly. Do re-read the width
5579 though, after setting it, as it may be adjusted (increased) to make it more
5580 suitable for the front end.
5581 </desc>
5582 <attribute name="x" type="unsigned long" readonly="yes">
5583 <desc>X position of the overlay, relative to the framebuffer.</desc>
5584 </attribute>
5585
5586 <attribute name="y" type="unsigned long" readonly="yes">
5587 <desc>Y position of the overlay, relative to the framebuffer.</desc>
5588 </attribute>
5589
5590 <attribute name="visible" type="boolean" readonly="no">
5591 <desc>
5592 Whether the overlay is currently visible.
5593 </desc>
5594 </attribute>
5595
5596 <attribute name="alpha" type="unsigned long" readonly="no">
5597 <desc>
5598 The global alpha value for the overlay. This may or may not be
5599 supported by a given front end.
5600 </desc>
5601 </attribute>
5602
5603 <method name="move">
5604 <desc>
5605 Changes the overlay's position relative to the IFramebuffer.
5606 </desc>
5607 <param name="x" type="unsigned long" dir="in"/>
5608 <param name="y" type="unsigned long" dir="in"/>
5609 </method>
5610
5611 </interface>
5612
5613 <interface
5614 name="IDisplay" extends="$unknown"
5615 uuid="FD443EC1-0012-4F5B-9282-D72760A66916"
5616 >
5617 <attribute name="width" type="unsigned long" readonly="yes">
5618 <desc>Current display width.</desc>
5619 </attribute>
5620
5621 <attribute name="height" type="unsigned long" readonly="yes">
5622 <desc>Current display height.</desc>
5623 </attribute>
5624
5625 <attribute name="colorDepth" type="unsigned long" readonly="yes">
5626 <desc>
5627 Current guest display color depth. Note that this might
5628 be different from <link to="IFramebuffer::colorDepth">IFramebuffer::colorDepth</link>.
5629 </desc>
5630 </attribute>
5631
5632 <method name="setupInternalFramebuffer">
5633 <desc>
5634 Prepares an internally managed framebuffer.
5635 </desc>
5636 <param name="depth" type="unsigned long" dir="in"/>
5637 </method>
5638
5639 <method name="lockFramebuffer">
5640 <desc>
5641 Requests access to the internal framebuffer.
5642 </desc>
5643 <param name="address" type="unsigned long" dir="return"/>
5644 </method>
5645
5646 <method name="unlockFramebuffer">
5647 <desc>
5648 Releases access to the internal framebuffer.
5649 </desc>
5650 </method>
5651
5652 <method name="registerExternalFramebuffer">
5653 <desc>
5654 Registers an external framebuffer.
5655 </desc>
5656 <param name="framebuffer" type="IFramebuffer" dir="in"/>
5657 </method>
5658
5659 <method name="setVideoModeHint">
5660 <desc>
5661 Asks VirtualBox to request the given video mode from
5662 the guest. This is just a hint and it cannot be guaranteed
5663 that the requested resolution will be used. Guest Additions
5664 are required for the request to be seen by guests. The caller
5665 should issue the request and wait for a resolution change and
5666 after a timeout retry.
5667 Specifying "0" for either width and height or the color depth
5668 means that the dimensions or color depth should not be changed.
5669 </desc>
5670 <param name="width" type="unsigned long" dir="in"/>
5671 <param name="height" type="unsigned long" dir="in"/>
5672 <param name="colorDepth" type="unsigned long" dir="in"/>
5673 </method>
5674
5675 <method name="takeScreenShot">
5676 <desc>
5677 Takes a screen shot of the requested size and copies it to the
5678 32-bpp buffer allocated by the caller.
5679 </desc>
5680 <param name="address" type="unsigned long" dir="in"/>
5681 <param name="width" type="unsigned long" dir="in"/>
5682 <param name="height" type="unsigned long" dir="in"/>
5683 </method>
5684
5685 <method name="drawToScreen">
5686 <desc>
5687 Draws a 32-bpp image of the specified size from the given buffer
5688 to the given point on the VM display.
5689 </desc>
5690 <param name="address" type="unsigned long" dir="in"/>
5691 <param name="x" type="unsigned long" dir="in"/>
5692 <param name="y" type="unsigned long" dir="in"/>
5693 <param name="width" type="unsigned long" dir="in"/>
5694 <param name="height" type="unsigned long" dir="in"/>
5695 </method>
5696
5697 <method name="invalidateAndUpdate">
5698 <desc>
5699 Does a full invalidation of the VM display and instructs the VM
5700 to update it.
5701 </desc>
5702 </method>
5703
5704 <method name="resizeCompleted">
5705 <desc>
5706 Signals that a framebuffer has completed the resize operation.
5707 </desc>
5708 </method>
5709
5710 <method name="updateCompleted">
5711 <desc>
5712 Signals that a framebuffer has completed the update operation.
5713 </desc>
5714 </method>
5715
5716 </interface>
5717
5718 <!--
5719 // INetworkAdapter
5720 /////////////////////////////////////////////////////////////////////////
5721 -->
5722
5723 <enum
5724 name="NetworkAttachmentType"
5725 uuid="8730d899-d036-4925-bc63-e58f3486f4bf"
5726 >
5727 <const name="NoNetworkAttachment" value="0"/>
5728 <const name="NATNetworkAttachment" value="1"/>
5729 <const name="HostInterfaceNetworkAttachment" value="2"/>
5730 <const name="InternalNetworkAttachment" value="3"/>
5731 </enum>
5732
5733 <enum
5734 name="NetworkAdapterType"
5735 uuid="156b17b9-5d61-4d54-be90-62e37dda848d"
5736 >
5737 <const name="InvalidNetworkAdapterType" value="0"/>
5738 <const name="NetworkAdapterAm79C970A" value="1"/>
5739 <const name="NetworkAdapterAm79C973" value="2"/>
5740 </enum>
5741
5742 <interface
5743 name="INetworkAdapter" extends="$unknown"
5744 uuid="78dfc978-ecb0-44ee-8b20-54549dd4539e"
5745 >
5746 <attribute name="adapterType" type="NetworkAdapterType">
5747 <desc>
5748 Type of the virtual network adapter. Depending on this value,
5749 VirtualBox will provide a different virtual network hardware
5750 to the guest.
5751 </desc>
5752 </attribute>
5753
5754 <attribute name="slot" type="unsigned long" readonly="yes">
5755 <desc>
5756 Slot number this adapter is plugged into. Corresponds to
5757 the value you pass to <link to="IMachine::getNetworkAdapter"/>
5758 to obtain this instance.
5759 </desc>
5760 </attribute>
5761
5762 <attribute name="enabled" type="boolean">
5763 <desc>
5764 Flag whether the network adapter is present in the
5765 guest system. If disabled, the virtual guest hardware will
5766 not contain this network adapter. Can only be changed when
5767 the VM is not running.
5768 </desc>
5769 </attribute>
5770
5771 <attribute name="MACAddress" type="wstring">
5772 <desc>
5773 Ethernet MAC address of the adapter, 12 hexadecimal characters. When setting
5774 it to NULL, VirtualBox will generate a unique MAC address.
5775 </desc>
5776 </attribute>
5777
5778 <attribute name="attachmentType" type="NetworkAttachmentType" readonly="yes"/>
5779
5780 <attribute name="hostInterface" type="wstring">
5781 <desc>
5782 Name of the Host Network Interface that is currently in use. NULL will be returned
5783 if no device has been allocated. On Linux, setting this refers to a permanent TAP
5784 device. However, a file descriptor has precedence over the interface name on Linux.
5785 Note that when VBox allocates a TAP device, this property will not be set, i.e. the
5786 interface name would have to be determined using the file descriptor and /proc/self/fd.
5787 </desc>
5788 </attribute>
5789
5790<if target="xpidl">
5791 <attribute name="TAPFileDescriptor" type="long">
5792 <desc>
5793 File descriptor of the TAP device. It can either be setup by the caller
5794 which has to supply an existing valid file handle allocated in the parent
5795 process of the VM process or allocated by VirtualBox. The value is -1 if it
5796 has not been defined. This property is non persistent, i.e. it will not be
5797 stored in the VM's configuration data and thus has to be set at each startup.
5798 </desc>
5799 </attribute>
5800 <attribute name="TAPSetupApplication" type="wstring">
5801 <desc>
5802 Application to start to configure the TAP device.
5803 It is being passed two parameters, 1) the file handle (as ascii),
5804 2) the TAP device name if it is available.
5805 </desc>
5806 </attribute>
5807 <attribute name="TAPTerminateApplication" type="wstring">
5808 <desc>
5809 Application to start before closing a TAP device.
5810 It is being passed two parameters, 1) the file handle (as ascii),
5811 2) the TAP device name if it is available.
5812 </desc>
5813 </attribute>
5814</if>
5815
5816 <attribute name="internalNetwork" type="wstring">
5817 <desc>
5818 Name of the internal network the VM is attached to.
5819 </desc>
5820 </attribute>
5821
5822 <attribute name="cableConnected" type="boolean">
5823 <desc>
5824 Flag whether the adapter reports the cable as connected or not.
5825 It can be used to report offline situations to a VM.
5826 </desc>
5827 </attribute>
5828
5829 <attribute name="traceEnabled" type="boolean">
5830 <desc>
5831 Flag whether network traffic from/to the network card should be traced.
5832 Can only be toggled when the VM is turned off.
5833 </desc>
5834 </attribute>
5835
5836 <attribute name="traceFile" type="wstring">
5837 <desc>
5838 Filename where a network trace will be stored. If not set, VBox-pid.pcap
5839 will be used.
5840 </desc>
5841 </attribute>
5842
5843 <method name="attachToNAT">
5844 <desc>
5845 Attach the network adapter to the Network Address Translation (NAT) interface.
5846 </desc>
5847 </method>
5848
5849 <method name="attachToHostInterface">
5850 <desc>
5851 Attach the network adapter to a host interface. On Linux, the TAP
5852 setup application will be executed if configured and unless a device
5853 name and/or file descriptor has been set, a new TAP interface will be
5854 created.
5855 </desc>
5856 </method>
5857
5858 <method name="attachToInternalNetwork">
5859 <desc>
5860 Attach the network adapter to an internal network.
5861 </desc>
5862 </method>
5863
5864 <method name="detach">
5865 <desc>
5866 Detach the network adapter
5867 </desc>
5868 </method>
5869 </interface>
5870
5871
5872 <!--
5873 // IMachineDebugger
5874 /////////////////////////////////////////////////////////////////////////
5875 -->
5876
5877 <interface
5878 name="IMachineDebugger" extends="$unknown"
5879 uuid="837c19ca-c4a4-479b-81e4-362d441f8f94"
5880 >
5881 <method name="resetStats">
5882 <desc>
5883 Reset VM statistics.
5884 </desc>
5885 </method>
5886
5887 <method name="dumpStats">
5888 <desc>
5889 Dumps VM statistics.
5890 </desc>
5891 </method>
5892
5893 <attribute name="singlestep" type="boolean">
5894 <desc>Switch for enabling singlestepping.</desc>
5895 </attribute>
5896
5897 <attribute name="recompileUser" type="boolean">
5898 <desc>Switch for forcing code recompilation for user mode code.</desc>
5899 </attribute>
5900
5901 <attribute name="recompileSupervisor" type="boolean">
5902 <desc>Switch for forcing code recompilation for supervisor mode code.</desc>
5903 </attribute>
5904
5905 <attribute name="PATMEnabled" type="boolean">
5906 <desc>Switch for enabling and disabling the PATM component.</desc>
5907 </attribute>
5908
5909 <attribute name="CSAMEnabled" type="boolean">
5910 <desc>Switch for enabling and disabling the CSAM component.</desc>
5911 </attribute>
5912
5913 <attribute name="LogEnabled" type="boolean">
5914 <desc>Switch for enabling and disabling logging.</desc>
5915 </attribute>
5916
5917 <attribute name="HWVirtExEnabled" type="boolean" readonly="yes">
5918 <desc>
5919 Flag indicating whether the VM is currently making use of CPU hardware
5920 virtualization extensions
5921 </desc>
5922 </attribute>
5923
5924 <!-- @todo method for setting log flags, groups and destination! -->
5925
5926 <attribute name="VM" type="unsigned long long" readonly="yes">
5927 <desc>
5928 Gets the VM handle. This is only for internal use while
5929 we carve the details of this interface.
5930 </desc>
5931 </attribute>
5932
5933 </interface>
5934
5935 <!--
5936 // IUSBController
5937 /////////////////////////////////////////////////////////////////////////
5938 -->
5939
5940 <interface
5941 name="IUSBController" extends="$unknown"
5942 uuid="9a110c34-93c2-46b0-8ac2-b09d1067be56"
5943 >
5944 <attribute name="enabled" type="boolean">
5945 <desc>
5946 Flag whether the USB controller is present in the
5947 guest system. If disabled, the virtual guest hardware will
5948 not contain any USB controller. Can only be changed when
5949 the VM is powered off.
5950 </desc>
5951 </attribute>
5952
5953 <attribute name="USBStandard" type="unsigned short" readonly="yes">
5954 <desc>
5955 USB standard version which the controller implements.
5956 This is a BCD which means that the major version is in the
5957 high byte and minor version is in the low byte.
5958 </desc>
5959 </attribute>
5960
5961 <attribute name="DeviceFilters" type="IUSBDeviceFilterCollection" readonly="yes">
5962 <desc>
5963 List of USB device filters associated with the machine.
5964
5965 If the machine is currently running, these filters are activated
5966 every time a new (supported) USB device is attached to the host
5967 computer that was not ignored by global filters
5968 (<link to="IHost::USBDeviceFilters"/>).
5969
5970 These filters are also activated when the machine is powered up.
5971 They are run against a list of all currently available USB
5972 devices (in states
5973 <link to="USBDeviceState::USBDeviceAvailable">USBDeviceAvailable</link>,
5974 <link to="USBDeviceState::USBDeviceBusy">USBDeviceBusy</link>,
5975 <link to="USBDeviceState::USBDeviceHeld">USBDeviceHeld</link>)
5976 that were not previously ignored by global filters.
5977
5978 If at least one filter matches the USB device in question, this
5979 device is automatically captured (attached to) the virtual USB
5980 controller of this machine.
5981
5982 <see>IUSBDeviceFilter, ::IUSBController</see>
5983 </desc>
5984 </attribute>
5985
5986 <method name="createDeviceFilter">
5987 <desc>
5988 Creates a new USB device filter. All attributes except
5989 the filter name are set to <tt>null</tt> (any match),
5990 <i>active</i> is <tt>false</tt> (the filter is not active).
5991
5992 The created filter can then be added to the list of filters using
5993 <link to="#insertDeviceFilter()"/>.
5994
5995 <see>#DeviceFilters</see>
5996 </desc>
5997 <param name="name" type="wstring" dir="in">
5998 <desc>
5999 Filter name. See <link to="IUSBDeviceFilter::name"/>
6000 for more info.
6001 </desc>
6002 </param>
6003 <param name="filter" type="IUSBDeviceFilter" dir="return">
6004 <desc>Created filter object.</desc>
6005 </param>
6006 </method>
6007
6008 <method name="insertDeviceFilter">
6009 <desc>
6010 Inserts the given USB device to the specified position
6011 in the list of filters.
6012
6013 Positions are numbered starting from <tt>0</tt>. If the specified
6014 position is equal to or greater than the number of elements in
6015 the list, the filter is added to the end of the collection.
6016
6017 <note>
6018 Duplicates are not allowed, so an attempt to inster a
6019 filter that is already in the collection, will return an
6020 error.
6021 </note>
6022
6023 <see>#DeviceFilters</see>
6024 </desc>
6025 <param name="position" type="unsigned long" dir="in">
6026 <desc>Position to insert the filter to.</desc>
6027 </param>
6028 <param name="filter" type="IUSBDeviceFilter" dir="in">
6029 <desc>USB device filter to insert.</desc>
6030 </param>
6031 </method>
6032
6033 <method name="removeDeviceFilter">
6034 <desc>
6035 Removes a USB device filter from the specified position in the
6036 list of filters.
6037
6038 Positions are numbered starting from <tt>0</tt>. Specifying a
6039 position equal to or greater than the number of elements in
6040 the list will produce an error.
6041
6042 <see>#DeviceFilters</see>
6043 </desc>
6044 <param name="position" type="unsigned long" dir="in">
6045 <desc>Position to remove the filter from.</desc>
6046 </param>
6047 <param name="filter" type="IUSBDeviceFilter" dir="return">
6048 <desc>Removed USB device filter.</desc>
6049 </param>
6050 </method>
6051
6052 </interface>
6053
6054
6055 <!--
6056 // IUSBDevice
6057 /////////////////////////////////////////////////////////////////////////
6058 -->
6059
6060 <enumerator
6061 name="IUSBDeviceEnumerator" type="IUSBDevice"
6062 uuid="aefe00f7-eb8a-454b-9ea4-fd5ad93c0e99"
6063 />
6064
6065 <collection
6066 name="IUSBDeviceCollection" type="IUSBDevice"
6067 enumerator="IUSBDeviceEnumerator"
6068 uuid="e31f3248-90dd-4ca2-95f0-6b36042d96a2"
6069 readonly="yes"
6070 >
6071 <method name="findById">
6072 <desc>
6073 Searches this collection for a USB device with the given UUID.
6074 <note>
6075 The method returns an error if the given UUID does not
6076 correspond to any USB device in the collection.
6077 </note>
6078 <see>IUSBDevice::id</see>
6079 </desc>
6080 <param name="id" type="uuid" dir="in">
6081 <desc>UUID of the USB device to search for.</desc>
6082 </param>
6083 <param name="device" type="IUSBDevice" dir="return">
6084 <desc>Found USB device object.</desc>
6085 </param>
6086 </method>
6087
6088 <method name="findByAddress">
6089 <desc>
6090 Searches this collection for a USB device with the given
6091 host address.
6092 <note>
6093 The method returns an error if the given address does not
6094 correspond to any USB device in the collection.
6095 </note>
6096 <see>IUSBDevice::address</see>
6097 </desc>
6098 <param name="name" type="wstring" dir="in">
6099 <desc>
6100 Address of the USB device (as assigned by the host) to
6101 search for.
6102 </desc>
6103 </param>
6104 <param name="device" type="IUSBDevice" dir="return">
6105 <desc>Found USB device object.</desc>
6106 </param>
6107 </method>
6108
6109 </collection>
6110
6111 <interface
6112 name="IUSBDevice" extends="$unknown"
6113 uuid="c5ab8d05-1999-4e48-ae34-cdeb235aacf0"
6114 >
6115 <desc>
6116 The IUSBDevice interface represents a USB device captured by
6117 (attached to) a running virtual machine's USB controller.
6118 <see>IConsole::USBDevices</see>
6119 </desc>
6120
6121 <attribute name="id" type="uuid" readonly="yes">
6122 <desc>
6123 Unique USB device ID. This ID is built from #vendorId,
6124 #productId, #revision and #serialNumber.
6125 </desc>
6126 </attribute>
6127
6128 <attribute name="vendorId" type="unsigned short" readonly="yes">
6129 <desc>Vendor ID.</desc>
6130 </attribute>
6131
6132 <attribute name="productId" type="unsigned short" readonly="yes">
6133 <desc>Product ID.</desc>
6134 </attribute>
6135
6136 <attribute name="revision" type="unsigned short" readonly="yes">
6137 <desc>
6138 Product revision number. This is a packed BCD represented as
6139 unsigned short. The high byte is the integer part and the low
6140 byte is the decimal.
6141 </desc>
6142 </attribute>
6143
6144 <attribute name="manufacturer" type="wstring" readonly="yes">
6145 <desc>Manufacturer string.</desc>
6146 </attribute>
6147
6148 <attribute name="product" type="wstring" readonly="yes">
6149 <desc>Product string.</desc>
6150 </attribute>
6151
6152 <attribute name="serialNumber" type="wstring" readonly="yes">
6153 <desc>Serial number string.</desc>
6154 </attribute>
6155
6156 <attribute name="address" type="wstring" readonly="yes">
6157 <desc>Host specific address of the device.</desc>
6158 </attribute>
6159
6160 <attribute name="port" type="unsigned short" readonly="yes">
6161 <desc>
6162 Host USB port number the device is physically
6163 coonected to.
6164 </desc>
6165 </attribute>
6166
6167 <attribute name="remote" type="boolean" readonly="yes">
6168 <desc>
6169 Whether the device is physically connected to a remote VRDP
6170 client or to a local host machine.
6171 </desc>
6172 </attribute>
6173
6174 </interface>
6175
6176
6177 <!--
6178 // IUSBDeviceFilter
6179 /////////////////////////////////////////////////////////////////////////
6180 -->
6181
6182 <enumerator
6183 name="IUSBDeviceFilterEnumerator" type="IUSBDeviceFilter"
6184 uuid="8d066d8b-3576-4a22-a387-847840937453"
6185 />
6186
6187 <collection
6188 name="IUSBDeviceFilterCollection" type="IUSBDeviceFilter"
6189 enumerator="IUSBDeviceFilterEnumerator"
6190 uuid="4fa3fc99-ceb1-4bf5-a9cb-e962d825c1ef"
6191 readonly="yes"
6192 />
6193
6194 <interface
6195 name="IUSBDeviceFilter" extends="$unknown"
6196 uuid="d6831fb4-1a94-4c2c-96ef-8d0d6192066d"
6197 >
6198 <desc>
6199 The IUSBDeviceFilter interface represents an USB device filter used
6200 to perform actions on a group of USB devices.
6201
6202 This type of filters is used by running virtual machines to
6203 automatically capture selected USB devices once they are physically
6204 attached to the host computer.
6205
6206 A USB device is matched to the given device filter if and only if all
6207 attributes of the device match the corresponding attributes of the
6208 filter (that is, attributes are joined together using the logical AND
6209 operation). On the other hand, all together, filters in the list of
6210 filters carry the semantics of the logical OR operation. So if it is
6211 desirable to create a match like "this vendor id OR this product id",
6212 one needs to create two filters and specify "any match" (see below)
6213 for unused attributes.
6214
6215 All filter attributes used for matching are strings. Each string
6216 is an expression representing a set of values of the corresponding
6217 device attribute, that will match the given filter. Currently, the
6218 following filtering expressions are supported:
6219
6220 <ul>
6221 <li><i>Interval filters</i>. Used to specify valid intervals for
6222 integer device attributes (Vendor ID, Product ID and Revision).
6223 The format of the string is:
6224
6225 <tt>int:((m)|([m]-[n]))(,(m)|([m]-[n]))*</tt>
6226
6227 where <tt>m</tt> and <tt>n</tt> are integer numbers, either in octal
6228 (starting from <tt>0</tt>), hexadecimal (starting from <tt>0x</tt>)
6229 or decimal (otherwise) form, so that <tt>m &lt; n</tt>. If <tt>m</tt>
6230 is ommitted before a dash (<tt>-</tt>), the minimum possible integer
6231 is assumed; if <tt>n</tt> is ommitted after a dash, the maximum
6232 possible integer is assummed.
6233 </li>
6234 <li><i>Boolean filters</i>. Used to specify acceptable values for
6235 boolean device attributes. The format of the string is:
6236
6237 <tt>true|false|yes|no|0|1</tt>
6238
6239 </li>
6240 <li><i>Exact match</i>. Used to specify a single value for the given
6241 device attribute. Any string that does't start with <tt>int:</tt>
6242 represents the exact match. String device attributes are compared to
6243 this string including case of symbols. Integer attributes are first
6244 converted to a string (see individual filter attributes) and then
6245 compared ignoring case.
6246
6247 </li>
6248 <li><i>Any match</i>. Any value of the corresponding device attribute
6249 will match the given filter. An empty or <tt>null</tt> string is
6250 used to construct this type of filtering expressions.
6251
6252 </li>
6253 </ul>
6254
6255 <note>
6256 On the Windows host platform, interval filters are not currently
6257 available. Also all string filter attributes
6258 (<link to="#manufacturer"/>, <link to="#product"/>,
6259 <link to="#serialNumber"/>) are ignored, so they behave as
6260 <i>any match</i> no matter what string expression is specified.
6261 </note>
6262
6263 <see>IUSBController::DeviceFilters, IHostUSBDeviceFilter</see>
6264 </desc>
6265
6266 <attribute name="name" type="wstring">
6267 <desc>
6268 Visible name for this filter.
6269 This name is used to visually distungish one filter from another,
6270 so it can neither be <tt>null</tt> nor an empty string.
6271 </desc>
6272 </attribute>
6273
6274 <attribute name="active" type="boolean">
6275 <desc>Whether this filter active or has been temporarily disabled.</desc>
6276 </attribute>
6277
6278 <attribute name="vendorId" type="wstring">
6279 <desc>
6280 <link to="IUSBDevice::vendorId">Vendor ID</link> filter.
6281 The string representation for the <i>exact matching</i>
6282 has the form <tt>XXXX</tt>, where <tt>X</tt> is the hex digit
6283 (including leading zeroes).
6284 </desc>
6285 </attribute>
6286
6287 <attribute name="productId" type="wstring">
6288 <desc>
6289 <link to="IUSBDevice::productId">Product ID</link> filter.
6290 The string representation for the <i>exact matching</i>
6291 has the form <tt>XXXX</tt>, where <tt>X</tt> is the hex digit
6292 (including leading zeroes).
6293 </desc>
6294 </attribute>
6295
6296 <attribute name="revision" type="wstring">
6297 <desc>
6298 <link to="IUSBDevice::productId">Product revision number</link>
6299 filter. The string representation for the <i>exact matching</i>
6300 has the form <tt>IIFF</tt>, where <tt>I</tt> is the decimal digit
6301 of the integer part of the revision, and <tt>F</tt> is the
6302 decimal digit of its fractional part (including leading and
6303 trailing zeroes).
6304 Note that for interval filters, it's best to use the hexadecimal
6305 form, because the revision is stored as a 16 bit packed BCD value;
6306 so the expression <tt>int:0x0100-0x0199</tt> will match any
6307 revision from <tt>1.0</tt> to <tt>1.99</tt>.
6308 </desc>
6309 </attribute>
6310
6311 <attribute name="manufacturer" type="wstring">
6312 <desc>
6313 <link to="IUSBDevice::manufacturer">Manufacturer</link> filter.
6314 </desc>
6315 </attribute>
6316
6317 <attribute name="product" type="wstring">
6318 <desc>
6319 <link to="IUSBDevice::product">Product</link> filter.
6320 </desc>
6321 </attribute>
6322
6323 <attribute name="serialNumber" type="wstring">
6324 <desc>
6325 <link to="IUSBDevice::serialNumber">Serial number</link> filter.
6326 </desc>
6327 </attribute>
6328
6329 <attribute name="port" type="wstring">
6330 <desc>
6331 <link to="IUSBDevice::port">Host USB port</link> filter.
6332 </desc>
6333 </attribute>
6334
6335 <attribute name="remote" type="wstring">
6336 <desc>
6337 <link to="IUSBDevice::remote">Remote state</link> filter.
6338 <note>
6339 This filter makes sense only for machine USB filters,
6340 i.e. it is ignored by IHostUSBDeviceFilter objects.
6341 </note>
6342 </desc>
6343 </attribute>
6344
6345 </interface>
6346
6347
6348 <!--
6349 // IHostUSBDevice
6350 /////////////////////////////////////////////////////////////////////////
6351 -->
6352
6353 <enum
6354 name="USBDeviceState"
6355 uuid="b99a2e65-67fb-4882-82fd-f3e5e8193ab4"
6356 >
6357 <desc>
6358 USB device state. This enumeration represents all possible states
6359 of the USB device physically attached to the host computer regarding
6360 its state on the host computer and availability to guest computers
6361 (all currently running virtual machines).
6362
6363 Once a supported USB device is attached to the host, global USB
6364 filters (<link to="IHost::USBDeviceFilters"/>) are activated. They can
6365 either ignore the device, or put ot to #USBDeviceHeld state, or do
6366 nothing. Unless the device is ignored by global filters, filters of
6367 all currently running guests (<link to="IUSBController::DeviceFilters"/>)
6368 are activated that can put it to #USBDeviceCaptured state.
6369
6370 If the device was ignored by global filters, or didn't match
6371 any filters at all (including guest ones), it is handled by the host
6372 in a normal way. In this case, the device state is determined by
6373 the host and can be one of #USBDeviceUnavailable, #USBDeviceBusy or
6374 #USBDeviceAvailable, depending on the current device usage.
6375
6376 Besides auto-capturing based on filters, the device can be manually
6377 captured by guests (<link to="IConsole::attachUSBDevice()"/>) if its
6378 state is #USBDeviceBusy, #USBDeviceAvailable or #USBDeviceHeld.
6379
6380 <note>
6381 Due to differences in USB stack implementations in Linux and Win32,
6382 states #USBDeviceBusy and #USBDeviceAvailable are applicable
6383 only to the Linux version of the product. This also means that
6384 (<link to="IConsole::attachUSBDevice()"/>) can only succeed
6385 on Win32 if the device state is #USBDeviceHeld.
6386 </note>
6387
6388 <see>IHostUSBDevice, IHostUSBDeviceFilter</see>
6389 </desc>
6390
6391 <const name="USBDeviceNotSupported" value="0">
6392 <desc>
6393 Not supported by the VirtualBox server, not available to guests.
6394 </desc>
6395 </const>
6396 <const name="USBDeviceUnavailable" value="1">
6397 <desc>
6398 Being used by the host computer exclusively,
6399 not available to guests.
6400 </desc>
6401 </const>
6402 <const name="USBDeviceBusy" value="2">
6403 <desc>
6404 Being used by the host computer, potentially available to guests.
6405 </desc>
6406 </const>
6407 <const name="USBDeviceAvailable" value="3">
6408 <desc>
6409 Not used by the host computer, available to guests.
6410 The host computer can also start using the device at any time.
6411 </desc>
6412 </const>
6413 <const name="USBDeviceHeld" value="4">
6414 <desc>
6415 Held by the VirtualBox server (ignored by the host computer),
6416 available to guests.
6417 </desc>
6418 </const>
6419 <const name="USBDeviceCaptured" value="5">
6420 <desc>
6421 Captured by one of the guest computers, not available
6422 to anybody else.
6423 </desc>
6424 </const>
6425 </enum>
6426
6427 <enumerator
6428 name="IHostUSBDeviceEnumerator" type="IHostUSBDevice"
6429 uuid="a0c55136-939f-4d20-b9d3-4d406f08bfa5"
6430 />
6431
6432 <collection
6433 name="IHostUSBDeviceCollection" type="IHostUSBDevice"
6434 enumerator="IHostUSBDeviceEnumerator"
6435 uuid="f9d3f96d-b027-4994-b589-70bb9ee0d364"
6436 readonly="yes"
6437 >
6438 <method name="findById">
6439 <desc>
6440 Searches this collection for a USB device with the given UUID.
6441 <note>
6442 The method returns an error if the given UUID does not
6443 correspond to any USB device in the collection.
6444 </note>
6445 <see>IHostUSBDevice::id</see>
6446 </desc>
6447 <param name="id" type="uuid" dir="in">
6448 <desc>UUID of the USB device to search for.</desc>
6449 </param>
6450 <param name="device" type="IHostUSBDevice" dir="return">
6451 <desc>Found USB device object.</desc>
6452 </param>
6453 </method>
6454
6455 <method name="findByAddress">
6456 <desc>
6457 Searches this collection for a USB device with the given
6458 host address.
6459 <note>
6460 The method returns an error if the given address does not
6461 correspond to any USB device in the collection.
6462 </note>
6463 <see>IHostUSBDevice::address</see>
6464 </desc>
6465 <param name="name" type="wstring" dir="in">
6466 <desc>
6467 Address of the USB device (as assigned by the host) to
6468 search for.
6469 </desc>
6470 </param>
6471 <param name="device" type="IHostUSBDevice" dir="return">
6472 <desc>Found USB device object.</desc>
6473 </param>
6474 </method>
6475
6476 </collection>
6477
6478 <interface
6479 name="IHostUSBDevice" extends="IUSBDevice"
6480 uuid="173b4b44-d268-4334-a00d-b6521c9a740a"
6481 >
6482 <desc>
6483 The IHostUSBDevice interface represents a USB device attached to
6484 the host computer.
6485
6486 Among with properties inherited from IUSBDevice,
6487 this interface adds the <link to="#state"/> property
6488 that holds the courrent state of the USB device.
6489
6490 <see>IHost::USBDevices, IHost::USBDeviceFilters</see>
6491 </desc>
6492
6493 <attribute name="state" type="USBDeviceState" readonly="yes">
6494 <desc>
6495 Current state of the device.
6496 </desc>
6497 </attribute>
6498
6499 <!-- @todo add class, subclass, bandwidth, configs, interfaces endpoints and such later. -->
6500
6501 </interface>
6502
6503
6504 <!--
6505 // IHostUSBDeviceFilter
6506 /////////////////////////////////////////////////////////////////////////
6507 -->
6508
6509 <enum
6510 name="USBDeviceFilterAction"
6511 uuid="cbc30a49-2f4e-43b5-9da6-121320475933"
6512 >
6513 <desc>
6514 Actions for host USB device filters.
6515 <see>IHostUSBDeviceFilter, USBDeviceState</see>
6516 </desc>
6517
6518 <const name="InvalidUSBDeviceFilterAction" value="0"/>
6519 <const name="USBDeviceFilterIgnore" value="1">
6520 <desc>Ignore the matched USB device.</desc>
6521 </const>
6522 <const name="USBDeviceFilterHold" value="2">
6523 <desc>Hold the matched USB device.</desc>
6524 </const>
6525 </enum>
6526
6527 <enumerator
6528 name="IHostUSBDeviceFilterEnumerator" type="IHostUSBDeviceFilter"
6529 uuid="ff735211-903e-4642-9c37-189eb44579fe"
6530 />
6531
6532 <collection
6533 name="IHostUSBDeviceFilterCollection" type="IHostUSBDeviceFilter"
6534 enumerator="IHostUSBDeviceFilterEnumerator"
6535 uuid="1a80458b-87f1-4a74-995d-04e2330119e0"
6536 readonly="yes"
6537 />
6538
6539 <interface
6540 name="IHostUSBDeviceFilter" extends="IUSBDeviceFilter"
6541 uuid="4cc70246-d74a-400f-8222-3900489c0374"
6542 >
6543 <desc>
6544 The IHostUSBDeviceFilter interface represents a USB device filter used
6545 by the host computer.
6546
6547 Using filters of this type, the host computer determines the initial
6548 state of the USB device after it is physically attached to the
6549 host's USB controller.
6550
6551 <note>
6552 The <link to="#remote"/> attribute is ignored by this type of
6553 filters, because it makes sense only for
6554 <link to="IUSBController::DeviceFilters">machine USB filters</link>.
6555 </note>
6556
6557 <see>IHost::USBDeviceFilters</see>
6558 </desc>
6559
6560 <attribute name="action" type="USBDeviceFilterAction">
6561 <desc>
6562 Action performed by the host when an attached USB device
6563 matches this filter.
6564 </desc>
6565 </attribute>
6566
6567 </interface>
6568
6569 <!--
6570 // IAudioAdapter
6571 /////////////////////////////////////////////////////////////////////////
6572 -->
6573
6574 <enum
6575 name="AudioDriverType"
6576 uuid="0194b900-7233-42d3-b7a1-097bbf53febd"
6577 >
6578 <const name="NullAudioDriver" value="0"/>
6579 <const name="WINMMAudioDriver" value="1"/>
6580 <const name="OSSAudioDriver" value="2"/>
6581 <const name="ALSAAudioDriver" value="3"/>
6582 <const name="DSOUNDAudioDriver" value="4"/>
6583 </enum>
6584
6585 <interface
6586 name="IAudioAdapter" extends="$unknown"
6587 uuid="921873db-5f3f-4b69-91f9-7be9e535a2cb"
6588 >
6589 <attribute name="enabled" type="boolean">
6590 <desc>
6591 Flag whether the audio adapter is present in the
6592 guest system. If disabled, the virtual guest hardware will
6593 not contain any audio adapter. Can only be changed when
6594 the VM is not running.
6595 </desc>
6596 </attribute>
6597 <attribute name="audioDriver" type="AudioDriverType">
6598 <desc>
6599 Audio driver the adapter is connected to. This setting
6600 can only be changed when the VM is not running.
6601 </desc>
6602 </attribute>
6603 </interface>
6604
6605 <!--
6606 // IVRDPServer
6607 /////////////////////////////////////////////////////////////////////////
6608 -->
6609
6610 <enum
6611 name="VRDPAuthType"
6612 uuid="3d91887a-b67f-4b33-85bf-2da7ab1ea83a"
6613 >
6614 <const name="VRDPAuthNull" value="0"/>
6615 <const name="VRDPAuthExternal" value="1"/>
6616 <const name="VRDPAuthGuest" value="2"/>
6617 </enum>
6618
6619 <interface
6620 name="IVRDPServer" extends="$unknown"
6621 uuid="758e413b-8693-4b4f-bcd8-48ce2c3a7f4d"
6622 >
6623 <attribute name="enabled" type="boolean">
6624 <desc>VRDP server status.</desc>
6625 </attribute>
6626
6627 <attribute name="port" type="unsigned long">
6628 <desc>VRDP server port.</desc>
6629 </attribute>
6630
6631 <attribute name="authType" type="VRDPAuthType">
6632 <desc>VRDP authentication method.</desc>
6633 </attribute>
6634
6635 <attribute name="authTimeout" type="unsigned long">
6636 <desc>Timeout for guest authentication. Milliseconds.</desc>
6637 </attribute>
6638
6639 </interface>
6640
6641
6642 <!--
6643 // ISharedFolder
6644 /////////////////////////////////////////////////////////////////////////
6645 -->
6646
6647 <enumerator
6648 name="ISharedFolderEnumerator" type="ISharedFolder"
6649 uuid="1d420fd8-e7c1-4511-abf4-a504dc6d0cbf"
6650 />
6651
6652 <collection
6653 name="ISharedFolderCollection" type="ISharedFolder"
6654 enumerator="ISharedFolderEnumerator"
6655 uuid="9c7e2282-bb16-4fa7-9138-f383c5e02353"
6656 readonly="yes">
6657
6658 <method name="findByName">
6659 <desc>
6660 Searches this collection for a shared folder drive with the
6661 given logical name.
6662 <note>
6663 The method returns an error if the given name does not
6664 correspond to any shared folder in the collection.
6665 </note>
6666 </desc>
6667 <param name="name" type="wstring" dir="in">
6668 <desc>Logical name of the shared folder to search for</desc>
6669 </param>
6670 <param name="sharedFolder" type="ISharedFolder" dir="return">
6671 <desc>Found shared folder object</desc>
6672 </param>
6673 </method>
6674
6675 </collection>
6676
6677 <interface
6678 name="ISharedFolder" extends="$unknown"
6679 uuid="8b0c5f70-9139-4f97-a421-64d5e9c335d5"
6680 >
6681 <desc>
6682 The ISharedFolder interface represents a folder in the host
6683 computer's file system accessible from a guest OS running inside a
6684 virtual machine using an associated logical name.
6685
6686 There are three types of shared folders:
6687 <ul>
6688 <li>permanent (<link to="IMachine::sharedFolders"/>)</li>
6689 <li>transient (<link to="IConsole::sharedFolders"/>)</li>
6690 <li>global (<link to="IVirtualBox::sharedFolders"/>)</li>
6691 </ul>
6692
6693 For a given virtual machine, both permanently and transiently
6694 shared folders have the same logical name space which also includes
6695 all globally shared folders. Thus, every folder in this name space
6696 must have an unique logical name. Note that permanent and transient
6697 shares of other machines are in different name spaces, so they don't
6698 have to have unique names.
6699 </desc>
6700
6701 <attribute name="name" type="wstring" readonly="yes">
6702 <desc>Logical name of the shared folder.</desc>
6703 </attribute>
6704
6705 <attribute name="hostPath" type="wstring" readonly="yes">
6706 <desc>Full path to the shared folder in the host file system.</desc>
6707 </attribute>
6708
6709 <attribute name="accessible" type="boolean" readonly="yes">
6710 <desc>
6711 Whether the folder defined by the host path is currently
6712 accessible or not.
6713 For example, the folder can be unaccessible if it is placed
6714 on the network share that is not available by the time
6715 this property is read.
6716 </desc>
6717 </attribute>
6718
6719 </interface>
6720
6721 <!--
6722 // ISession
6723 /////////////////////////////////////////////////////////////////////////
6724 -->
6725
6726 <interface
6727 name="IInternalSessionControl" extends="$unknown"
6728 uuid="A99D5EB3-02DE-48e4-B059-91A8A41B4DA1"
6729 internal="yes"
6730 >
6731 <method name="getPID">
6732 <desc>PID of the process that has created this Session object.
6733 </desc>
6734 <param name="pid" type="unsigned long" dir="return"/>
6735 </method>
6736
6737 <method name="getRemoteConsole">
6738 <desc>Returns the console object suitable for remote control.</desc>
6739 <param name="console" type="IConsole" dir="return"/>
6740 </method>
6741
6742 <method name="assignMachine">
6743 <desc>
6744 Assigns the machine object associated with this direct-type
6745 session or informs the session that it will be a remote one
6746 (if machine = NULL).
6747 </desc>
6748 <param name="machine" type="IMachine" dir="in"/>
6749 </method>
6750
6751 <method name="assignRemoteMachine">
6752 <desc>
6753 Assigns the machine and the (remote) console object associated with
6754 this remote-type session.
6755 </desc>
6756 <param name="machine" type="IMachine" dir="in"/>
6757 <param name="console" type="IConsole" dir="in"/>
6758 </method>
6759
6760 <method name="updateMachineState">
6761 <desc>
6762 Updates the machine state in the VM process.
6763 Must be called only in certain cases
6764 (see the method implementation).
6765 </desc>
6766 <param name="aMachineState" type="MachineState" dir="in"/>
6767 </method>
6768
6769 <method name="uninitialize">
6770 <desc>
6771 Uninitializes (closes) this session. Used by VirtualBox to close
6772 the corresponding remote session when the direct session dies
6773 or gets closed.
6774 </desc>
6775 </method>
6776
6777 <method name="onDVDDriveChange">
6778 <desc>
6779 Triggered when settings of the DVD drive object of the
6780 associated virtual machine have changed.
6781 </desc>
6782 </method>
6783
6784 <method name="onFloppyDriveChange">
6785 <desc>
6786 Triggered when settings of the floppy drive object of the
6787 associated virtual machine have changed.
6788 </desc>
6789 </method>
6790
6791 <method name="onNetworkAdapterChange">
6792 <desc>
6793 Triggered when settions of a network adapter of the
6794 associated virtual machine have changed.
6795 </desc>
6796 <param name="networkAdapter" type="INetworkAdapter" dir="in"/>
6797 </method>
6798
6799 <method name="onVRDPServerChange">
6800 <desc>
6801 Triggered when settings of the VRDP server object of the
6802 associated virtual machine have changed.
6803 </desc>
6804 </method>
6805
6806 <method name="onUSBControllerChange">
6807 <desc>
6808 Triggered when settings of the USB controller object of the
6809 associated virtual machine have changed.
6810 </desc>
6811 </method>
6812
6813 <method name="onUSBDeviceAttach">
6814 <desc>
6815 Triggered when a USB device has just been attached to the host
6816 computer and is to be auto-captured by the machine according
6817 to its USB filters.
6818 </desc>
6819 <param name="device" type="IUSBDevice" dir="in"/>
6820 </method>
6821
6822 <method name="onUSBDeviceDetach">
6823 <desc>
6824 Triggered when a USB device has just been detached from the host
6825 computer and needs to be detached from the machine.
6826 </desc>
6827 <param name="id" type="uuid" dir="in"/>
6828 </method>
6829
6830 </interface>
6831
6832 <interface
6833 name="ISession" extends="$dispatched"
6834 uuid="12F4DCDB-12B2-4ec1-B7CD-DDD9F6C5BF4D"
6835 >
6836 <attribute name="state" type="SessionState" readonly="yes">
6837 <desc>Current state of this session.</desc>
6838 </attribute>
6839
6840 <attribute name="type" type="SessionType" readonly="yes">
6841 <desc>
6842 Type of this session. The value of this attribute is valid only
6843 if the session is currently open (i.e. its #state is SessionType::SessionOpen),
6844 otherwise an error will be returned.
6845 </desc>
6846 </attribute>
6847
6848 <attribute name="machine" type="IMachine" readonly="yes">
6849 <desc>Machine object associated with this session.</desc>
6850 </attribute>
6851
6852 <attribute name="console" type="IConsole" readonly="yes">
6853 <desc>Console object associated with this session.</desc>
6854 </attribute>
6855
6856 <method name="close">
6857 <desc>
6858 Closes this session.
6859 <note>
6860 If a direct session for a machine opened with
6861 <link to="IVirtualBox::openSession()"/> is not explicitly
6862 closed when the application terminates, the state of the
6863 machine will be set to <link to="MachineState::Aborted"/>
6864 on the server. Generally, it is recommended to close all
6865 open sessions explicitly before terminating the application
6866 (no matter what is the reason of the termination).
6867 </note>
6868 </desc>
6869 </method>
6870
6871 </interface>
6872
6873 <class name="Session" uuid="3C02F46D-C9D2-4f11-A384-53F0CF917214">
6874 <interface name="ISession" default="yes"/>
6875 </class>
6876
6877
6878</module>
6879
6880</idl>
Note: See TracBrowser for help on using the repository browser.

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