VirtualBox

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

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

QueryVisibleRegion -> GetVisibleRegion

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