VirtualBox

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

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

Main: Prototyped IVMDKImage.

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