VirtualBox

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

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

Main: Added new IMachine attributes: description, sessionType and sessionPid.

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