VirtualBox

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

Last change on this file since 1507 was 1471, checked in by vboxsync, 18 years ago

Main: XPCOM: Initial implementation of auto-startable "out-of-proc" VirtualBox component (VBoxSVC).

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