VirtualBox

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

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

Main: Improved IFramebuffer::resizeCompleted() docs; Renamed PixelFormatDefault => PixelFormatOpaque.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 280.1 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="38b54279-dc35-4f5e-a431-835b867c6b5e"
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="d7a3f7cf-84c4-4628-9267-a1cff0e5f3bc"
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 <attribute name="seamlessSupport" type="boolean" readonly="yes">
4177 <desc>
4178 Flag whether seamless guest display rendering is supported.
4179 </desc>
4180 </attribute>
4181
4182 <method name="setCredentials">
4183 <desc>
4184 Store login credentials that can be queried by guest operating
4185 systems with Additions installed. The credentials are transient
4186 to the session and the guest may also choose to erase them. Note
4187 that the caller cannot determine whether the guest operating system
4188 has queried or made use of the credentials.
4189 </desc>
4190 <param name="userName" type="wstring" dir="in">
4191 <desc>User name string, can be empty</desc>
4192 </param>
4193 <param name="password" type="wstring" dir="in">
4194 <desc>Password string, can be empty</desc>
4195 </param>
4196 <param name="domain" type="wstring" dir="in">
4197 <desc>Domain name (guest logon scheme specific), can be emtpy</desc>
4198 </param>
4199 <param name="allowInteractiveLogon" type="boolean" dir="in">
4200 <desc>
4201 Flag whether the guest should alternatively allow the user to
4202 interactively specify different credentials. This flag might
4203 not be supported by all versions of the Additions.
4204 </desc>
4205 </param>
4206 </method>
4207
4208 </interface>
4209
4210
4211 <!--
4212 // IProgress
4213 /////////////////////////////////////////////////////////////////////////
4214 -->
4215
4216 <enumerator
4217 name="IProgressEnumerator" type="IProgress"
4218 uuid="e0380522-4ef1-48f4-856c-e455177ccb2d"
4219 />
4220
4221 <collection
4222 name="IProgressCollection" type="IProgress" enumerator="IProgressEnumerator"
4223 uuid="78B76A7C-F0F2-467c-9F0E-F089A54EE957"
4224 readonly="yes"
4225 />
4226
4227 <interface
4228 name="IProgress" extends="$unknown"
4229 uuid="10CC03A1-717E-429b-992D-C67B56175A51"
4230 wsmap="managed"
4231 >
4232 <desc>
4233 The IProgress interface represents a task progress object that allows
4234 to wait for the completion of some asynchronous task.
4235
4236 The task consists of one or more operations that run sequentially,
4237 one after one. There is an individual percent of completion of the
4238 current operation and the percent of completion of the task as a
4239 whole. Similarly, you can wait for the completion of a particular
4240 operation or for the completion of the whole task.
4241
4242 Every operation is identified by a number (starting from 0)
4243 and has a separate description.
4244 </desc>
4245
4246 <attribute name="id" type="uuid" readonly="yes">
4247 <desc>ID of the task.</desc>
4248 </attribute>
4249
4250 <attribute name="description" type="wstring" readonly="yes">
4251 <desc>Description of the task.</desc>
4252 </attribute>
4253
4254 <attribute name="initiator" type="$unknown" readonly="yes">
4255 <desc>Initiator of the task.</desc>
4256 </attribute>
4257
4258 <attribute name="cancelable" type="boolean" readonly="yes">
4259 <desc>Whether the task can be interrupted.</desc>
4260 </attribute>
4261
4262 <attribute name="percent" type="long" readonly="yes">
4263 <desc>
4264 Current task progress value in percent.
4265 This value depends on how many operations are already complete.
4266 </desc>
4267 </attribute>
4268
4269 <attribute name="completed" type="boolean" readonly="yes">
4270 <desc>Whether the task has been completed.</desc>
4271 </attribute>
4272
4273 <attribute name="canceled" type="boolean" readonly="yes">
4274 <desc>Whether the task has been canceled.</desc>
4275 </attribute>
4276
4277 <attribute name="resultCode" type="result" readonly="yes">
4278 <desc>
4279 Result code of the progress task.
4280 Valid only if <link to="#completed"/> is true.
4281 </desc>
4282 </attribute>
4283
4284 <attribute name="errorInfo" type="IVirtualBoxErrorInfo" readonly="yes">
4285 <desc>
4286 Extended information about the unsuccessful result of the
4287 progress operation. May be NULL when no extended information
4288 is available.
4289 Valid only if <link to="#completed"/> is true and
4290 <link to="#resultCode"/> indicates a failure.
4291 </desc>
4292 </attribute>
4293
4294 <attribute name="operationCount" type="unsigned long" readonly="yes">
4295 <desc>
4296 Number of operations this task is divided into.
4297 Every task consists of at least one operation.
4298 </desc>
4299 </attribute>
4300
4301 <attribute name="operation" type="unsigned long" readonly="yes">
4302 <desc>Number of the operation being currently executed.</desc>
4303 </attribute>
4304
4305 <attribute name="operationDescription" type="wstring" readonly="yes">
4306 <desc>
4307 Description of the operation being currently executed.
4308 </desc>
4309 </attribute>
4310
4311 <attribute name="operationPercent" type="long" readonly="yes">
4312 <desc>Current operation progress value in percent.</desc>
4313 </attribute>
4314
4315 <method name="waitForCompletion">
4316 <desc>
4317 Waits until the task is done (including all operations) with a
4318 given timeout.
4319 </desc>
4320 <param name="timeout" type="long" dir="in">
4321 <desc>
4322 Timeout value in milliseconds.
4323 Specify -1 for an indefinite wait.
4324 </desc>
4325 </param>
4326 </method>
4327
4328 <method name="waitForOperationCompletion">
4329 <desc>
4330 Waits until the given operation is done with a given timeout.
4331 </desc>
4332 <param name="operation" type="unsigned long" dir="in">
4333 <desc>
4334 Number of the operation to wait for.
4335 Must be less than <link to="#operationCount"/>.
4336 </desc>
4337 </param>
4338 <param name="timeout" type="long" dir="in">
4339 <desc>
4340 Timeout value in milliseconds.
4341 Specify -1 for an indefinite wait.
4342 </desc>
4343 </param>
4344 </method>
4345
4346 <method name="cancel">
4347 <desc>
4348 Cancels the task.
4349 <note>
4350 If <link to="#cancelable"/> is <tt>false</tt>, then
4351 this method will fail.
4352 </note>
4353 </desc>
4354 </method>
4355
4356 </interface>
4357
4358
4359 <!--
4360 // ISnapshot
4361 /////////////////////////////////////////////////////////////////////////
4362 -->
4363
4364 <enumerator
4365 name="ISnapshotEnumerator" type="ISnapshot"
4366 uuid="25cfa2a4-1f1d-4f05-9658-b7a5894ef1a3"
4367 />
4368
4369 <collection
4370 name="ISnapshotCollection" type="ISnapshot"
4371 enumerator="ISnapshotEnumerator"
4372 uuid="23852e3c-94cd-4801-ab05-ed35675b3894"
4373 readonly="yes"
4374 />
4375
4376 <interface
4377 name="ISnapshot" extends="$unknown"
4378 uuid="9f1bbf79-13b0-4da2-abba-4a992c65c083"
4379 wsmap="managed"
4380 >
4381 <desc>
4382 The ISnapshot interface represents a snapshot of the virtual
4383 machine.
4384
4385 The <i>snapshot</i> stores all the information about a virtual
4386 machine necessary to bring it to exactly the same state as it was at
4387 the time of taking the snapshot. The snapshot includes:
4388
4389 <ul>
4390 <li>all settings of the virtual machine (i.e. its hardware
4391 configuration: RAM size, attached hard disks, etc.)
4392 </li>
4393 <li>the execution state of the virtual machine (memory contents,
4394 CPU state, etc.).
4395 </li>
4396 </ul>
4397
4398 Snapshots can be <i>offline</i> (taken when the VM is powered off)
4399 or <i>online</i> (taken when the VM is running). The execution
4400 state of the offline snapshot is called a <i>zero execution state</i>
4401 (it doesn't actually contain any information about memory contents
4402 or the CPU state, assuming that all hardware is just powered off).
4403
4404 <h3>Snapshot branches</h3>
4405
4406 Snapshots can be chained. Chained snapshots form a branch where
4407 every next snapshot is based on the previous one. This chaining is
4408 mostly related to hard disk branching (see <link to="IHardDisk"/>
4409 description). This means that every time a new snapshot is created,
4410 a new differencing hard disk is implicitly created for all normal
4411 hard disks attached to the given virtual machine. This allows to
4412 fully restore hard disk contents when the machine is later reverted
4413 to a particular snapshot.
4414
4415 In the current implelemtation, multiple snapshot branches within one
4416 virtual machine are not allowed. Every machine has a signle branch,
4417 and <link to="IConsole::takeSnapshot()"/> operation adds a new
4418 snapshot to the top of that branch.
4419
4420 Existings snapshots can be discarded using
4421 <link to="IConsole::discardSnapshot()"/>.
4422
4423 <h3>Current snapshot</h3>
4424
4425 Every virtual machine has a current snapshot, identified by
4426 <link to="IMachine::currentSnapshot"/>. This snapshot is used as
4427 a base for the <i>current machine state</i> (see below), to the effect
4428 that all normal hard disks of the machine and its execution
4429 state are based on this snapshot.
4430
4431 In the current implementation, the current snapshot is always the
4432 last taken snapshot (i.e. the head snapshot on the branch) and it
4433 cannot be changed.
4434
4435 The current snapshot is <tt>null</tt> if the machine doesn't have
4436 snapshots at all; in this case the current machine state is just
4437 current settings of this machine plus its current execution state.
4438
4439 <h3>Current machine state</h3>
4440
4441 The current machine state is what represened by IMachine instances got
4442 directly from IVirtualBox
4443 using <link
4444 to="IVirtualBox::getMachine()">getMachine()</link>, <link
4445 to="IVirtualBox::findMachine()">findMachine()</link>, etc. (as opposed
4446 to instances returned by <link to="ISnapshot::machine"/>). This state
4447 is always used when the machine is <link to="IConsole::powerUp"> powered
4448 on</link>.
4449
4450 The current machine state also includes the current execution state.
4451 If the machine is being currently executed
4452 (<link to="IMachine::state"/> is <link to="MachineState::Running"/>
4453 and above), its execution state is just what's happening now.
4454 If it is powered off (<link to="MachineState::PoweredOff"/> or
4455 <link to="MachineState::Aborted"/>), it has a zero execution state.
4456 If the machine is saved (<link to="MachineState::Saved"/>), its
4457 execution state is what saved in the execution state file
4458 (<link to="IMachine::stateFilePath"/>).
4459
4460 If the machine is in the saved state, then, next time it is powered
4461 on, its execution state will be fully restored from the saved state
4462 file and the execution will continue from the point where the state
4463 was saved.
4464
4465 Similarly to snapshots, the current machine state can be discarded
4466 using <link to="IConsole::discardCurrentState()"/>.
4467
4468 <h3>Taking and discarding snapshots</h3>
4469
4470 The table below briefly explains the meaning of every snapshot
4471 operation:
4472
4473 <table>
4474 <tr><th>Operation</th><th>Meaning</th><th>Remarks</th></tr>
4475
4476 <tr><td><link to="IConsole::takeSnapshot()"/></td>
4477
4478 <td>Save the current state of the virtual machine, including all
4479 settings, contents of normal hard disks and the current modifications
4480 to immutable hard disks (for online snapshots)</td>
4481
4482 <td>The current state is not changed (the machine will continue
4483 execution if it is being executed when the snapshot is
4484 taken)</td></tr>
4485
4486 <tr><td><link to="IConsole::discardSnapshot()"/></td>
4487
4488 <td>Forget the state of the virtual machine stored in the snapshot:
4489 dismiss all saved settings and delete the saved execution state (for
4490 online snapshots)</td>
4491
4492 <td>Other snapshots (including child snapshots, if any) and the
4493 current state are not directly affected</td></tr>
4494
4495 <tr><td><link to="IConsole::discardCurrentState()"/></td>
4496
4497 <td>Restore the current state of the virtual machine from the state
4498 stored in the current snapshot, including all settings and hard disk
4499 contents</td>
4500
4501 <td>The current state of the machine existed prior to this operation
4502 is lost</td></tr>
4503
4504 <tr><td><link to="IConsole::discardCurrentSnapshotAndState()"/></td>
4505
4506 <td>Completely revert the virtual machine to the state it was in
4507 before the current snapshot has been taken</td>
4508
4509 <td>The current state, as well as the current snapshot, are
4510 lost</td></tr>
4511
4512 </table>
4513
4514 </desc>
4515
4516 <attribute name="id" type="uuid" readonly="yes">
4517 <desc>UUID of the snapshot.</desc>
4518 </attribute>
4519
4520 <attribute name="name" type="wstring">
4521 <desc>Short name of the snapshot.</desc>
4522 </attribute>
4523
4524 <attribute name="description" type="wstring">
4525 <desc>Optional description of the snapshot.</desc>
4526 </attribute>
4527
4528 <attribute name="timeStamp" type="long long" readonly="yes">
4529 <desc>
4530 Time stamp of the snapshot, in milliseconds since 1970-01-01 UTC.
4531 </desc>
4532 </attribute>
4533
4534 <attribute name="online" type="boolean" readonly="yes">
4535 <desc>
4536 <tt>true</tt> if this snapshot is an online snapshot and
4537 <tt>false</tt> otherwise.
4538
4539 <note>
4540 When this attribute is <tt>true</tt>, the
4541 <link to="IMachine::stateFilePath"/> attribute of the
4542 <link to="#machine"/> object associated with this snapshot
4543 will point to the saved state file. Otherwise, it will be
4544 <tt>null</tt>.
4545 </note>
4546 </desc>
4547 </attribute>
4548
4549 <attribute name="machine" type="IMachine" readonly="yes">
4550 <desc>
4551 Virtual machine this snapshot is taken on. This object
4552 stores all settings the machine had when taking this snapshot.
4553 <note>
4554 The returned machine object is immutable, i.e. no
4555 any settings can be changed.
4556 </note>
4557 </desc>
4558 </attribute>
4559
4560 <attribute name="parent" type="ISnapshot" readonly="yes">
4561 <desc>
4562 Parent snapshot (a snapshot this one is based on).
4563 <note>
4564 It's not an error to read this attribute on a snapshot
4565 that doesn't have a parent -- a null object will be
4566 returned to indicate this.
4567 </note>
4568 </desc>
4569 </attribute>
4570
4571 <attribute name="children" type="ISnapshotCollection" readonly="yes">
4572 <desc>
4573 Child snapshots (all snapshots having this one as a parent).
4574 <note>
4575 In the current implementation, there can be only one
4576 child snapshot, or no children at all, meaning this is the
4577 last (head) snapshot.
4578 </note>
4579 </desc>
4580 </attribute>
4581
4582 </interface>
4583
4584 <!--
4585 // IHardDisk
4586 /////////////////////////////////////////////////////////////////////////
4587 -->
4588
4589 <enum
4590 name="HardDiskStorageType"
4591 uuid="48138584-ad99-479d-a36f-eb82a7663685"
4592 >
4593 <desc>
4594 Virtual hard disk storage type.
4595 <see>IHardDisk</see>
4596 </desc>
4597 <const name="VirtualDiskImage" value="0">
4598 <desc>
4599 Virtual Disk Image, VDI (a regular file in the file
4600 system of the host OS, see <link to="IVirtualDiskImage"/>)
4601 </desc>
4602 </const>
4603 <const name="ISCSIHardDisk" value="1">
4604 <desc>
4605 iSCSI Remote Disk (a disk accessed via the Internet
4606 SCSI protocol over a TCP/IP network, see
4607 <link to="IISCSIHardDisk"/>)
4608 </desc>
4609 </const>
4610 <const name="VMDKImage" value="2">
4611 <desc>
4612 VMware Virtual Machine Disk image (a regular file in the file
4613 system of the host OS, see <link to="IVMDKImage"/>)
4614 </desc>
4615 </const>
4616 </enum>
4617
4618 <enum
4619 name="HardDiskType"
4620 uuid="a348fafd-a64e-4643-ba65-eb3896bd7e0a"
4621 >
4622 <desc>
4623 Virtual hard disk type.
4624 <see>IHardDisk</see>
4625 </desc>
4626 <const name="NormalHardDisk" value="0">
4627 <desc>
4628 Normal hard disk (attached directly or indirectly, preserved
4629 when taking snapshots).
4630 </desc>
4631 </const>
4632 <const name="ImmutableHardDisk" value="1">
4633 <desc>
4634 Immutable hard disk (attached indirectly, changes are wiped out
4635 after powering off the virtual machine).
4636 </desc>
4637 </const>
4638 <const name="WritethroughHardDisk" value="2">
4639 <desc>
4640 Write through hard disk (attached directly, ignored when
4641 taking snapshots).
4642 </desc>
4643 </const>
4644 </enum>
4645
4646 <interface
4647 name="IHardDiskAttachment" extends="$unknown"
4648 uuid="c0ffe596-21c6-4797-8d8a-b47b66881e7a"
4649 wsmap="struct"
4650 >
4651 <attribute name="hardDisk" type="IHardDisk" readonly="yes">
4652 <desc>Harddisk object this attachment is about.</desc>
4653 </attribute>
4654
4655 <attribute name="controller" type="DiskControllerType" readonly="yes">
4656 <desc>Disk controller ID of this attachment.</desc>
4657 </attribute>
4658
4659 <attribute name="deviceNumber" type="long" readonly="yes">
4660 <desc>Device number of the attachment.</desc>
4661 </attribute>
4662
4663 </interface>
4664
4665 <enumerator
4666 name="IHardDiskAttachmentEnumerator" type="IHardDiskAttachment"
4667 uuid="9955e486-2f0b-432a-99e4-0ebbd338875e"
4668 />
4669
4670 <collection
4671 name="IHardDiskAttachmentCollection" type="IHardDiskAttachment"
4672 enumerator="IHardDiskAttachmentEnumerator"
4673 uuid="8f727842-bb77-45d4-92de-4ec14bf613c9"
4674 readonly="yes"
4675 />
4676
4677 <enumerator
4678 name="IHardDiskEnumerator" type="IHardDisk"
4679 uuid="b976f97b-cdb8-47e3-9860-084031cbd533"
4680 />
4681
4682 <collection
4683 name="IHardDiskCollection" type="IHardDisk"
4684 enumerator="IHardDiskEnumerator"
4685 uuid="43EAC2BC-5C61-40fa-BC38-46DE2C7DB6BB"
4686 readonly="yes"
4687 />
4688
4689 <interface
4690 name="IHardDisk" extends="$unknown"
4691 uuid="FD443EC1-000F-4F5B-9282-D72760A66916"
4692 wsmap="managed"
4693 >
4694 <desc>
4695 The IHardDisk interface represents a virtual hard disk drive
4696 used by virtual machines.
4697
4698 The virtual hard disk drive virtualizes the hard disk hardware and
4699 looks like a regular hard disk inside the virtual machine and
4700 the guest OS.
4701
4702 <h3>Storage Types</h3>
4703
4704 The <link to="HardDiskStorageType">storage type</link> of the
4705 virtual hard disk determines where and how it stores its data
4706 (sectors). Currently, the following storage types are supported:
4707
4708 <ul>
4709
4710 <li>
4711 <i>Virtual Disk Image (VDI)</i>, a regular file in the file system
4712 of the host OS (represented by the <link to="IVirtualDiskImage"/>
4713 interface). This file has a special format optimized so that unused
4714 sectors of data occupy much less space than on a physical hard disk.
4715 </li>
4716
4717 <li>
4718 <i>iSCSI Remote Disk</i>, a disk accessed via the Internet SCSI
4719 protocol over a TCP/IP network link (represented by the
4720 <link to="IISCSIHardDisk"/> interface).
4721 </li>
4722
4723 <li>
4724 <i>VMware VMDK Image</i>, a regular file in the file system of the
4725 host OS (represented by the <link to="IVMDKImage"/> interface).
4726 </li>
4727
4728 </ul>
4729
4730 The storage type of the particular hard disk object is indicated by
4731 the <link to="#storageType"/> property.
4732
4733 Each storage type is represented by its own interface (as shown
4734 above), that allows to query and set properties and perform
4735 operations specific to that storage type. When an IHardDisk object
4736 reports it uses some particular storage type, it also guaranteed to
4737 support the corresponding interface which you can query. And vice
4738 versa, every object that supports a storage-specific interface, also
4739 supports IHardDisk.
4740
4741 <h3>Virtual Hard Disk Types</h3>
4742
4743 The <link to="HardDiskType">type</link> of the virtual hard disk
4744 determines how it is attached to the virtual machine when you call
4745 <link to="IMachine::attachHardDisk()"/> and what happens to it when
4746 a <link to="ISnapshot">snapshot</link> of the virtual machine is
4747 taken.
4748
4749 There are three types of virtual hard disks:
4750
4751 <ul>
4752 <li><i>Normal</i></li>
4753 <li><i>Immutable</i></li>
4754 <li><i>Writethrough</i></li>
4755 </ul>
4756
4757 The virtual disk type is indicated by the <link to="#type"/>
4758 property. Each of the above types is described in detail further
4759 down.
4760
4761 There is also a forth, "hidden" virtual disk type:
4762 <i>Differencing</i>. It is "hidden" because you cannot directly
4763 create hard disks of this type -- they are automatically created by
4764 VirtualBox when necessary.
4765
4766 <b>Differencing Hard Disks</b>
4767
4768 Unlike disks of other types (that are similar to real hard disks),
4769 the differencing hard disk does not store the full range of data
4770 sectors. Instead, it stores only a subset of sectors of some other
4771 disk that were changed since the differencing hard disk has been
4772 created. Thus, every differencing hard disk has a parent hard disk
4773 it is linked to, and represents the difference between the initial
4774 and the current hard disk state. A differencing hard disk can be
4775 linked to another differencing hard disk -- this way, differencing
4776 hard disks can form a branch of changes. More over, a given virtual
4777 hard disk can have more than one differencing hard disk linked to
4778 it.
4779
4780 A disk the differencing hard disk is linked to (or, in other words,
4781 based on) is called a <i>parent</i> hard disk and is accessible through
4782 the <link to="#parent"/> property. Similarly, all existing differencing
4783 hard disks for a given parent hard disk are called its <i>child</i> hard
4784 disks (and accessible through the <link to="#children"/> property).
4785
4786 All differencing hard disks use Virtual Disk Image files to store
4787 changed sectors. They have the <link to="#type"/> property set to
4788 Normal, but can be easily distinguished from normal hard disks using
4789 the <link to="#parent"/> property: all differencing hard disks have
4790 a parent, while all normal hard disks don't.
4791
4792 When the virtual machine makes an attempt to read a sector that is
4793 missing in a differencing hard disk, its parent is accessed to
4794 resolve the sector in question. This process continues until the
4795 sector is found, or until the root hard disk is encountered, which
4796 always contains all sectors. As a consequence,
4797
4798 <ul>
4799
4800 <li>
4801 The virtual hard disk geometry seen by the guest OS is
4802 always defined by the root hard disk.
4803 </li>
4804
4805 <li>
4806 All hard disks on a branch, up to the root, must be
4807 <link to="#accessible"/> for a given differencing hard disk in order
4808 to let it function properly when the virtual machine is
4809 running.
4810 </li>
4811
4812 </ul>
4813
4814 Differencing hard disks can be implicitly created by VirtualBox in
4815 the following cases:
4816
4817 <ul>
4818
4819 <li>
4820 When a hard disk is <i>indirectly</i> attached to the virtual
4821 machine using <link to="IMachine::attachHardDisk()"/>. In this
4822 case, all disk writes performed by the guest OS will go to the
4823 created diffferencing hard disk, as opposed to the
4824 <i>direct</i> attachment, where all changes are written to the
4825 attached hard disk itself.
4826 </li>
4827
4828 <li>
4829 When a <link to="ISnapshot">snapshot</link> of the virtual machine
4830 is taken. After that, disk writes to hard disks the differencing
4831 ones have been created for, will be directed to those differencing
4832 hard disks, to preserve the contents of the original disks.
4833 </li>
4834
4835 </ul>
4836
4837 Whether to create a differencing hard disk or not depends on the
4838 type of the hard disk attached to the virtual machine. This is
4839 explained below.
4840
4841 Note that in the current implementation, only the
4842 <link to="VirtualDiskImage"/> storage type is used to
4843 represent differencing hard disks. In other words, all
4844 differencing hard disks are <link to="IVirtualDiskImage"/>
4845 objects.
4846
4847 <b>Normal Hard Disks</b>
4848
4849 Normal hard disks are the most commonly used virtual hard disk. A
4850 normal hard disk is attached to the machine directly if it is not
4851 already attached to some other machine. Otherwise, an attempt to
4852 make an indirect attachment through a differencing hard disk will be
4853 made. This attempt will fail if the hard disk is attached to a
4854 virtual machine without snapshots (because it's impossible to create
4855 a differencing hard disk based on a hard disk that is subject to
4856 change).
4857
4858 When an indirect attachment takes place, in the simplest case, where
4859 the machine the hard disk is being attached to doesn't have
4860 snapshots, the differencing hard disk will be based on the normal
4861 hard disk being attached. Otherwise, the first (i.e. the most
4862 recent) descendant of the given normal hard disk found in the
4863 current snapshot branch (starting from the current snapshot and
4864 going up to the root) will be actually used as a base.
4865
4866 Note that when you detach an indirectly attached hard disk from the
4867 machine, the created differencing hard disk image is simply
4868 <b>deleted</b>, so <b>all changes are lost</b>. If you attach the
4869 same disk again, a clean differencing disk will be created based on
4870 the most recent child, as described above.
4871
4872 When taking a snapshot, the contents of all normal hard disks (and
4873 all differencing disks whose roots are normal hard disks) currently
4874 attached to the virtual machine is preserved by creating
4875 differencing hard disks based on them.
4876
4877 <b>Immutable Hard Disks</b>
4878
4879 Immutable hard disks can be used to provide a sort of read-only
4880 access. An immutable hard disk is always attached indirectly. The
4881 created differencing hard disk is automatically wiped out (recreated
4882 from scratch) every time you power off the virtual machine. Thus,
4883 the contents of the immutable disk remains unchanged between runs.
4884
4885 Detaching an immutable hard disk deletes the differencing disk
4886 created for it, with the same effect as in case with normal hard
4887 disks.
4888
4889 When taking a snapshot, the differencing part of the immutable
4890 hard disk is cloned (i.e. copied to a separate Virtual Disk Image
4891 file) without any changes. This is necessary to preserve the exact
4892 virtual machine state when you create an online snapshot.
4893
4894 <b>Writethrough Hard Disks</b>
4895
4896 Hard disks of this type are always attached directly. This means
4897 that every given writethrough hard disk can be attached only to one
4898 virtual machine at a time.
4899
4900 It is impossible to take a snapshot of a virtual machine with the
4901 writethrough hard disk attached, because taking a snapshot implies
4902 saving the execution state and preserving the contents of all hard
4903 disks, but writethrough hard disks cannot be preserved. Preserving
4904 hard disk contents is necessary to ensure the guest OS stored in the
4905 snapshot will get the same hard disk state when restored, which is
4906 especially important when it has open file handles or when there are
4907 cached files and directories stored in memory.
4908
4909 <h3>Creating, Opening and Registering Hard Disks</h3>
4910
4911 Non-differencing hard disks are either created from scratch using
4912 <link to="IVirtualBox::createHardDisk()"/> or opened from a VDI file
4913 using <link to="IVirtualBox::openVirtualDiskImage()"/> (only for hard
4914 disks using the VirtualDiskImage storage type). Once a hard disk is
4915 created or opened, it needs to be registered using
4916 <link to="IVirtualBox::registerHardDisk()"/> to make it available for
4917 attaching to virtual machines. See the documentation of individual
4918 interfaces for various storage types to get more information.
4919
4920 Differencing hard disks are never created explicitly and cannot
4921 be registered or unregistered; they are automatically registered
4922 upon creation and deregistered when deleted.
4923
4924 <h3>More about Indirect Hard Disk Attachments</h3>
4925
4926 Normally, when you attach a hard disk to the virtual machine, and then
4927 query the corresponding attachment using
4928 <link to="IMachine::getHardDisk()"/> or
4929 <link to="IMachine::hardDiskAttachments"/> you will get the same hard
4930 disk object, whose UUID you passed earlier to
4931 <link to="IMachine::attachHardDisk()"/>. However, when an indirect
4932 attachment takes place, calling <link to="IMachine::getHardDisk()"/>
4933 will return a differencing hard disk object, that is either based on the
4934 attached hard disk or on another differencing hard disk, the attached
4935 hard disk is eventually a root for (as described above). In both cases
4936 the returned hard disk object is the object the virtual machine actually
4937 uses to perform disk writes to.
4938
4939 Regardless of whether the attachment is direct or indirect, the
4940 <link to="#machineId"/> property of the attached disk will contain an
4941 UUID of the machine object <link to="IMachine::attachHardDisk()"/>
4942 has been called on.
4943
4944 Note that both <link to="IMachine::attachHardDisk()"/> and
4945 <link to="IMachine::detachHardDisk()"/> are <i>lazy</i> operations. In
4946 particular, this means that when an indirect attachment is made,
4947 differencing hard disks are not created until machine settings are
4948 committed using <link to="IMachine::saveSettings()"/>. Similarly, when a
4949 differencing hard disk is detached, it is not deleted until
4950 <link to="IMachine::saveSettings()"/> is called. Calling
4951 <link to="IMachine::discardSettings()"/> cancels all lazy attachments or
4952 detachments made since the last commit and effectively restores the
4953 previous set of hard disks.
4954
4955 <h3>Hard Disk Accessibility</h3>
4956
4957 The <link to="#accessible"/> attribute of the hard disk object
4958 defines the accessibility state of the respective hard disk storage
4959 (for example, the VDI file for IVirtualDiskImage objects). If the
4960 value of this attribute is <tt>false</tt> then some hard disk
4961 attributes may contain invalid or outdated values (for example, the
4962 virtual or the actual hard disk size) until a new accessibility
4963 check is done that returns <tt>true</tt> (see the attribute
4964 description for more details).
4965
4966 <note>
4967 Because of the possible slowness of the accessibility check,
4968 it is not implicitly performed upon the VirtualBox server startup
4969 (to prevent the application freeze). In partcular, this means that
4970 if you try to read hard disk properties that depend on the
4971 accessibility state without first reading the value of the
4972 <link to="#accessible"/> attribute and ensuring it's value is
4973 <tt>true</tt>, you will get wrong (zero) values.
4974 </note>
4975
4976 </desc>
4977
4978 <attribute name="id" type="uuid" readonly="yes">
4979 <desc>
4980
4981 UUID of the hard disk. For newly created hard disk objects,
4982 this value is a randomly generated UUID.
4983
4984 </desc>
4985 </attribute>
4986
4987 <attribute name="description" type="wstring">
4988 <desc>
4989
4990 Optional description of the hard disk. For a newly created hard
4991 disk, this value is <tt>null</tt>.
4992
4993 <note>For some storage types, reading this property is
4994 meaningless when <link to="#accessible"/> is <tt>false</tt>.
4995 Also, you cannot assign it a new value in this case.</note>
4996
4997 </desc>
4998 </attribute>
4999
5000 <attribute name="storageType" type="HardDiskStorageType" readonly="yes">
5001 <desc>
5002
5003 Storage type of this hard disk.
5004
5005 Storage type is defined when you open or create a new hard disk
5006 object.
5007
5008 </desc>
5009 </attribute>
5010
5011 <attribute name="location" type="wstring" readonly="yes">
5012 <desc>
5013
5014 Storage location of this hard disk. The returned string serves
5015 for informational purposes only. To access detailed information
5016 about the storage, query the appropriate storage-specific
5017 interface.
5018
5019 </desc>
5020 </attribute>
5021
5022 <attribute name="type" type="HardDiskType">
5023 <desc>
5024
5025 Type (behavior) of this hard disk. For a newly created or opened hard
5026 disk, this value is <link to="HardDiskType::NormalHardDisk"/>.
5027
5028 <note>
5029 In the current implementation, this property can be
5030 changed only on an unregistered hard disk object. This may be
5031 changed later.
5032 </note>
5033
5034 </desc>
5035 </attribute>
5036
5037 <attribute name="parent" type="IHardDisk" readonly="yes">
5038 <desc>
5039
5040 Parent of this hard disk (a hard disk this one is directly based
5041 on).
5042
5043 Only differencing hard disks have parents, so a <tt>null</tt>
5044 object is returned for a hard disk of any other type.
5045 </desc>
5046 </attribute>
5047
5048 <attribute name="children" type="IHardDiskCollection" readonly="yes">
5049 <desc>
5050
5051 Children of this hard disk (all differencing hard disks for
5052 those this one is a parent). An empty collection is returned, if
5053 this hard disk doesn't have any children.
5054
5055 </desc>
5056 </attribute>
5057
5058 <attribute name="root" type="IHardDisk" readonly="yes">
5059 <desc>
5060
5061 Root hard disk of this hard disk. If this hard disk is a
5062 differencing hard disk, its root hard disk is the first disk on
5063 the branch. For all other types of hard disks, this property
5064 returns the hard disk object itself (i.e. the same object you
5065 read this property on).
5066
5067 </desc>
5068 </attribute>
5069
5070 <attribute name="accessible" type="boolean" readonly="yes">
5071 <desc>
5072
5073 Whether the hard disk storage is currently accessible or not.
5074 The storage, for example, can be unaccessible if it doesn't exist
5075 or if it is placed on a network resource that is not available
5076 by the time this attribute is read.
5077
5078 In the current implementation, the value of this property is
5079 also <tt>false</tt> if this hard disk is attached to a running
5080 virtual machine.
5081
5082 The accessibility check is performed automatically every time
5083 this attribute is read. You should keep it in mind that this check
5084 may be slow and can block the calling thread for a long time (for
5085 example, if the network resourse where the hard disk storage is
5086 located is down).
5087
5088 The following attributes of the hard disk object are considered
5089 to be invalid when this attribute is <tt>false</tt>:
5090 <ul>
5091 <li><link to="#size"/></li>
5092 <li><link to="#actualSize"/></li>
5093 </ul>
5094 Individual hard disk storage type interfaces may define
5095 additional attributes that depend on the accessibility state.
5096 </desc>
5097 </attribute>
5098
5099 <attribute name="allAccessible" type="boolean" readonly="yes">
5100 <desc>
5101
5102 Whether the whole hard disk branch, starting from this image and
5103 going through its ancestors up to the root, is accessible or
5104 not.
5105
5106 This property makes sense only for differencing hard disks. For
5107 all other types of hard disks it returns the same value as
5108 <link to="#accessible"/>.
5109
5110 </desc>
5111 </attribute>
5112
5113 <attribute name="lastAccessError" type="wstring" readonly="yes">
5114 <desc>
5115
5116 String describing the reason of inaccessibility of this hard
5117 disk after the last call to <link to="#accessible"/> that
5118 returned <tt>false</tt>. A <tt>null</tt> value of this property
5119 means that the last accessibility check returned <tt>true</tt>.
5120
5121 </desc>
5122 </attribute>
5123
5124 <attribute name="size" type="unsigned long long" readonly="yes">
5125 <desc>
5126
5127 Logical size of this hard disk (in megabytes), as reported to the
5128 guest OS running inside the vurtual machine this disk is
5129 attached to. The logical size is defined when the hard disk is
5130 created.
5131
5132 <note>Reading this property on a differencing hard disk will
5133 return the size of its root hard disk.</note>
5134
5135 <note>Reading this property is meaningless when
5136 <link to="#accessible"/> is <tt>false</tt></note>
5137
5138 </desc>
5139 </attribute>
5140
5141 <attribute name="actualSize" type="unsigned long long" readonly="yes">
5142 <desc>
5143
5144 Physical size of the storage used to store hard disk data (in
5145 bytes). This size is usually less than the logical size of the
5146 hard disk, depending on the storage type and on the size
5147 optimization method used for that storage.
5148
5149 <note>Reading this property is meaningless when
5150 <link to="#accessible"/> is <tt>false</tt></note>
5151
5152 </desc>
5153 </attribute>
5154
5155 <attribute name="machineId" type="uuid" readonly="yes">
5156 <desc>
5157
5158 UUID of the machine this hard disk is attached to (or a
5159 <tt>null</tt> UUID if it is not attached).
5160
5161 <note>Immutable hard disks are never attached directly, so this
5162 attribute is always <tt>null</tt> in this case.</note>
5163
5164 </desc>
5165 </attribute>
5166
5167 <attribute name="snapshotId" type="uuid" readonly="yes">
5168 <desc>
5169
5170 UUID of the <link to="ISnapshot">snapshot</link> this hard disk
5171 is associated with (or <tt>null</tt> UUID if it is not
5172 associated with any snapshot).
5173
5174 <note>
5175 This attribute is always <tt>null</tt> if <link to="#machineId"/>
5176 is <tt>null</tt>.
5177 </note>
5178
5179 <note>
5180 Writethrough hard disks are always attached directly and cannot be
5181 involved when taking snapshots, so this attribute is meaningless and
5182 therefore always <tt>null</tt>.
5183 </note>
5184
5185 </desc>
5186 </attribute>
5187
5188 <method name="cloneToImage">
5189
5190 <desc>
5191
5192 Starts creating a clone of this hard disk. The cloned hard disk
5193 will use the specified Virtual Disk Image file as a storage and
5194 will contain exactly the same sector data as the hard disk being
5195 cloned, except that a new UUID for the clone will be randomly
5196 generated.
5197
5198 The specified image file path can be absolute (full path) or
5199 relative to the <link to="IVirtualBox::homeFolder"> VirtualBox
5200 home directory</link>. If only a file name without any path is
5201 given, the <link to="ISystemProperties::defaultVDIFolder">
5202 default VDI folder</link> will be used as a path to the image
5203 file.
5204
5205 It is an error to use the object returned in the @a image
5206 parameter until the returned @a progress object reports success.
5207
5208 <note>In the current implementation, only non-differencing hard
5209 disks can be cloned.</note>
5210
5211 </desc>
5212
5213 <param name="filePath" type="wstring" dir="in">
5214 <desc>Path to a file where to store the cloned hard disk.</desc>
5215 </param>
5216 <param name="image" type="IVirtualDiskImage" dir="out">
5217 <desc>Cloned hard disk object.</desc>
5218 </param>
5219 <param name="progress" type="IProgress" dir="return">
5220 <desc>Progress object to track the operation completion.</desc>
5221 </param>
5222
5223 </method>
5224
5225 </interface>
5226
5227 <!--
5228 // IVirtualDiskImage
5229 /////////////////////////////////////////////////////////////////////////
5230 -->
5231
5232 <interface
5233 name="IVirtualDiskImage" extends="$unknown"
5234 uuid="a8265b5a-0d20-4a46-a02f-65693a4e8239"
5235 wsmap="managed"
5236 >
5237
5238 <desc>
5239
5240 The IVirtualDiskImage interface represents <link to="IHardDisk">virtual
5241 hard disks</link> that use virtual disk image files to store hard disk
5242 data.
5243
5244 Hard disks using virtual disk images can be either opened using
5245 <link to="IVirtualBox::openVirtualDiskImage()"/> or created from
5246 scratch using <link to="IVirtualBox::createHardDisk()"/>.
5247
5248 Objects that support this interface also support the
5249 <link to="IHardDisk"/> interface.
5250
5251 When a new hard disk object is created from scatch, an image file for it
5252 is not automatically created. To do it, you need to specify a
5253 valid <link to="#filePath">file path</link>, and call
5254 <link to="#createFixedImage()"/> or <link to="#createDynamicImage()"/>.
5255 When it is done, the hard disk object can be registered by calling
5256 <link to="IVirtualBox::registerHardDisk()"/> and then
5257 <link to="IMachine::attachHardDisk()">attached</link> to
5258 virtual machines.
5259
5260 The <link to="IHardDisk::description">description</link> of the
5261 Virtual Disk Image is stored in the image file. For this reason,
5262 changing the value of this property requires the hard disk to be
5263 <link to="IHardDisk::accessible">accessible</link>. The description
5264 of a registered hard disk can be changed only if a virtual machine
5265 using it is not running.
5266
5267 </desc>
5268
5269 <attribute name="filePath" type="wstring">
5270 <desc>
5271
5272 Full file name of the virtual disk image of this hard disk. For
5273 newly created hard disk objects, this value is <tt>null</tt>.
5274
5275 When assigning a new path, it can be absolute (full path) or
5276 relative to the <link to="IVirtualBox::homeFolder"> VirtualBox
5277 home directory</link>. If only a file name without any path is
5278 given, the <link to="ISystemProperties::defaultVDIFolder">
5279 default VDI folder</link> will be used as a path to the image
5280 file.
5281
5282 When reading this propery, a full path is always returned.
5283
5284 <note>
5285 This property cannot be changed when <link to="#created"/>
5286 returns <tt>true</tt>. In this case, the specified file name can be
5287 absolute (full path) or relative to
5288 the <link to="IVirtualBox::homeFolder"> VirtualBox home
5289 directory</link>. If only a file name without any path is given,
5290 the <link to="ISystemProperties::defaultVDIFolder"> default VDI
5291 folder</link> will be used as a path to the image file.
5292 </note>
5293
5294 </desc>
5295 </attribute>
5296
5297 <attribute name="created" type="boolean" readonly="yes">
5298 <desc>
5299
5300 Whether the virual disk image is created or not. For newly
5301 created hard disk objects or after a successful invocation of
5302 <link to="#deleteImage()"/>, this value is <tt>false</tt> until
5303 <link to="#createFixedImage()"/> or <link
5304 to="#createDynamicImage()"/> is called.
5305
5306 </desc>
5307 </attribute>
5308
5309 <method name="createDynamicImage">
5310
5311 <desc>
5312
5313 Starts creating a dymically expanding hard disk image in the
5314 background. The previous image associated with this object, if
5315 any, must be deleted using <link to="#deleteImage"/>, otherwise
5316 the operation will fail.
5317
5318 <note>After the returned progress object reports that the
5319 operation is complete, this hard disk object can be
5320 <link to="IVirtualBox::registerHardDisk()">registered</link>
5321 within this VirtualBox installation.</note>
5322
5323 </desc>
5324
5325 <param name="size" type="unsigned long long" dir="in">
5326 <desc>Maximum logical size of the hard disk in megabytes.</desc>
5327 </param>
5328 <param name="progress" type="IProgress" dir="return">
5329 <desc>Progress object to track the operation completion.</desc>
5330 </param>
5331
5332 </method>
5333
5334 <method name="createFixedImage">
5335 <desc>
5336
5337 Starts creating a fixed-size hard disk image in the background. The
5338 previous image, if any, must be deleted using
5339 <link to="#deleteImage"/>, otherwise the operation will fail.
5340
5341 <note>
5342 After the returned progress object reports that the
5343 operation is complete, this hard disk object can be
5344 <link to="IVirtualBox::registerHardDisk()">registered</link>
5345 within this VirtualBox installation.
5346 </note>
5347
5348 </desc>
5349
5350 <param name="size" type="unsigned long long" dir="in">
5351 <desc>Logical size of the hard disk in megabytes.</desc>
5352 </param>
5353 <param name="progress" type="IProgress" dir="return">
5354 <desc>Progress object to track the operation completion.</desc>
5355 </param>
5356
5357 </method>
5358
5359 <method name="deleteImage">
5360 <desc>
5361
5362 Deletes the existing hard disk image. The hard disk must not be
5363 registered within this VirtualBox installation, otherwise the
5364 operation will fail.
5365
5366 <note>
5367 After this operation succeeds, it will be impossible to
5368 register the hard disk until the image file is created
5369 again.
5370 </note>
5371
5372 <note>
5373 This operation is valid only for non-differencing hard disks, after
5374 they are unregistered using
5375 <link to="IVirtualBox::unregisterHardDisk()"/>.
5376 </note>
5377
5378 </desc>
5379 </method>
5380
5381 </interface>
5382
5383 <!--
5384 // IISCSIHardDisk
5385 /////////////////////////////////////////////////////////////////////////
5386 -->
5387
5388 <interface
5389 name="IISCSIHardDisk" extends="$unknown"
5390 uuid="003f6ca9-3257-4ef9-99c9-c66ce44576cb"
5391 wsmap="managed"
5392 >
5393
5394 <desc>
5395
5396 The IISCSIHardDisk interface represents <link to="IHardDisk">virtual
5397 hard disks</link> that use the Internet SCSI (iSCSI) protocol to store
5398 hard disk data on remote machines.
5399
5400 iSCSI hard disks can be created using
5401 <link to="IVirtualBox::createHardDisk()"/>. When a new hard disk object
5402 is created, all its properties are uninitialized. After you assign some
5403 meaningful values to them, the hard disk object can be registered by
5404 calling <link to="IVirtualBox::registerHardDisk()"/> and
5405 then <link to="IMachine::attachHardDisk()">attached</link> to virtual
5406 machines.
5407
5408 Objects that support this interface also support the
5409 <link to="IHardDisk"/> interface.
5410
5411 The <link to="IHardDisk::description">description</link>
5412 of the iSCSI hard disk is stored in the VirtualBox
5413 configuration file, so it can be changed (at appropriate
5414 times) even when
5415 <link to="IHardDisk::accessible">accessible</link> returns
5416 <tt>false</tt>. However, the hard disk must not be
5417 attached to a running virtual machine.
5418
5419 <note>
5420 In the current imlementation, the type of all iSCSI hard disks
5421 is <link to="HardDiskType::WritethroughHardDisk">Writethrough</link>
5422 and cannot be changed.
5423 </note>
5424
5425 </desc>
5426
5427 <attribute name="server" type="wstring">
5428 <desc>
5429
5430 iSCSI Server name (either a host name or an IP address). For
5431 newly created hard disk objects, this value is <tt>null</tt>.
5432
5433 </desc>
5434 </attribute>
5435
5436 <attribute name="port" type="unsigned short">
5437 <desc>
5438
5439 iSCSI Server port. For newly created hard disk objects, this
5440 value is <tt>0</tt>, which means the default port.
5441
5442 </desc>
5443 </attribute>
5444
5445 <attribute name="target" type="wstring">
5446 <desc>
5447
5448 iSCSI target name. For newly created hard disk objects, this
5449 value is <tt>null</tt>.
5450
5451 </desc>
5452 </attribute>
5453
5454 <attribute name="lun" type="unsigned long long">
5455 <desc>
5456
5457 Logical unit number for this iSCSI disk. For newly created hard
5458 disk objects, this value is <tt>0</tt>.
5459
5460 </desc>
5461 </attribute>
5462
5463 <attribute name="userName" type="wstring">
5464 <desc>
5465
5466 User name for accessing this iSCSI disk. For newly created hard
5467 disk objects, this value is <tt>null</tt>.
5468
5469 </desc>
5470 </attribute>
5471
5472 <attribute name="password" type="wstring">
5473 <desc>
5474
5475 User password for accessing this iSCSI disk. For newly created
5476 hard disk objects, this value is <tt>null</tt>.
5477
5478 </desc>
5479 </attribute>
5480
5481 </interface>
5482
5483 <!--
5484 // IVMDKImage
5485 /////////////////////////////////////////////////////////////////////////
5486 -->
5487
5488 <interface
5489 name="IVMDKImage" extends="$unknown"
5490 uuid="178398f5-8559-4fee-979e-420af5b53eef"
5491 wsmap="managed"
5492 >
5493 <desc>
5494
5495 The IVMDKImage interface represents <link to="IHardDisk">virtual hard
5496 disks</link> that use VMware Virtual Machine Disk image files to store
5497 hard disk data.
5498
5499 Hard disks using VMDK images can be either opened using
5500 <link to="IVirtualBox::openHardDisk()"/> or created from
5501 scratch using <link to="IVirtualBox::createHardDisk()"/>.
5502
5503 Objects that support this interface also support the
5504 <link to="IHardDisk"/> interface.
5505
5506 When a new hard disk object is created from scatch, an image file for it
5507 is not automatically created. To do it, you need to specify a
5508 valid <link to="#filePath">file path</link>, and call
5509 <link to="#createFixedImage()"/> or <link to="#createDynamicImage()"/>.
5510 When it is done, the hard disk object can be registered by calling
5511 <link to="IVirtualBox::registerHardDisk()"/> and then
5512 <link to="IMachine::attachHardDisk()">attached</link> to
5513 virtual machines.
5514
5515 The <link to="IHardDisk::description">description</link>
5516 of the VMDK hard disk is stored in the VirtualBox
5517 configuration file, so it can be changed (at appropriate
5518 times) even when
5519 <link to="IHardDisk::accessible">accessible</link> returns
5520 <tt>false</tt>. However, the hard disk must not be
5521 attached to a running virtual machine.
5522
5523 <note>
5524 In the current imlementation, the type of all VMDK hard disks
5525 is <link to="HardDiskType::WritethroughHardDisk">Writethrough</link>
5526 and cannot be changed.
5527 </note>
5528
5529 </desc>
5530
5531 <attribute name="filePath" type="wstring">
5532 <desc>
5533
5534 Full file name of the VMDK image of this hard disk. For
5535 newly created hard disk objects, this value is <tt>null</tt>.
5536
5537 When assigning a new path, it can be absolute (full path) or relative
5538 to the <link to="IVirtualBox::homeFolder"> VirtualBox home
5539 directory</link>. If only a file name without any path is given,
5540 the <link to="ISystemProperties::defaultVDIFolder"> default VDI
5541 folder</link> will be used as a path to the image file.
5542
5543 When reading this propery, a full path is always returned.
5544
5545 <note>
5546 This property cannot be changed when <link to="#created"/>
5547 returns <tt>true</tt>. In this case, the specified file name can be
5548 absolute (full path) or relative to
5549 the <link to="IVirtualBox::homeFolder"> VirtualBox home
5550 directory</link>. If only a file name without any path is given,
5551 the <link to="ISystemProperties::defaultVDIFolder"> default VDI
5552 folder</link> will be used as a path to the image file.
5553 </note>
5554
5555 </desc>
5556 </attribute>
5557
5558 <attribute name="created" type="boolean" readonly="yes">
5559 <desc>
5560
5561 Whether the virual disk image is created or not. For newly created
5562 hard disk objects or after a successful invocation of
5563 <link to="#deleteImage()"/>, this value is <tt>false</tt> until
5564 <link to="#createFixedImage()"/> or <link to="#createDynamicImage()"/>
5565 is called.
5566
5567 </desc>
5568 </attribute>
5569
5570 <method name="createDynamicImage">
5571
5572 <desc>
5573
5574 Starts creating a dymically expanding hard disk image in the
5575 background. The previous image associated with this object, if
5576 any, must be deleted using <link to="#deleteImage"/>, otherwise
5577 the operation will fail.
5578
5579 <note>
5580 After the returned progress object reports that the
5581 operation is complete, this hard disk object can be
5582 <link to="IVirtualBox::registerHardDisk()">registered</link> within
5583 this VirtualBox installation.
5584 </note>
5585
5586 </desc>
5587
5588 <param name="size" type="unsigned long long" dir="in">
5589 <desc>Maximum logical size of the hard disk in megabytes.</desc>
5590 </param>
5591 <param name="progress" type="IProgress" dir="return">
5592 <desc>Progress object to track the operation completion.</desc>
5593 </param>
5594
5595 </method>
5596
5597 <method name="createFixedImage">
5598 <desc>
5599
5600 Starts creating a fixed-size hard disk image in the background. The
5601 previous image, if any, must be deleted using
5602 <link to="#deleteImage"/>, otherwise the operation will fail.
5603
5604 <note>
5605 After the returned progress object reports that the
5606 operation is complete, this hard disk object can be
5607 <link to="IVirtualBox::registerHardDisk()">registered</link> within
5608 this VirtualBox installation.
5609 </note>
5610
5611 </desc>
5612
5613 <param name="size" type="unsigned long long" dir="in">
5614 <desc>Logical size of the hard disk in megabytes.</desc>
5615 </param>
5616 <param name="progress" type="IProgress" dir="return">
5617 <desc>Progress object to track the operation completion.</desc>
5618 </param>
5619
5620 </method>
5621
5622 <method name="deleteImage">
5623 <desc>
5624
5625 Deletes the existing hard disk image. The hard disk must not be
5626 registered within this VirtualBox installation, otherwise the
5627 operation will fail.
5628
5629 <note>
5630 After this operation succeeds, it will be impossible to register the
5631 hard disk until the image file is created again.
5632 </note>
5633
5634 <note>
5635 This operation is valid only for non-differencing hard disks, after
5636 they are unregistered using
5637 <link to="IVirtualBox::unregisterHardDisk()"/>.
5638 </note>
5639
5640 </desc>
5641 </method>
5642
5643 </interface>
5644
5645 <!--
5646 // IDVDImage
5647 /////////////////////////////////////////////////////////////////////////
5648 -->
5649
5650 <enumerator
5651 name="IDVDImageEnumerator" type="IDVDImage"
5652 uuid="9BE77C8D-E1BE-4bf2-A67B-B4DD3D2B0F28"
5653 />
5654
5655 <collection
5656 name="IDVDImageCollection" type="IDVDImage"
5657 enumerator="IDVDImageEnumerator"
5658 uuid="AE7053FA-ADD2-4ea4-AFCF-24D5F8DDED64"
5659 readonly="yes"
5660 >
5661 <method name="findByPath">
5662 <desc>
5663 Searches this collection for a DVD image with the given disk path.
5664 <note>
5665 The method returns an error if the given name does not
5666 correspond to any DVD image in the collection.
5667 </note>
5668 </desc>
5669 <param name="path" type="wstring" dir="in">
5670 <desc>Name of the DVD image's file system location.</desc>
5671 </param>
5672 <param name="image" type="IDVDImage" dir="return">
5673 <desc>Found DVD image object</desc>
5674 </param>
5675 </method>
5676 </collection>
5677
5678 <interface
5679 name="IDVDImage" extends="$unknown"
5680 uuid="140FFF03-E479-4194-8562-ABC4F8171009"
5681 wsmap="managed"
5682 >
5683 <desc>
5684
5685 The IDVDImage interface represents a file containing the image
5686 of the DVD or CD disk.
5687
5688 <h3>Image Accessibility</h3>
5689
5690 The <link to="#accessible"/> attribute of the image object
5691 defines the accessibility state of the image file. If the
5692 value of this attribute is <tt>false</tt> then some image
5693 attributes may contain invalid or outdated values (for example, the
5694 the image file size) until a new accessibility
5695 check is done that returns <tt>true</tt>.
5696
5697 <note>
5698 Because of the possible slowness of the accessibility check,
5699 it is not implicitly performed upon the VirtualBox server startup
5700 (to prevent the application freeze). In partcular, this means that
5701 if you try to read image properties that depend on the
5702 accessibility state without first reading the value of the
5703 <link to="#accessible"/> attribute and ensuring it's value is
5704 <tt>true</tt>, you will get wrong (zero) values.
5705 </note>
5706
5707 </desc>
5708 <attribute name="id" type="uuid" readonly="yes">
5709 <desc>UUID of the CD/DVD image.</desc>
5710 </attribute>
5711
5712 <attribute name="filePath" type="wstring" readonly="yes">
5713 <desc>Full file name of the CD/DVD image.</desc>
5714 </attribute>
5715
5716 <attribute name="accessible" type="boolean" readonly="yes">
5717 <desc>
5718
5719 Whether the CD/DVD image is currently accessible or not.
5720 The image, for example, can be unaccessible if it is placed
5721 on a network share that is not available by the time
5722 this property is read.
5723
5724 The accessibility check is performed automatically every time
5725 this attribute is read. You should keep it in mind that this check
5726 may be slow and can block the calling thread for a long time (for
5727 example, if the network share where the image is located is down).
5728
5729 The following attributes of the image object are considered
5730 to be invalid when this attribute is <tt>false</tt>:
5731 <ul>
5732 <li><link to="#size"/></li>
5733 </ul>
5734
5735 </desc>
5736 </attribute>
5737
5738 <attribute name="size" type="unsigned long long" readonly="yes">
5739 <desc>Size of the ISO image in bytes.</desc>
5740 </attribute>
5741
5742 </interface>
5743
5744
5745 <!--
5746 // IDVDDrive
5747 /////////////////////////////////////////////////////////////////////////
5748 -->
5749
5750 <enum
5751 name="DriveState"
5752 uuid="cb7233b7-c519-42a5-8310-1830953cacbc"
5753 >
5754 <const name="InvalidDriveState" value="0"/>
5755 <const name="NotMounted" value="1"/>
5756 <const name="ImageMounted" value="2"/>
5757 <const name="HostDriveCaptured" value="3"/>
5758 </enum>
5759
5760 <interface
5761 name="IDVDDrive" extends="$unknown"
5762 uuid="d9bd101a-8079-4fb9-bad1-31bf32482b75"
5763 wsmap="managed"
5764 >
5765 <attribute name="state" type="DriveState" readonly="yes">
5766 <desc>Current drive state.</desc>
5767 </attribute>
5768
5769 <attribute name="passthrough" type="boolean">
5770 <desc>
5771 When a host drive is mounted and passthrough is enabled
5772 the guest will be able to directly send SCSI commands to
5773 the host drive. This enables the guest to use CD/DVD writers
5774 but is potentially dangerous.
5775 </desc>
5776 </attribute>
5777
5778 <method name="mountImage">
5779 <desc>Mounts the specified image.</desc>
5780 <param name="imageId" type="uuid" dir="in"/>
5781 </method>
5782
5783 <method name="captureHostDrive">
5784 <desc>Captures the specified host drive.</desc>
5785 <param name="drive" type="IHostDVDDrive" dir="in"/>
5786 </method>
5787
5788 <method name="unmount">
5789 <desc>Unmounts the currently mounted image/device.</desc>
5790 </method>
5791
5792 <method name="getImage">
5793 <desc>Gets the currently mounted image ID.</desc>
5794 <param name="image" type="IDVDImage" dir="return"/>
5795 </method>
5796
5797 <method name="getHostDrive">
5798 <desc>Gets the currently mounted image ID.</desc>
5799 <param name="drive" type="IHostDVDDrive" dir="return"/>
5800 </method>
5801
5802 </interface>
5803
5804 <!--
5805 // IFloppyImage
5806 /////////////////////////////////////////////////////////////////////////
5807 -->
5808
5809 <enumerator
5810 name="IFloppyImageEnumerator" type="IFloppyImage"
5811 uuid="902C4089-76B7-41f1-91E8-49A261A28A2C"
5812 />
5813
5814 <collection
5815 name="IFloppyImageCollection" type="IFloppyImage"
5816 enumerator="IFloppyImageEnumerator"
5817 uuid="327A8928-8572-446e-AD9A-18FE30E81F3F"
5818 readonly="yes">
5819 <method name="findByPath">
5820 <desc>
5821 Searches this collection for a floppy image with the given disk path.
5822 <note>
5823 The method returns an error if the given name does not
5824 correspond to any floppy image in the collection.
5825 </note>
5826 </desc>
5827 <param name="path" type="wstring" dir="in">
5828 <desc>Name of the floppy image's file system location.</desc>
5829 </param>
5830 <param name="image" type="IFloppyImage" dir="return">
5831 <desc>Found Floppy image object</desc>
5832 </param>
5833 </method>
5834 </collection>
5835
5836 <interface
5837 name="IFloppyImage" extends="$unknown"
5838 uuid="CC696755-EA98-4ffe-9DC5-C003047034AB"
5839 wsmap="managed"
5840 >
5841 <desc>
5842
5843 The IFloppyImage interface represents a file containing the image
5844 of a floppy disk.
5845
5846 <h3>Image Accessibility</h3>
5847
5848 The <link to="#accessible"/> attribute of the image object
5849 defines the accessibility state of the image file. If the
5850 value of this attribute is <tt>false</tt> then some image
5851 attributes may contain invalid or outdated values (for example, the
5852 the image file size) until a new accessibility
5853 check is done that returns <tt>true</tt>.
5854
5855 <note>
5856 Because of the possible slowness of the accessibility check,
5857 it is not implicitly performed upon the VirtualBox server startup
5858 (to prevent the application freeze). In partcular, this means that
5859 if you try to read image properties that depend on the
5860 accessibility state without first reading the value of the
5861 <link to="#accessible"/> attribute and ensuring it's value is
5862 <tt>true</tt>, you will get wrong (zero) values.
5863 </note>
5864
5865 </desc>
5866 <attribute name="id" type="uuid" readonly="yes">
5867 <desc>UUID of the floppy image.</desc>
5868 </attribute>
5869
5870 <attribute name="filePath" type="wstring" readonly="yes">
5871 <desc>Full file name of the floppy image.</desc>
5872 </attribute>
5873
5874 <attribute name="accessible" type="boolean" readonly="yes">
5875 <desc>
5876
5877 Whether the floppy image is currently accessible or not.
5878 The image, for example, can be unaccessible if it is placed
5879 on a network share that is not available by the time
5880 this property is read.
5881
5882 The accessibility check is performed automatically every time
5883 this attribute is read. You should keep it in mind that this check
5884 may be slow and can block the calling thread for a long time (for
5885 example, if the network share where the image is located is down).
5886
5887 The following attributes of the image object are considered
5888 to be invalid when this attribute is <tt>false</tt>:
5889 <ul>
5890 <li><link to="#size"/></li>
5891 </ul>
5892
5893 </desc>
5894 </attribute>
5895
5896 <attribute name="size" type="unsigned long" readonly="yes">
5897 <desc>Size of the floppy image in bytes.</desc>
5898 </attribute>
5899
5900 </interface>
5901
5902
5903 <!--
5904 // IFloppyDrive
5905 /////////////////////////////////////////////////////////////////////////
5906 -->
5907
5908 <interface
5909 name="IFloppyDrive" extends="$unknown"
5910 uuid="E9318F71-78D2-4b00-863C-B7CB0030A2D9"
5911 wsmap="managed"
5912 >
5913 <attribute name="enabled" type="boolean">
5914 <desc>
5915 Flag whether the floppy drive is enabled. If it is disabled,
5916 the floppy drive will not be reported to the guest.
5917 </desc>
5918 </attribute>
5919
5920 <attribute name="state" type="DriveState" readonly="yes">
5921 <desc>Current drive state.</desc>
5922 </attribute>
5923
5924 <method name="mountImage">
5925 <desc>Mounts the specified image.</desc>
5926 <param name="imageId" type="uuid" dir="in"/>
5927 </method>
5928
5929 <method name="captureHostDrive">
5930 <desc>Captures the specified host drive.</desc>
5931 <param name="drive" type="IHostFloppyDrive" dir="in"/>
5932 </method>
5933
5934 <method name="unmount">
5935 <desc>Unmounts the currently mounted image/device.</desc>
5936 </method>
5937
5938 <method name="getImage">
5939 <desc>Gets the currently mounted image ID.</desc>
5940 <param name="image" type="IFloppyImage" dir="return"/>
5941 </method>
5942
5943 <method name="getHostDrive">
5944 <desc>Gets the currently mounted image ID.</desc>
5945 <param name="drive" type="IHostFloppyDrive" dir="return"/>
5946 </method>
5947
5948 </interface>
5949
5950
5951 <!--
5952 // IKeyboard
5953 /////////////////////////////////////////////////////////////////////////
5954 -->
5955
5956 <interface
5957 name="IKeyboard" extends="$unknown"
5958 uuid="FD443EC1-000A-4F5B-9282-D72760A66916"
5959 wsmap="managed"
5960 >
5961 <method name="putScancode">
5962 <desc>Sends a scancode to the keyboard.</desc>
5963 <param name="scancode" type="long" dir="in"/>
5964 </method>
5965
5966 <method name="putScancodes">
5967 <desc>Sends an array of scancode to the keyboard.</desc>
5968 <param name="scancodes" type="long" dir="in" array="count"/>
5969 <param name="count" type="unsigned long" dir="in"/>
5970 <param name="codesStored" type="unsigned long" dir="return"/>
5971 </method>
5972
5973 <method name="putCAD">
5974 <desc>Sends the Ctrl-Alt-Del sequence to the keyboard.</desc>
5975 </method>
5976
5977 </interface>
5978
5979
5980 <!--
5981 // IMouse
5982 /////////////////////////////////////////////////////////////////////////
5983 -->
5984
5985 <enum
5986 name="MouseButtonState"
5987 uuid="03131722-2EC5-4173-9794-0DACA46673EF"
5988 >
5989 <const name="LeftButton" value="0x01"/>
5990 <const name="RightButton" value="0x02"/>
5991 <const name="MiddleButton" value="0x04"/>
5992 <const name="WheelUp" value="0x08"/>
5993 <const name="WheelDown" value="0x10"/>
5994 <const name="MouseStateMask" value="0x1F"/>
5995 </enum>
5996
5997 <interface
5998 name="IMouse" extends="$unknown"
5999 uuid="FD443EC1-0006-4F5B-9282-D72760A66916"
6000 wsmap="managed"
6001 >
6002 <desc>
6003 The IMouse interface represents a virtual mouse device.
6004 </desc>
6005
6006 <attribute name="absoluteSupported" type="boolean" readonly="yes">
6007 <desc>
6008 Whether the guest OS supports absolute mouse pointer positioning
6009 or not.
6010 <note>
6011 VirtualBox Guest Tools need to be installed to the guest OS
6012 in order to enable absolute mouse positioning support.
6013 You can use the <link to="IConsoleCallback::onMouseCapabilityChange"/>
6014 callback to be instantly informed about changes of this attribute
6015 during virtual machine execution.
6016 </note>
6017 <see><link to="#putMouseEventAbsolute"/></see>
6018 </desc>
6019 </attribute>
6020
6021 <method name="putMouseEvent">
6022 <desc>
6023 Initiates a mouse event using relative pointer movements
6024 along x and y axis.
6025 </desc>
6026
6027 <param name="dx" type="long" dir="in">
6028 <desc>
6029 Amout of pixels the mouse should move to the right.
6030 Negative values move the mouse to the left.
6031 </desc>
6032 </param>
6033 <param name="dy" type="long" dir="in">
6034 <desc>
6035 Amout of pixels the mouse should move downwards.
6036 Negative values move the mouse upwards.
6037 </desc>
6038 </param>
6039 <param name="dz" type="long" dir="in">
6040 <desc>
6041 Amount of mouse wheel moves.
6042 Positive values describe clockwize wheel rotations,
6043 negative values describe counterclockwise rotations.
6044 </desc>
6045 </param>
6046 <param name="buttonState" type="long" dir="in">
6047 <desc>
6048 The current state of mouse buttons. Every bit represents
6049 a mouse button as follows:
6050 <table>
6051 <tr><td>Bit 0 (<tt>0x01</tt>)</td><td>left mouse button</td></tr>
6052 <tr><td>Bit 1 (<tt>0x02</tt>)</td><td>right mouse button</td></tr>
6053 <tr><td>Bit 2 (<tt>0x04</tt>)</td><td>middle mouse button</td></tr>
6054 </table>
6055 A value of <tt>1</tt> means the corresponding button is pressed.
6056 otherwise it is released.
6057 </desc>
6058 </param>
6059 </method>
6060
6061 <method name="putMouseEventAbsolute">
6062 <desc>
6063 Positions the mouse pointer using absolute x and y coordinates.
6064 These coordinates are expressed in pixels and
6065 start from <tt>[1,1]</tt> which corresponds to the top left
6066 corner of the virtual display.
6067
6068 <note>
6069 This method will have effect only if absolute mouse
6070 positioning is supported by the guest OS.
6071 </note>
6072
6073 <see><link to="#absoluteSupported"/></see>
6074 </desc>
6075
6076 <param name="x" type="long" dir="in">
6077 <desc>
6078 X coordinate of the pointer in pixels, starting from <tt>1</tt>.
6079 </desc>
6080 </param>
6081 <param name="y" type="long" dir="in">
6082 <desc>
6083 Y coordinate of the pointer in pixels, starting from <tt>1</tt>.
6084 </desc>
6085 </param>
6086 <param name="dz" type="long" dir="in">
6087 <desc>
6088 Amout of mouse wheel moves.
6089 Positive values describe clockwize wheel rotations,
6090 negative values describe counterclockwise rotations.
6091 </desc>
6092 </param>
6093 <param name="buttonState" type="long" dir="in">
6094 <desc>
6095 The current state of mouse buttons. Every bit represents
6096 a mouse button as follows:
6097 <table>
6098 <tr><td>Bit 0 (<tt>0x01</tt>)</td><td>left mouse button</td></tr>
6099 <tr><td>Bit 1 (<tt>0x02</tt>)</td><td>right mouse button</td></tr>
6100 <tr><td>Bit 2 (<tt>0x04</tt>)</td><td>middle mouse button</td></tr>
6101 </table>
6102 A value of <tt>1</tt> means the corresponding button is pressed.
6103 otherwise it is released.
6104 </desc>
6105 </param>
6106 </method>
6107
6108 </interface>
6109
6110 <!--
6111 // IDisplay
6112 /////////////////////////////////////////////////////////////////////////
6113 -->
6114
6115 <enum
6116 name="FramebufferAccelerationOperation"
6117 uuid="f0e5ebbe-dc8e-4e2d-916e-53baa3844df8"
6118 >
6119 <const name="SolidFillAcceleration" value="1"/>
6120 <const name="ScreenCopyAcceleration" value="2"/>
6121 </enum>
6122
6123 <enum
6124 name="FramebufferPixelFormat"
6125 uuid="3bd87520-2b5f-4786-a891-f8c6aeb19a1f"
6126 >
6127 <desc>
6128 Format of the virtual video card's memory buffer. See
6129 <link to="IFramebuffer::requestResize()"/> for more information.
6130 </desc>
6131 <const name="PixelFormatOpaque" value="0"/>
6132 <const name="PixelFormatRGB16" value="1"/>
6133 <const name="PixelFormatRGB24" value="2"/>
6134 <const name="PixelFormatRGB32" value="3"/>
6135 </enum>
6136
6137 <interface
6138 name="IFramebuffer" extends="$unknown"
6139 uuid="450058a4-fef0-4987-81c2-7b89bfc2242f"
6140 wsmap="suppress"
6141 >
6142 <attribute name="address" type="octet" mod="ptr" readonly="yes">
6143 <desc>Address of the start byte of the framebuffer.</desc>
6144 </attribute>
6145
6146 <attribute name="width" type="unsigned long" readonly="yes">
6147 <desc>Framebuffer width.</desc>
6148 </attribute>
6149
6150 <attribute name="height" type="unsigned long" readonly="yes">
6151 <desc>Framebuffer height.</desc>
6152 </attribute>
6153
6154 <attribute name="colorDepth" type="unsigned long" readonly="yes">
6155 <desc>Framebuffer color depth.</desc>
6156 </attribute>
6157
6158 <attribute name="lineSize" type="unsigned long" readonly="yes">
6159 <desc>framebuffer scan line size in bytes.</desc>
6160 </attribute>
6161
6162 <attribute name="pixelFormat" type="FramebufferPixelFormat" readonly="yes">
6163 <desc>Framebuffer pixel format.</desc>
6164 </attribute>
6165
6166 <attribute name="heightReduction" type="unsigned long" readonly="yes">
6167 <desc>
6168 Hint from the framebuffer about how much of the standard
6169 screen height it wants to use for itself. This information is
6170 exposed to the guest through the VESA BIOS and VMMDev interface
6171 so that it can use it for determining its video mode table. It
6172 is not guaranteed that the guest respects the value.
6173 </desc>
6174 </attribute>
6175
6176 <attribute name="overlay" type="IFramebufferOverlay" readonly="yes">
6177 <desc>
6178 An alpha-blended overlay which is superposed over the framebuffer.
6179 The initial purpose is to allow the display of icons providing
6180 information about the VM state, including disk activity, in front
6181 ends which do not have other means of doing that. The overlay is
6182 designed to controlled exclusively by IDisplay. It has no locking
6183 of its own, and any changes made to it are not guaranteed to be
6184 visible until the affected portion of IFramebuffer is updated. The
6185 overlay can be created lazily the first time it is requested. This
6186 attribute can also return NULL to signal that the overlay is not
6187 implemented.
6188 </desc>
6189 </attribute>
6190
6191 <method name="lock">
6192 <desc>
6193 Locks the framebuffer.
6194 Gets called by the IDisplay object where this framebuffer is
6195 bound to.
6196 </desc>
6197 </method>
6198
6199 <method name="unlock">
6200 <desc>
6201 Unlocks the framebuffer.
6202 Gets called by the IDisplay object where this framebuffer is
6203 bound to.
6204 </desc>
6205 </method>
6206
6207 <method name="notifyUpdate">
6208 <desc>
6209 Informs about an update.
6210 Gets called by the display object where this buffer is
6211 registered.
6212 </desc>
6213 <param name="x" type="unsigned long" dir="in"/>
6214 <param name="y" type="unsigned long" dir="in"/>
6215 <param name="width" type="unsigned long" dir="in"/>
6216 <param name="height" type="unsigned long" dir="in"/>
6217 <param name="finished" type="boolean" dir="return"/>
6218 </method>
6219
6220 <method name="requestResize">
6221 <desc>
6222 Requests a size and pixel format change.
6223
6224 There are two strategies of working with the video buffer of the
6225 virtual machine. The first strategy implies that the IFramebuffer
6226 implementation allocates a memory buffer for the requested display mode
6227 and provides it to the virtual machine. In the second strategy, the
6228 IFramebuffer implementation uses the memory buffer allocated and owned
6229 by the virtual machine. The second strategy is usually faster because
6230 the implementation gets a pointer to the virtual machine video card's
6231 memory which it can directly use for visualising the contents of the
6232 virtual display, as opposed to the first strategy where the video
6233 card's memory contents are copied to the memory buffer provided by the
6234 implementation every time a display update occurs.
6235
6236 It is important to note that the second strategy is really fast only
6237 when the implementation uses the provided video buffer directly, for
6238 example, by blitting it to the window representing the virtual
6239 machine's display, which saves at least one copy operation comparing
6240 to the first strategy. However, using the video card's memory directly
6241 is not always possible: for example, the format and the color depth of
6242 the window representing the virtual display may differ from the format
6243 or the color depth of the virtual video buffer, or the format of the
6244 latter may be unknown or unsupported. In this case, the first strategy
6245 (that is always available) is used as a fallback: when the virtual
6246 video card's memory contents are copied to the implementation-provided
6247 memory buffer, color and format conversion is done authomatically by
6248 the underlying code.
6249
6250 The @a pixelFormat and @a VRAM parameters define whether the second
6251 strategy is available or not. If @a pixelFormat is
6252 <link to="PixelFormat::PixelFormatOpaque"/> (which usually indicates a
6253 text mode of the virtual display) or if @a VRAM is <tt>null</tt>
6254 (which means a non-linear graphical mode), then direct access to the
6255 virtual card's video memory buffer is not available, the @a VRAM
6256 parameter must be ignored and the implementation must use the first
6257 strategy. In all other cases, @a pixelFormat together with @a lineSize
6258 define the format of the video memory buffer pointed to by the @a VRAM
6259 parameter and the implementation is free to choose which strategy to
6260 use. To indicate that this framebuffer uses the second strategy, its
6261 implementation of the <link to="#address()"/> method must return the
6262 same address as it gets in the @a VRAM parameter of this method;
6263 otherwise it is assumed that the first strategy is chosen.
6264
6265 The @a width and @a height parameters represent the size of the
6266 requested display mode in both cases. In case of the first strategy,
6267 the provided memory buffer should be enough to store data of the given
6268 display mode. In case of the second strategy, it is guaranteed that
6269 the given @a VRAM buffer contains enough space to represent the
6270 display mode of the given size. Note that this framebuffer's
6271 <link to="#width()"/> and <link to="#height()"/> properties must
6272 return exactly the same values as passed to this method after the
6273 resize is completed (see below).
6274
6275 The @a finished output parameter determines if the implementation has
6276 finished resizing the framebuffer or not. If, for some reason, the
6277 resize cannot be finished immediately during this call, @a finished
6278 must be set to @c false, and the implementation must call
6279 <link to="IDisplay::resizeCompleted()"/> after it has returned from
6280 this method as soon as possible. If @a finished is @c false, the
6281 machine will not call any framebuffer methods until
6282 <link to="IDisplay::resizeCompleted()"/> is called.
6283
6284 Note that if the second strategy is choosen, the
6285 <link to="#colorDepth()"/>, <link to="#lineSize()"/> and
6286 <link to="#pixelFormat()"/> properties of this framebuffer must return
6287 exactly the same values as specified in the parameters of this method
6288 after the resize is completed. In case of the first strategy these
6289 properties must return values describing the format of the
6290 implementation's own memory buffer <link to="#address()"/> points
6291 to. Note also that the <link to="#colorDepth()"/> value must always
6292 correlate with <link to="#pixelFormat()"/> when the latter returns any
6293 value other than <link to="PixelFormat::PixelFormatOpaque"/>.
6294
6295 <note>
6296 This method is called by the IDisplay object under the
6297 <link to="#lock()"/> provided by this IFramebuffer
6298 implementation. If this method returns @c false in @a finished, then
6299 this lock is not released until
6300 <link to="IDisplay::resizeCompleted()"/> is called.
6301 </note>
6302 </desc>
6303 <param name="screenId" type="unsigned long" dir="in">
6304 <desc>
6305 Logical screen number. Must be used in the corresponding call to
6306 <link to="IDisplay::resizeCompleted()"/> if this call is made.
6307 </desc>
6308 </param>
6309 <param name="pixelFormat" type="FramebufferPixelFormat" dir="in">
6310 <desc>Pixel format of the memory buffer pointed to by @a VRAM.</desc>
6311 </param>
6312 <param name="VRAM" type="octet" mod="ptr" dir="in">
6313 <desc>Pointer to the virtual video card's VRAM (may be @c null).</desc>
6314 </param>
6315 <param name="lineSize" type="unsigned long" dir="in">
6316 <desc>Size of one scan line, in bytes.</desc>
6317 </param>
6318 <param name="width" type="unsigned long" dir="in">
6319 <desc>Width of the guest display, in pixels.</desc>
6320 </param>
6321 <param name="height" type="unsigned long" dir="in">
6322 <desc>Height of the guest display, in pixels.</desc>
6323 </param>
6324 <param name="finished" type="boolean" dir="return">
6325 <desc>
6326 Can the VM start using the new framebuffer immediately
6327 after this method returns or it should wait for
6328 <link to="IDisplay::resizeCompleted()"/>.
6329 </desc>
6330 </param>
6331 </method>
6332
6333 <method name="operationSupported">
6334 <desc>
6335 Returns whether the given acceleration operation is supported
6336 by the IFramebuffer implementation. If not, the display object
6337 will not attempt to call the corresponding IFramebuffer entry
6338 point. Even if an operation is indicated to supported, the
6339 IFramebuffer implementation always has the option to return non
6340 supported from the corresponding acceleration method in which
6341 case the operation will be performed by the display engine. This
6342 allows for reduced IFramebuffer implementation complexity where
6343 only common cases are handled.
6344 </desc>
6345 <param name="operation" type="FramebufferAccelerationOperation" dir="in"/>
6346 <param name="supported" type="boolean" dir="return"/>
6347 </method>
6348
6349 <method name="videoModeSupported">
6350 <desc>
6351 Returns whether the framebuffer implementation is willing to
6352 support a given video mode. In case it is not able to render
6353 the video mode (or for some reason not willing), it should
6354 return false. Usually this method is called when the guest
6355 asks the VMM device whether a given video mode is supported
6356 so the information returned is directly exposed to the guest.
6357 It is important that this method returns very quickly.
6358 </desc>
6359 <param name="width" type="unsigned long" dir="in"/>
6360 <param name="height" type="unsigned long" dir="in"/>
6361 <param name="bpp" type="unsigned long" dir="in"/>
6362 <param name="supported" type="boolean" dir="return"/>
6363 </method>
6364
6365 <method name="solidFill">
6366 <desc>
6367 Fills the specified rectangle on screen with a solid color.
6368 </desc>
6369 <param name="x" type="unsigned long" dir="in"/>
6370 <param name="y" type="unsigned long" dir="in"/>
6371 <param name="width" type="unsigned long" dir="in"/>
6372 <param name="height" type="unsigned long" dir="in"/>
6373 <param name="color" type="unsigned long" dir="in"/>
6374 <param name="handled" type="boolean" dir="return"/>
6375 </method>
6376
6377 <method name="copyScreenBits">
6378 <desc>
6379 Copies specified rectangle on the screen.
6380 </desc>
6381 <param name="xDst" type="unsigned long" dir="in"/>
6382 <param name="yDst" type="unsigned long" dir="in"/>
6383 <param name="xSrc" type="unsigned long" dir="in"/>
6384 <param name="ySrc" type="unsigned long" dir="in"/>
6385 <param name="width" type="unsigned long" dir="in"/>
6386 <param name="height" type="unsigned long" dir="in"/>
6387 <param name="handled" type="boolean" dir="return"/>
6388 </method>
6389
6390 <method name="getVisibleRegion">
6391 <desc>
6392 Returns the visible region of this framebuffer.
6393
6394 If the @a rectangles parameter is <tt>NULL</tt> then the value of the
6395 @a count parameter is ignored and the number of elements necessary to
6396 describe the current visible region is returned in @a countCopied.
6397
6398 If @a rectangles is not <tt>NULL</tt> but @a count is less
6399 than the required number of elements to store region data, the method
6400 will report a failure. If @a count is equal or greater than the
6401 required number of elements, then the actual number of elements copied
6402 to the provided array will be returned in @a countCopied.
6403
6404 <note>
6405 The address of the provided array must be in the process space of
6406 this IFramebuffer object.
6407 </note>
6408 </desc>
6409 <param name="rectangles" type="octet" mod="ptr" dir="in">
6410 <desc>Pointer to the <tt>RTRECT</tt> array to receive region data.</desc>
6411 </param>
6412 <param name="count" type="unsigned long" dir="in">
6413 <desc>Number of <tt>RTRECT</tt> elements in the @a rectangles array.</desc>
6414 </param>
6415 <param name="countCopied" type="unsigned long" dir="return">
6416 <desc>Number of elements copied to the @a rectangles array.</desc>
6417 </param>
6418 </method>
6419
6420 <method name="setVisibleRegion">
6421 <desc>
6422 Suggests a new visible region to this framebuffer. This region
6423 represents the area of the VM display which is a union of regions of
6424 all top-level windows of the guest operating system running inside the
6425 VM (if the Guest Additions for this system support this
6426 functionality). This information may be used by the frontends to
6427 implement the seamless desktop integration feature.
6428
6429 <note>
6430 The address of the provided array must be in the process space of
6431 this IFramebuffer object.
6432 </note>
6433 <note>
6434 The IFramebuffer implementation must make a copy of the provided
6435 array of rectangles.
6436 </note>
6437 </desc>
6438 <param name="rectangles" type="octet" mod="ptr" dir="in">
6439 <desc>Pointer to the <tt>RTRECT</tt> array.</desc>
6440 </param>
6441 <param name="count" type="unsigned long" dir="in">
6442 <desc>Number of <tt>RTRECT</tt> elements in the @a rectangles array.</desc>
6443 </param>
6444 </method>
6445
6446 </interface>
6447
6448 <interface
6449 name="IFramebufferOverlay" extends="IFrameBuffer"
6450 uuid="0bcc1c7e-e415-47d2-bfdb-e4c705fb0f47"
6451 wsmap="suppress"
6452 >
6453 <desc>
6454 An alpha blended overlay for displaying status icons above an IFramebuffer.
6455 It is always created not visible, so that it must be explicitly shown. It
6456 only covers a portion of the IFramebuffer, determined by its width, height
6457 and co-ordinates. It is always in packed pixel little-endian 32bit ARGB (in
6458 that order) format, and may be written to directly. Do re-read the width
6459 though, after setting it, as it may be adjusted (increased) to make it more
6460 suitable for the front end.
6461 </desc>
6462 <attribute name="x" type="unsigned long" readonly="yes">
6463 <desc>X position of the overlay, relative to the framebuffer.</desc>
6464 </attribute>
6465
6466 <attribute name="y" type="unsigned long" readonly="yes">
6467 <desc>Y position of the overlay, relative to the framebuffer.</desc>
6468 </attribute>
6469
6470 <attribute name="visible" type="boolean" readonly="no">
6471 <desc>
6472 Whether the overlay is currently visible.
6473 </desc>
6474 </attribute>
6475
6476 <attribute name="alpha" type="unsigned long" readonly="no">
6477 <desc>
6478 The global alpha value for the overlay. This may or may not be
6479 supported by a given front end.
6480 </desc>
6481 </attribute>
6482
6483 <method name="move">
6484 <desc>
6485 Changes the overlay's position relative to the IFramebuffer.
6486 </desc>
6487 <param name="x" type="unsigned long" dir="in"/>
6488 <param name="y" type="unsigned long" dir="in"/>
6489 </method>
6490
6491 </interface>
6492
6493 <interface
6494 name="IDisplay" extends="$unknown"
6495 uuid="e740a435-88d1-4f14-b9ca-a1b30e2c5038"
6496 wsmap="suppress"
6497 >
6498 <attribute name="width" type="unsigned long" readonly="yes">
6499 <desc>Current display width.</desc>
6500 </attribute>
6501
6502 <attribute name="height" type="unsigned long" readonly="yes">
6503 <desc>Current display height.</desc>
6504 </attribute>
6505
6506 <attribute name="colorDepth" type="unsigned long" readonly="yes">
6507 <desc>
6508 Current guest display color depth. Note that this may differ
6509 from <link to="IFramebuffer::colorDepth">IFramebuffer::colorDepth</link>.
6510 </desc>
6511 </attribute>
6512
6513 <method name="setupInternalFramebuffer">
6514 <desc>
6515 Prepares an internally managed framebuffer.
6516 </desc>
6517 <param name="depth" type="unsigned long" dir="in"/>
6518 </method>
6519
6520 <method name="lockFramebuffer">
6521 <desc>
6522 Requests access to the internal framebuffer.
6523 </desc>
6524 <param name="address" type="octet" mod="ptr" dir="return"/>
6525 </method>
6526
6527 <method name="unlockFramebuffer">
6528 <desc>
6529 Releases access to the internal framebuffer.
6530 </desc>
6531 </method>
6532
6533 <method name="registerExternalFramebuffer">
6534 <desc>
6535 Registers an external framebuffer.
6536 </desc>
6537 <param name="framebuffer" type="IFramebuffer" dir="in"/>
6538 </method>
6539
6540 <method name="setFramebuffer">
6541 <desc>
6542 Sets the framebuffer for given screen.
6543 </desc>
6544 <param name="screenId" type="unsigned long" dir="in"/>
6545 <param name="framebuffer" type="IFramebuffer" dir="in"/>
6546 </method>
6547
6548 <method name="getFramebuffer">
6549 <desc>
6550 Queries the framebuffer for given screen.
6551 </desc>
6552 <param name="screenId" type="unsigned long" dir="in"/>
6553 <param name="framebuffer" type="IFramebuffer" dir="out"/>
6554 <param name="xOrigin" type="long" dir="out"/>
6555 <param name="yOrigin" type="long" dir="out"/>
6556 </method>
6557
6558 <method name="setVideoModeHint">
6559 <desc>
6560 Asks VirtualBox to request the given video mode from
6561 the guest. This is just a hint and it cannot be guaranteed
6562 that the requested resolution will be used. Guest Additions
6563 are required for the request to be seen by guests. The caller
6564 should issue the request and wait for a resolution change and
6565 after a timeout retry.
6566 Specifying "0" for either width and height or the color depth
6567 means that the dimensions or color depth should not be changed.
6568 It is possible to specify the number of the guest display
6569 that has to be resized, if guest supports multimonitor configuration.
6570 The display value 0 means primary display, 1 - first secondary.
6571 </desc>
6572 <param name="width" type="unsigned long" dir="in"/>
6573 <param name="height" type="unsigned long" dir="in"/>
6574 <param name="colorDepth" type="unsigned long" dir="in"/>
6575 <param name="display" type="unsigned long" dir="in"/>
6576 </method>
6577
6578 <method name="takeScreenShot">
6579 <desc>
6580 Takes a screen shot of the requested size and copies it to the
6581 32-bpp buffer allocated by the caller.
6582 </desc>
6583 <param name="address" type="octet" mod="ptr" dir="in"/>
6584 <param name="width" type="unsigned long" dir="in"/>
6585 <param name="height" type="unsigned long" dir="in"/>
6586 </method>
6587
6588 <method name="drawToScreen">
6589 <desc>
6590 Draws a 32-bpp image of the specified size from the given buffer
6591 to the given point on the VM display.
6592 </desc>
6593 <param name="address" type="octet" mod="ptr" dir="in"/>
6594 <param name="x" type="unsigned long" dir="in"/>
6595 <param name="y" type="unsigned long" dir="in"/>
6596 <param name="width" type="unsigned long" dir="in"/>
6597 <param name="height" type="unsigned long" dir="in"/>
6598 </method>
6599
6600 <method name="invalidateAndUpdate">
6601 <desc>
6602 Does a full invalidation of the VM display and instructs the VM
6603 to update it.
6604 </desc>
6605 </method>
6606
6607 <method name="resizeCompleted">
6608 <desc>
6609 Signals that a framebuffer has completed the resize operation.
6610 </desc>
6611 <param name="screenId" type="unsigned long" dir="in"/>
6612 </method>
6613
6614 <method name="updateCompleted">
6615 <desc>
6616 Signals that a framebuffer has completed the update operation.
6617 </desc>
6618 </method>
6619
6620 </interface>
6621
6622 <!--
6623 // INetworkAdapter
6624 /////////////////////////////////////////////////////////////////////////
6625 -->
6626
6627 <enum
6628 name="NetworkAttachmentType"
6629 uuid="8730d899-d036-4925-bc63-e58f3486f4bf"
6630 >
6631 <const name="NoNetworkAttachment" value="0"/>
6632 <const name="NATNetworkAttachment" value="1"/>
6633 <const name="HostInterfaceNetworkAttachment" value="2"/>
6634 <const name="InternalNetworkAttachment" value="3"/>
6635 </enum>
6636
6637 <enum
6638 name="NetworkAdapterType"
6639 uuid="156b17b9-5d61-4d54-be90-62e37dda848d"
6640 >
6641 <const name="InvalidNetworkAdapterType" value="0"/>
6642 <const name="NetworkAdapterAm79C970A" value="1"/>
6643 <const name="NetworkAdapterAm79C973" value="2"/>
6644 </enum>
6645
6646 <interface
6647 name="INetworkAdapter" extends="$unknown"
6648 uuid="78dfc978-ecb0-44ee-8b20-54549dd4539e"
6649 wsmap="managed"
6650 >
6651 <attribute name="adapterType" type="NetworkAdapterType">
6652 <desc>
6653 Type of the virtual network adapter. Depending on this value,
6654 VirtualBox will provide a different virtual network hardware
6655 to the guest.
6656 </desc>
6657 </attribute>
6658
6659 <attribute name="slot" type="unsigned long" readonly="yes">
6660 <desc>
6661 Slot number this adapter is plugged into. Corresponds to
6662 the value you pass to <link to="IMachine::getNetworkAdapter"/>
6663 to obtain this instance.
6664 </desc>
6665 </attribute>
6666
6667 <attribute name="enabled" type="boolean">
6668 <desc>
6669 Flag whether the network adapter is present in the
6670 guest system. If disabled, the virtual guest hardware will
6671 not contain this network adapter. Can only be changed when
6672 the VM is not running.
6673 </desc>
6674 </attribute>
6675
6676 <attribute name="MACAddress" type="wstring">
6677 <desc>
6678 Ethernet MAC address of the adapter, 12 hexadecimal characters. When setting
6679 it to NULL, VirtualBox will generate a unique MAC address.
6680 </desc>
6681 </attribute>
6682
6683 <attribute name="attachmentType" type="NetworkAttachmentType" readonly="yes"/>
6684
6685 <attribute name="hostInterface" type="wstring">
6686 <desc>
6687 Name of the Host Network Interface that is currently in use. NULL will be returned
6688 if no device has been allocated. On Linux, setting this refers to a permanent TAP
6689 device. However, a file descriptor has precedence over the interface name on Linux.
6690 Note that when VBox allocates a TAP device, this property will not be set, i.e. the
6691 interface name would have to be determined using the file descriptor and /proc/self/fd.
6692 </desc>
6693 </attribute>
6694
6695<if target="xpidl">
6696 <attribute name="TAPFileDescriptor" type="long">
6697 <desc>
6698 File descriptor of the TAP device. It can either be setup by the caller
6699 which has to supply an existing valid file handle allocated in the parent
6700 process of the VM process or allocated by VirtualBox. The value is -1 if it
6701 has not been defined. This property is non persistent, i.e. it will not be
6702 stored in the VM's configuration data and thus has to be set at each startup.
6703 </desc>
6704 </attribute>
6705 <attribute name="TAPSetupApplication" type="wstring">
6706 <desc>
6707 Application to start to configure the TAP device.
6708 It is being passed two parameters, 1) the file handle (as ascii),
6709 2) the TAP device name if it is available.
6710 </desc>
6711 </attribute>
6712 <attribute name="TAPTerminateApplication" type="wstring">
6713 <desc>
6714 Application to start before closing a TAP device.
6715 It is being passed two parameters, 1) the file handle (as ascii),
6716 2) the TAP device name if it is available.
6717 </desc>
6718 </attribute>
6719</if>
6720
6721 <attribute name="internalNetwork" type="wstring">
6722 <desc>
6723 Name of the internal network the VM is attached to.
6724 </desc>
6725 </attribute>
6726
6727 <attribute name="cableConnected" type="boolean">
6728 <desc>
6729 Flag whether the adapter reports the cable as connected or not.
6730 It can be used to report offline situations to a VM.
6731 </desc>
6732 </attribute>
6733
6734 <attribute name="traceEnabled" type="boolean">
6735 <desc>
6736 Flag whether network traffic from/to the network card should be traced.
6737 Can only be toggled when the VM is turned off.
6738 </desc>
6739 </attribute>
6740
6741 <attribute name="traceFile" type="wstring">
6742 <desc>
6743 Filename where a network trace will be stored. If not set, VBox-pid.pcap
6744 will be used.
6745 </desc>
6746 </attribute>
6747
6748 <method name="attachToNAT">
6749 <desc>
6750 Attach the network adapter to the Network Address Translation (NAT) interface.
6751 </desc>
6752 </method>
6753
6754 <method name="attachToHostInterface">
6755 <desc>
6756 Attach the network adapter to a host interface. On Linux, the TAP
6757 setup application will be executed if configured and unless a device
6758 name and/or file descriptor has been set, a new TAP interface will be
6759 created.
6760 </desc>
6761 </method>
6762
6763 <method name="attachToInternalNetwork">
6764 <desc>
6765 Attach the network adapter to an internal network.
6766 </desc>
6767 </method>
6768
6769 <method name="detach">
6770 <desc>
6771 Detach the network adapter
6772 </desc>
6773 </method>
6774 </interface>
6775
6776
6777 <!--
6778 // ISerialPort
6779 /////////////////////////////////////////////////////////////////////////
6780 -->
6781
6782 <interface
6783 name="ISerialPort" extends="$unknown"
6784 uuid="a5ab0989-0ca9-4d5e-b565-f7739b92bb0c"
6785 wsmap="managed"
6786 >
6787
6788 <attribute name="slot" type="unsigned long" readonly="yes">
6789 <desc>
6790 Slot number this serial port is plugged into. Corresponds to
6791 the value you pass to <link to="IMachine::getSerialPort"/>
6792 to obtain this instance.
6793 </desc>
6794 </attribute>
6795
6796 <attribute name="enabled" type="boolean">
6797 <desc>
6798 Flag whether the serial port is enabled. If it is disabled,
6799 the serial port will not be reported to the guest.
6800 </desc>
6801 </attribute>
6802
6803 <attribute name="IOBase" type="unsigned long">
6804 <desc>Gets the I/O base of the serial port.</desc>
6805 </attribute>
6806
6807 <attribute name="IRQ" type="unsigned long">
6808 <desc>Gets the IRQ of the serial port.</desc>
6809 </attribute>
6810
6811 <attribute name="pipe" type="wstring">
6812 <desc>Gets the name of the host pipe connected to the serial port.</desc>
6813 </attribute>
6814
6815 <attribute name="server" type="boolean">
6816 <desc>Flag whether this serial port acts as a server or a client.</desc>
6817 </attribute>
6818
6819 </interface>
6820
6821
6822 <!--
6823 // IMachineDebugger
6824 /////////////////////////////////////////////////////////////////////////
6825 -->
6826
6827 <interface
6828 name="IMachineDebugger" extends="$unknown"
6829 uuid="358b05cd-6d43-42b9-9c2b-75d466a58cfc"
6830 wsmap="suppress"
6831 >
6832 <method name="resetStats">
6833 <desc>
6834 Reset VM statistics.
6835 </desc>
6836 </method>
6837
6838 <method name="dumpStats">
6839 <desc>
6840 Dumps VM statistics.
6841 </desc>
6842 </method>
6843
6844 <attribute name="singlestep" type="boolean">
6845 <desc>Switch for enabling singlestepping.</desc>
6846 </attribute>
6847
6848 <attribute name="recompileUser" type="boolean">
6849 <desc>Switch for forcing code recompilation for user mode code.</desc>
6850 </attribute>
6851
6852 <attribute name="recompileSupervisor" type="boolean">
6853 <desc>Switch for forcing code recompilation for supervisor mode code.</desc>
6854 </attribute>
6855
6856 <attribute name="PATMEnabled" type="boolean">
6857 <desc>Switch for enabling and disabling the PATM component.</desc>
6858 </attribute>
6859
6860 <attribute name="CSAMEnabled" type="boolean">
6861 <desc>Switch for enabling and disabling the CSAM component.</desc>
6862 </attribute>
6863
6864 <attribute name="logEnabled" type="boolean">
6865 <desc>Switch for enabling and disabling logging.</desc>
6866 </attribute>
6867
6868 <attribute name="HWVirtExEnabled" type="boolean" readonly="yes">
6869 <desc>
6870 Flag indicating whether the VM is currently making use of CPU hardware
6871 virtualization extensions
6872 </desc>
6873 </attribute>
6874
6875 <attribute name="virtualTimeRate" type="unsigned long">
6876 <desc>
6877 The rate at which the virtual time runs expressed as a percentage.
6878 The accepted range is 2% to 20000%.
6879 </desc>
6880 </attribute>
6881
6882 <!-- @todo method for setting log flags, groups and destination! -->
6883
6884 <attribute name="VM" type="unsigned long long" readonly="yes">
6885 <desc>
6886 Gets the VM handle. This is only for internal use while
6887 we carve the details of this interface.
6888 </desc>
6889 </attribute>
6890
6891 </interface>
6892
6893 <!--
6894 // IUSBController
6895 /////////////////////////////////////////////////////////////////////////
6896 -->
6897
6898 <interface
6899 name="IUSBController" extends="$unknown"
6900 uuid="bf21872c-265c-41a9-99d4-ce0dcdc34a91"
6901 wsmap="managed"
6902 >
6903 <attribute name="enabled" type="boolean">
6904 <desc>
6905 Flag whether the USB controller is present in the
6906 guest system. If disabled, the virtual guest hardware will
6907 not contain any USB controller. Can only be changed when
6908 the VM is powered off.
6909 </desc>
6910 </attribute>
6911
6912 <attribute name="USBStandard" type="unsigned short" readonly="yes">
6913 <desc>
6914 USB standard version which the controller implements.
6915 This is a BCD which means that the major version is in the
6916 high byte and minor version is in the low byte.
6917 </desc>
6918 </attribute>
6919
6920 <attribute name="deviceFilters" type="IUSBDeviceFilterCollection" readonly="yes">
6921 <desc>
6922 List of USB device filters associated with the machine.
6923
6924 If the machine is currently running, these filters are activated
6925 every time a new (supported) USB device is attached to the host
6926 computer that was not ignored by global filters
6927 (<link to="IHost::USBDeviceFilters"/>).
6928
6929 These filters are also activated when the machine is powered up.
6930 They are run against a list of all currently available USB
6931 devices (in states
6932 <link to="USBDeviceState::USBDeviceAvailable">USBDeviceAvailable</link>,
6933 <link to="USBDeviceState::USBDeviceBusy">USBDeviceBusy</link>,
6934 <link to="USBDeviceState::USBDeviceHeld">USBDeviceHeld</link>)
6935 that were not previously ignored by global filters.
6936
6937 If at least one filter matches the USB device in question, this
6938 device is automatically captured (attached to) the virtual USB
6939 controller of this machine.
6940
6941 <see>IUSBDeviceFilter, ::IUSBController</see>
6942 </desc>
6943 </attribute>
6944
6945 <method name="createDeviceFilter">
6946 <desc>
6947 Creates a new USB device filter. All attributes except
6948 the filter name are set to <tt>null</tt> (any match),
6949 <i>active</i> is <tt>false</tt> (the filter is not active).
6950
6951 The created filter can then be added to the list of filters using
6952 <link to="#insertDeviceFilter()"/>.
6953
6954 <see>#DeviceFilters</see>
6955 </desc>
6956 <param name="name" type="wstring" dir="in">
6957 <desc>
6958 Filter name. See <link to="IUSBDeviceFilter::name"/>
6959 for more info.
6960 </desc>
6961 </param>
6962 <param name="filter" type="IUSBDeviceFilter" dir="return">
6963 <desc>Created filter object.</desc>
6964 </param>
6965 </method>
6966
6967 <method name="insertDeviceFilter">
6968 <desc>
6969 Inserts the given USB device to the specified position
6970 in the list of filters.
6971
6972 Positions are numbered starting from <tt>0</tt>. If the specified
6973 position is equal to or greater than the number of elements in
6974 the list, the filter is added to the end of the collection.
6975
6976 <note>
6977 Duplicates are not allowed, so an attempt to inster a
6978 filter that is already in the collection, will return an
6979 error.
6980 </note>
6981
6982 <see>#DeviceFilters</see>
6983 </desc>
6984 <param name="position" type="unsigned long" dir="in">
6985 <desc>Position to insert the filter to.</desc>
6986 </param>
6987 <param name="filter" type="IUSBDeviceFilter" dir="in">
6988 <desc>USB device filter to insert.</desc>
6989 </param>
6990 </method>
6991
6992 <method name="removeDeviceFilter">
6993 <desc>
6994 Removes a USB device filter from the specified position in the
6995 list of filters.
6996
6997 Positions are numbered starting from <tt>0</tt>. Specifying a
6998 position equal to or greater than the number of elements in
6999 the list will produce an error.
7000
7001 <see>#DeviceFilters</see>
7002 </desc>
7003 <param name="position" type="unsigned long" dir="in">
7004 <desc>Position to remove the filter from.</desc>
7005 </param>
7006 <param name="filter" type="IUSBDeviceFilter" dir="return">
7007 <desc>Removed USB device filter.</desc>
7008 </param>
7009 </method>
7010
7011 </interface>
7012
7013
7014 <!--
7015 // IUSBDevice
7016 /////////////////////////////////////////////////////////////////////////
7017 -->
7018
7019 <enumerator
7020 name="IUSBDeviceEnumerator" type="IUSBDevice"
7021 uuid="aefe00f7-eb8a-454b-9ea4-fd5ad93c0e99"
7022 />
7023
7024 <collection
7025 name="IUSBDeviceCollection" type="IUSBDevice"
7026 enumerator="IUSBDeviceEnumerator"
7027 uuid="e31f3248-90dd-4ca2-95f0-6b36042d96a2"
7028 readonly="yes"
7029 >
7030 <method name="findById">
7031 <desc>
7032 Searches this collection for a USB device with the given UUID.
7033 <note>
7034 The method returns an error if the given UUID does not
7035 correspond to any USB device in the collection.
7036 </note>
7037 <see>IUSBDevice::id</see>
7038 </desc>
7039 <param name="id" type="uuid" dir="in">
7040 <desc>UUID of the USB device to search for.</desc>
7041 </param>
7042 <param name="device" type="IUSBDevice" dir="return">
7043 <desc>Found USB device object.</desc>
7044 </param>
7045 </method>
7046
7047 <method name="findByAddress">
7048 <desc>
7049 Searches this collection for a USB device with the given
7050 host address.
7051 <note>
7052 The method returns an error if the given address does not
7053 correspond to any USB device in the collection.
7054 </note>
7055 <see>IUSBDevice::address</see>
7056 </desc>
7057 <param name="name" type="wstring" dir="in">
7058 <desc>
7059 Address of the USB device (as assigned by the host) to
7060 search for.
7061 </desc>
7062 </param>
7063 <param name="device" type="IUSBDevice" dir="return">
7064 <desc>Found USB device object.</desc>
7065 </param>
7066 </method>
7067
7068 </collection>
7069
7070 <interface
7071 name="IUSBDevice" extends="$unknown"
7072 uuid="c5ab8d05-1999-4e48-ae34-cdeb235aacf0"
7073 wsmap="managed"
7074 >
7075 <desc>
7076 The IUSBDevice interface represents a USB device captured by
7077 (attached to) a running virtual machine's USB controller.
7078 <see>IConsole::USBDevices</see>
7079 </desc>
7080
7081 <attribute name="id" type="uuid" readonly="yes">
7082 <desc>
7083 Unique USB device ID. This ID is built from #vendorId,
7084 #productId, #revision and #serialNumber.
7085 </desc>
7086 </attribute>
7087
7088 <attribute name="vendorId" type="unsigned short" readonly="yes">
7089 <desc>Vendor ID.</desc>
7090 </attribute>
7091
7092 <attribute name="productId" type="unsigned short" readonly="yes">
7093 <desc>Product ID.</desc>
7094 </attribute>
7095
7096 <attribute name="revision" type="unsigned short" readonly="yes">
7097 <desc>
7098 Product revision number. This is a packed BCD represented as
7099 unsigned short. The high byte is the integer part and the low
7100 byte is the decimal.
7101 </desc>
7102 </attribute>
7103
7104 <attribute name="manufacturer" type="wstring" readonly="yes">
7105 <desc>Manufacturer string.</desc>
7106 </attribute>
7107
7108 <attribute name="product" type="wstring" readonly="yes">
7109 <desc>Product string.</desc>
7110 </attribute>
7111
7112 <attribute name="serialNumber" type="wstring" readonly="yes">
7113 <desc>Serial number string.</desc>
7114 </attribute>
7115
7116 <attribute name="address" type="wstring" readonly="yes">
7117 <desc>Host specific address of the device.</desc>
7118 </attribute>
7119
7120 <attribute name="port" type="unsigned short" readonly="yes">
7121 <desc>
7122 Host USB port number the device is physically
7123 coonected to.
7124 </desc>
7125 </attribute>
7126
7127 <attribute name="remote" type="boolean" readonly="yes">
7128 <desc>
7129 Whether the device is physically connected to a remote VRDP
7130 client or to a local host machine.
7131 </desc>
7132 </attribute>
7133
7134 </interface>
7135
7136
7137 <!--
7138 // IUSBDeviceFilter
7139 /////////////////////////////////////////////////////////////////////////
7140 -->
7141
7142 <enumerator
7143 name="IUSBDeviceFilterEnumerator" type="IUSBDeviceFilter"
7144 uuid="8d066d8b-3576-4a22-a387-847840937453"
7145 />
7146
7147 <collection
7148 name="IUSBDeviceFilterCollection" type="IUSBDeviceFilter"
7149 enumerator="IUSBDeviceFilterEnumerator"
7150 uuid="4fa3fc99-ceb1-4bf5-a9cb-e962d825c1ef"
7151 readonly="yes"
7152 />
7153
7154 <interface
7155 name="IUSBDeviceFilter" extends="$unknown"
7156 uuid="d6831fb4-1a94-4c2c-96ef-8d0d6192066d"
7157 wsmap="managed"
7158 >
7159 <desc>
7160 The IUSBDeviceFilter interface represents an USB device filter used
7161 to perform actions on a group of USB devices.
7162
7163 This type of filters is used by running virtual machines to
7164 automatically capture selected USB devices once they are physically
7165 attached to the host computer.
7166
7167 A USB device is matched to the given device filter if and only if all
7168 attributes of the device match the corresponding attributes of the
7169 filter (that is, attributes are joined together using the logical AND
7170 operation). On the other hand, all together, filters in the list of
7171 filters carry the semantics of the logical OR operation. So if it is
7172 desirable to create a match like "this vendor id OR this product id",
7173 one needs to create two filters and specify "any match" (see below)
7174 for unused attributes.
7175
7176 All filter attributes used for matching are strings. Each string
7177 is an expression representing a set of values of the corresponding
7178 device attribute, that will match the given filter. Currently, the
7179 following filtering expressions are supported:
7180
7181 <ul>
7182 <li><i>Interval filters</i>. Used to specify valid intervals for
7183 integer device attributes (Vendor ID, Product ID and Revision).
7184 The format of the string is:
7185
7186 <tt>int:((m)|([m]-[n]))(,(m)|([m]-[n]))*</tt>
7187
7188 where <tt>m</tt> and <tt>n</tt> are integer numbers, either in octal
7189 (starting from <tt>0</tt>), hexadecimal (starting from <tt>0x</tt>)
7190 or decimal (otherwise) form, so that <tt>m &lt; n</tt>. If <tt>m</tt>
7191 is ommitted before a dash (<tt>-</tt>), the minimum possible integer
7192 is assumed; if <tt>n</tt> is ommitted after a dash, the maximum
7193 possible integer is assummed.
7194 </li>
7195 <li><i>Boolean filters</i>. Used to specify acceptable values for
7196 boolean device attributes. The format of the string is:
7197
7198 <tt>true|false|yes|no|0|1</tt>
7199
7200 </li>
7201 <li><i>Exact match</i>. Used to specify a single value for the given
7202 device attribute. Any string that does't start with <tt>int:</tt>
7203 represents the exact match. String device attributes are compared to
7204 this string including case of symbols. Integer attributes are first
7205 converted to a string (see individual filter attributes) and then
7206 compared ignoring case.
7207
7208 </li>
7209 <li><i>Any match</i>. Any value of the corresponding device attribute
7210 will match the given filter. An empty or <tt>null</tt> string is
7211 used to construct this type of filtering expressions.
7212
7213 </li>
7214 </ul>
7215
7216 <note>
7217 On the Windows host platform, interval filters are not currently
7218 available. Also all string filter attributes
7219 (<link to="#manufacturer"/>, <link to="#product"/>,
7220 <link to="#serialNumber"/>) are ignored, so they behave as
7221 <i>any match</i> no matter what string expression is specified.
7222 </note>
7223
7224 <see>IUSBController::DeviceFilters, IHostUSBDeviceFilter</see>
7225 </desc>
7226
7227 <attribute name="name" type="wstring">
7228 <desc>
7229 Visible name for this filter.
7230 This name is used to visually distungish one filter from another,
7231 so it can neither be <tt>null</tt> nor an empty string.
7232 </desc>
7233 </attribute>
7234
7235 <attribute name="active" type="boolean">
7236 <desc>Whether this filter active or has been temporarily disabled.</desc>
7237 </attribute>
7238
7239 <attribute name="vendorId" type="wstring">
7240 <desc>
7241 <link to="IUSBDevice::vendorId">Vendor ID</link> filter.
7242 The string representation for the <i>exact matching</i>
7243 has the form <tt>XXXX</tt>, where <tt>X</tt> is the hex digit
7244 (including leading zeroes).
7245 </desc>
7246 </attribute>
7247
7248 <attribute name="productId" type="wstring">
7249 <desc>
7250 <link to="IUSBDevice::productId">Product ID</link> filter.
7251 The string representation for the <i>exact matching</i>
7252 has the form <tt>XXXX</tt>, where <tt>X</tt> is the hex digit
7253 (including leading zeroes).
7254 </desc>
7255 </attribute>
7256
7257 <attribute name="revision" type="wstring">
7258 <desc>
7259 <link to="IUSBDevice::productId">Product revision number</link>
7260 filter. The string representation for the <i>exact matching</i>
7261 has the form <tt>IIFF</tt>, where <tt>I</tt> is the decimal digit
7262 of the integer part of the revision, and <tt>F</tt> is the
7263 decimal digit of its fractional part (including leading and
7264 trailing zeroes).
7265 Note that for interval filters, it's best to use the hexadecimal
7266 form, because the revision is stored as a 16 bit packed BCD value;
7267 so the expression <tt>int:0x0100-0x0199</tt> will match any
7268 revision from <tt>1.0</tt> to <tt>1.99</tt>.
7269 </desc>
7270 </attribute>
7271
7272 <attribute name="manufacturer" type="wstring">
7273 <desc>
7274 <link to="IUSBDevice::manufacturer">Manufacturer</link> filter.
7275 </desc>
7276 </attribute>
7277
7278 <attribute name="product" type="wstring">
7279 <desc>
7280 <link to="IUSBDevice::product">Product</link> filter.
7281 </desc>
7282 </attribute>
7283
7284 <attribute name="serialNumber" type="wstring">
7285 <desc>
7286 <link to="IUSBDevice::serialNumber">Serial number</link> filter.
7287 </desc>
7288 </attribute>
7289
7290 <attribute name="port" type="wstring">
7291 <desc>
7292 <link to="IUSBDevice::port">Host USB port</link> filter.
7293 </desc>
7294 </attribute>
7295
7296 <attribute name="remote" type="wstring">
7297 <desc>
7298 <link to="IUSBDevice::remote">Remote state</link> filter.
7299 <note>
7300 This filter makes sense only for machine USB filters,
7301 i.e. it is ignored by IHostUSBDeviceFilter objects.
7302 </note>
7303 </desc>
7304 </attribute>
7305
7306 </interface>
7307
7308
7309 <!--
7310 // IHostUSBDevice
7311 /////////////////////////////////////////////////////////////////////////
7312 -->
7313
7314 <enum
7315 name="USBDeviceState"
7316 uuid="b99a2e65-67fb-4882-82fd-f3e5e8193ab4"
7317 >
7318 <desc>
7319 USB device state. This enumeration represents all possible states
7320 of the USB device physically attached to the host computer regarding
7321 its state on the host computer and availability to guest computers
7322 (all currently running virtual machines).
7323
7324 Once a supported USB device is attached to the host, global USB
7325 filters (<link to="IHost::USBDeviceFilters"/>) are activated. They can
7326 either ignore the device, or put ot to #USBDeviceHeld state, or do
7327 nothing. Unless the device is ignored by global filters, filters of
7328 all currently running guests (<link to="IUSBController::DeviceFilters"/>)
7329 are activated that can put it to #USBDeviceCaptured state.
7330
7331 If the device was ignored by global filters, or didn't match
7332 any filters at all (including guest ones), it is handled by the host
7333 in a normal way. In this case, the device state is determined by
7334 the host and can be one of #USBDeviceUnavailable, #USBDeviceBusy or
7335 #USBDeviceAvailable, depending on the current device usage.
7336
7337 Besides auto-capturing based on filters, the device can be manually
7338 captured by guests (<link to="IConsole::attachUSBDevice()"/>) if its
7339 state is #USBDeviceBusy, #USBDeviceAvailable or #USBDeviceHeld.
7340
7341 <note>
7342 Due to differences in USB stack implementations in Linux and Win32,
7343 states #USBDeviceBusy and #USBDeviceAvailable are applicable
7344 only to the Linux version of the product. This also means that
7345 (<link to="IConsole::attachUSBDevice()"/>) can only succeed
7346 on Win32 if the device state is #USBDeviceHeld.
7347 </note>
7348
7349 <see>IHostUSBDevice, IHostUSBDeviceFilter</see>
7350 </desc>
7351
7352 <const name="USBDeviceNotSupported" value="0">
7353 <desc>
7354 Not supported by the VirtualBox server, not available to guests.
7355 </desc>
7356 </const>
7357 <const name="USBDeviceUnavailable" value="1">
7358 <desc>
7359 Being used by the host computer exclusively,
7360 not available to guests.
7361 </desc>
7362 </const>
7363 <const name="USBDeviceBusy" value="2">
7364 <desc>
7365 Being used by the host computer, potentially available to guests.
7366 </desc>
7367 </const>
7368 <const name="USBDeviceAvailable" value="3">
7369 <desc>
7370 Not used by the host computer, available to guests.
7371 The host computer can also start using the device at any time.
7372 </desc>
7373 </const>
7374 <const name="USBDeviceHeld" value="4">
7375 <desc>
7376 Held by the VirtualBox server (ignored by the host computer),
7377 available to guests.
7378 </desc>
7379 </const>
7380 <const name="USBDeviceCaptured" value="5">
7381 <desc>
7382 Captured by one of the guest computers, not available
7383 to anybody else.
7384 </desc>
7385 </const>
7386 </enum>
7387
7388 <enumerator
7389 name="IHostUSBDeviceEnumerator" type="IHostUSBDevice"
7390 uuid="a0c55136-939f-4d20-b9d3-4d406f08bfa5"
7391 />
7392
7393 <collection
7394 name="IHostUSBDeviceCollection" type="IHostUSBDevice"
7395 enumerator="IHostUSBDeviceEnumerator"
7396 uuid="f9d3f96d-b027-4994-b589-70bb9ee0d364"
7397 readonly="yes"
7398 >
7399 <method name="findById">
7400 <desc>
7401 Searches this collection for a USB device with the given UUID.
7402 <note>
7403 The method returns an error if the given UUID does not
7404 correspond to any USB device in the collection.
7405 </note>
7406 <see>IHostUSBDevice::id</see>
7407 </desc>
7408 <param name="id" type="uuid" dir="in">
7409 <desc>UUID of the USB device to search for.</desc>
7410 </param>
7411 <param name="device" type="IHostUSBDevice" dir="return">
7412 <desc>Found USB device object.</desc>
7413 </param>
7414 </method>
7415
7416 <method name="findByAddress">
7417 <desc>
7418 Searches this collection for a USB device with the given
7419 host address.
7420 <note>
7421 The method returns an error if the given address does not
7422 correspond to any USB device in the collection.
7423 </note>
7424 <see>IHostUSBDevice::address</see>
7425 </desc>
7426 <param name="name" type="wstring" dir="in">
7427 <desc>
7428 Address of the USB device (as assigned by the host) to
7429 search for.
7430 </desc>
7431 </param>
7432 <param name="device" type="IHostUSBDevice" dir="return">
7433 <desc>Found USB device object.</desc>
7434 </param>
7435 </method>
7436
7437 </collection>
7438
7439 <interface
7440 name="IHostUSBDevice" extends="IUSBDevice"
7441 uuid="173b4b44-d268-4334-a00d-b6521c9a740a"
7442 wsmap="managed"
7443 >
7444 <desc>
7445 The IHostUSBDevice interface represents a USB device attached to
7446 the host computer.
7447
7448 Among with properties inherited from IUSBDevice,
7449 this interface adds the <link to="#state"/> property
7450 that holds the courrent state of the USB device.
7451
7452 <see>IHost::USBDevices, IHost::USBDeviceFilters</see>
7453 </desc>
7454
7455 <attribute name="state" type="USBDeviceState" readonly="yes">
7456 <desc>
7457 Current state of the device.
7458 </desc>
7459 </attribute>
7460
7461 <!-- @todo add class, subclass, bandwidth, configs, interfaces endpoints and such later. -->
7462
7463 </interface>
7464
7465
7466 <!--
7467 // IHostUSBDeviceFilter
7468 /////////////////////////////////////////////////////////////////////////
7469 -->
7470
7471 <enum
7472 name="USBDeviceFilterAction"
7473 uuid="cbc30a49-2f4e-43b5-9da6-121320475933"
7474 >
7475 <desc>
7476 Actions for host USB device filters.
7477 <see>IHostUSBDeviceFilter, USBDeviceState</see>
7478 </desc>
7479
7480 <const name="InvalidUSBDeviceFilterAction" value="0"/>
7481 <const name="USBDeviceFilterIgnore" value="1">
7482 <desc>Ignore the matched USB device.</desc>
7483 </const>
7484 <const name="USBDeviceFilterHold" value="2">
7485 <desc>Hold the matched USB device.</desc>
7486 </const>
7487 </enum>
7488
7489 <enumerator
7490 name="IHostUSBDeviceFilterEnumerator" type="IHostUSBDeviceFilter"
7491 uuid="ff735211-903e-4642-9c37-189eb44579fe"
7492 />
7493
7494 <collection
7495 name="IHostUSBDeviceFilterCollection" type="IHostUSBDeviceFilter"
7496 enumerator="IHostUSBDeviceFilterEnumerator"
7497 uuid="1a80458b-87f1-4a74-995d-04e2330119e0"
7498 readonly="yes"
7499 />
7500
7501 <interface
7502 name="IHostUSBDeviceFilter" extends="IUSBDeviceFilter"
7503 uuid="4cc70246-d74a-400f-8222-3900489c0374"
7504 wsmap="managed"
7505 >
7506 <desc>
7507 The IHostUSBDeviceFilter interface represents a USB device filter used
7508 by the host computer.
7509
7510 Using filters of this type, the host computer determines the initial
7511 state of the USB device after it is physically attached to the
7512 host's USB controller.
7513
7514 <note>
7515 The <link to="#remote"/> attribute is ignored by this type of
7516 filters, because it makes sense only for
7517 <link to="IUSBController::DeviceFilters">machine USB filters</link>.
7518 </note>
7519
7520 <see>IHost::USBDeviceFilters</see>
7521 </desc>
7522
7523 <attribute name="action" type="USBDeviceFilterAction">
7524 <desc>
7525 Action performed by the host when an attached USB device
7526 matches this filter.
7527 </desc>
7528 </attribute>
7529
7530 </interface>
7531
7532 <!--
7533 // IAudioAdapter
7534 /////////////////////////////////////////////////////////////////////////
7535 -->
7536
7537 <enum
7538 name="AudioDriverType"
7539 uuid="4bcc3d73-c2fe-40db-b72f-0c2ca9d68496"
7540 >
7541 <const name="NullAudioDriver" value="0"/>
7542 <const name="WINMMAudioDriver" value="1"/>
7543 <const name="OSSAudioDriver" value="2"/>
7544 <const name="ALSAAudioDriver" value="3"/>
7545 <const name="DSOUNDAudioDriver" value="4"/>
7546 <const name="CoreAudioDriver" value="5"/>
7547 <const name="MMPMAudioDriver" value="6"/>
7548 </enum>
7549
7550 <interface
7551 name="IAudioAdapter" extends="$unknown"
7552 uuid="921873db-5f3f-4b69-91f9-7be9e535a2cb"
7553 wsmap="struct"
7554 >
7555 <attribute name="enabled" type="boolean">
7556 <desc>
7557 Flag whether the audio adapter is present in the
7558 guest system. If disabled, the virtual guest hardware will
7559 not contain any audio adapter. Can only be changed when
7560 the VM is not running.
7561 </desc>
7562 </attribute>
7563 <attribute name="audioDriver" type="AudioDriverType">
7564 <desc>
7565 Audio driver the adapter is connected to. This setting
7566 can only be changed when the VM is not running.
7567 </desc>
7568 </attribute>
7569 </interface>
7570
7571 <!--
7572 // IVRDPServer
7573 /////////////////////////////////////////////////////////////////////////
7574 -->
7575
7576 <enum
7577 name="VRDPAuthType"
7578 uuid="3d91887a-b67f-4b33-85bf-2da7ab1ea83a"
7579 >
7580 <const name="VRDPAuthNull" value="0"/>
7581 <const name="VRDPAuthExternal" value="1"/>
7582 <const name="VRDPAuthGuest" value="2"/>
7583 </enum>
7584
7585 <interface
7586 name="IVRDPServer" extends="$unknown"
7587 uuid="ed9d31ae-867f-45fc-b727-6740084d1883"
7588 wsmap="struct"
7589 >
7590 <attribute name="enabled" type="boolean">
7591 <desc>VRDP server status.</desc>
7592 </attribute>
7593
7594 <attribute name="port" type="unsigned long">
7595 <desc>
7596 VRDP server port number.
7597 <note>
7598 Setting the value of this property to <tt>0</tt> will reset the port
7599 number to the default value which is
7600 currently <tt>3389</tt>. Reading this property will always return a
7601 real port number, even after it has been set to <tt>0</tt> (in which
7602 case the default port is returned).
7603 </note>
7604 </desc>
7605 </attribute>
7606
7607 <attribute name="netAddress" type="wstring">
7608 <desc>VRDP server address.</desc>
7609 </attribute>
7610
7611 <attribute name="authType" type="VRDPAuthType">
7612 <desc>VRDP authentication method.</desc>
7613 </attribute>
7614
7615 <attribute name="authTimeout" type="unsigned long">
7616 <desc>Timeout for guest authentication. Milliseconds.</desc>
7617 </attribute>
7618
7619 <attribute name="allowMultiConnection" type="boolean">
7620 <desc>
7621 Flag whether multiple simultaneous connections to the VM are permitted.
7622 Note that this will be replaced by a more powerful mechanism in the future.
7623 </desc>
7624 </attribute>
7625
7626 </interface>
7627
7628
7629 <!--
7630 // ISharedFolder
7631 /////////////////////////////////////////////////////////////////////////
7632 -->
7633
7634 <enumerator
7635 name="ISharedFolderEnumerator" type="ISharedFolder"
7636 uuid="1d420fd8-e7c1-4511-abf4-a504dc6d0cbf"
7637 />
7638
7639 <collection
7640 name="ISharedFolderCollection" type="ISharedFolder"
7641 enumerator="ISharedFolderEnumerator"
7642 uuid="9c7e2282-bb16-4fa7-9138-f383c5e02353"
7643 readonly="yes">
7644
7645 <method name="findByName">
7646 <desc>
7647 Searches this collection for a shared folder drive with the
7648 given logical name.
7649 <note>
7650 The method returns an error if the given name does not
7651 correspond to any shared folder in the collection.
7652 </note>
7653 </desc>
7654 <param name="name" type="wstring" dir="in">
7655 <desc>Logical name of the shared folder to search for</desc>
7656 </param>
7657 <param name="sharedFolder" type="ISharedFolder" dir="return">
7658 <desc>Found shared folder object</desc>
7659 </param>
7660 </method>
7661
7662 </collection>
7663
7664 <interface
7665 name="ISharedFolder" extends="$unknown"
7666 uuid="8b0c5f70-9139-4f97-a421-64d5e9c335d5"
7667 wsmap="struct"
7668 >
7669 <desc>
7670 The ISharedFolder interface represents a folder in the host
7671 computer's file system accessible from a guest OS running inside a
7672 virtual machine using an associated logical name.
7673
7674 There are three types of shared folders:
7675 <ul>
7676 <li>permanent (<link to="IMachine::sharedFolders"/>)</li>
7677 <li>transient (<link to="IConsole::sharedFolders"/>)</li>
7678 <li>global (<link to="IVirtualBox::sharedFolders"/>)</li>
7679 </ul>
7680
7681 For a given virtual machine, both permanently and transiently
7682 shared folders have the same logical name space which also includes
7683 all globally shared folders. Thus, every folder in this name space
7684 must have an unique logical name. Note that permanent and transient
7685 shares of other machines are in different name spaces, so they don't
7686 have to have unique names.
7687 </desc>
7688
7689 <attribute name="name" type="wstring" readonly="yes">
7690 <desc>Logical name of the shared folder.</desc>
7691 </attribute>
7692
7693 <attribute name="hostPath" type="wstring" readonly="yes">
7694 <desc>Full path to the shared folder in the host file system.</desc>
7695 </attribute>
7696
7697 <attribute name="accessible" type="boolean" readonly="yes">
7698 <desc>
7699 Whether the folder defined by the host path is currently
7700 accessible or not.
7701 For example, the folder can be unaccessible if it is placed
7702 on the network share that is not available by the time
7703 this property is read.
7704 </desc>
7705 </attribute>
7706
7707 </interface>
7708
7709 <!--
7710 // ISession
7711 /////////////////////////////////////////////////////////////////////////
7712 -->
7713
7714 <interface
7715 name="IInternalSessionControl" extends="$unknown"
7716 uuid="80a9b698-cc60-48cf-ab88-a7c2ea4013a6"
7717 internal="yes"
7718 wsmap="suppress"
7719 >
7720 <method name="getPID">
7721 <desc>PID of the process that has created this Session object.
7722 </desc>
7723 <param name="pid" type="unsigned long" dir="return"/>
7724 </method>
7725
7726 <method name="getRemoteConsole">
7727 <desc>Returns the console object suitable for remote control.</desc>
7728 <param name="console" type="IConsole" dir="return"/>
7729 </method>
7730
7731 <method name="assignMachine">
7732 <desc>
7733 Assigns the machine object associated with this direct-type
7734 session or informs the session that it will be a remote one
7735 (if machine = NULL).
7736 </desc>
7737 <param name="machine" type="IMachine" dir="in"/>
7738 </method>
7739
7740 <method name="assignRemoteMachine">
7741 <desc>
7742 Assigns the machine and the (remote) console object associated with
7743 this remote-type session.
7744 </desc>
7745 <param name="machine" type="IMachine" dir="in"/>
7746 <param name="console" type="IConsole" dir="in"/>
7747 </method>
7748
7749 <method name="updateMachineState">
7750 <desc>
7751 Updates the machine state in the VM process.
7752 Must be called only in certain cases
7753 (see the method implementation).
7754 </desc>
7755 <param name="aMachineState" type="MachineState" dir="in"/>
7756 </method>
7757
7758 <method name="uninitialize">
7759 <desc>
7760 Uninitializes (closes) this session. Used by VirtualBox to close
7761 the corresponding remote session when the direct session dies
7762 or gets closed.
7763 </desc>
7764 </method>
7765
7766 <method name="onDVDDriveChange">
7767 <desc>
7768 Triggered when settings of the DVD drive object of the
7769 associated virtual machine have changed.
7770 </desc>
7771 </method>
7772
7773 <method name="onFloppyDriveChange">
7774 <desc>
7775 Triggered when settings of the floppy drive object of the
7776 associated virtual machine have changed.
7777 </desc>
7778 </method>
7779
7780 <method name="onNetworkAdapterChange">
7781 <desc>
7782 Triggered when settions of a network adapter of the
7783 associated virtual machine have changed.
7784 </desc>
7785 <param name="networkAdapter" type="INetworkAdapter" dir="in"/>
7786 </method>
7787
7788 <method name="onSerialPortChange">
7789 <desc>
7790 Triggered when settions of a serial port of the
7791 associated virtual machine have changed.
7792 </desc>
7793 <param name="serialPort" type="ISerialPort" dir="in"/>
7794 </method>
7795
7796 <method name="onVRDPServerChange">
7797 <desc>
7798 Triggered when settings of the VRDP server object of the
7799 associated virtual machine have changed.
7800 </desc>
7801 </method>
7802
7803 <method name="onUSBControllerChange">
7804 <desc>
7805 Triggered when settings of the USB controller object of the
7806 associated virtual machine have changed.
7807 </desc>
7808 </method>
7809
7810 <method name="onUSBDeviceAttach">
7811 <desc>
7812 Triggered when a request to capture a USB device (as a result
7813 of matched USB filters or direct call to
7814 <link to="IConsole::attachUSBDevice"/>) has completed.
7815 A @c null @a error object means success, otherwise it
7816 describes a failure.
7817 </desc>
7818 <param name="device" type="IUSBDevice" dir="in"/>
7819 <param name="error" type="IVirtualBoxErrorInfo" dir="in"/>
7820 </method>
7821
7822 <method name="onUSBDeviceDetach">
7823 <desc>
7824 Triggered when a request to release the USB device (as a result
7825 of machine termination or direct call to
7826 <link to="IConsole::detachUSBDevice"/>) has completed.
7827 A @c null @a error object means success, otherwise it
7828 </desc>
7829 <param name="id" type="uuid" dir="in"/>
7830 <param name="error" type="IVirtualBoxErrorInfo" dir="in"/>
7831 </method>
7832
7833 <method name="onShowWindow">
7834 <desc>
7835 Called by <link to="IMachine::canShowConsoleWindow()"/> and by
7836 <link to="IMachine::showConsoleWindow()"/> in order to notify
7837 console callbacks
7838 <link to="IConsoleCallback::onCanShowWindow()"/>
7839 and <link to="IConsoleCallback::onShowWindow()"/>.
7840 </desc>
7841 <param name="check" type="boolean" dir="in"/>
7842 <param name="canShow" type="boolean" dir="out"/>
7843 <param name="winId" type="unsigned long long" dir="out"/>
7844 </method>
7845
7846 </interface>
7847
7848 <interface
7849 name="ISession" extends="$dispatched"
7850 uuid="12F4DCDB-12B2-4ec1-B7CD-DDD9F6C5BF4D"
7851 wsmap="managed"
7852 >
7853 <attribute name="state" type="SessionState" readonly="yes">
7854 <desc>Current state of this session.</desc>
7855 </attribute>
7856
7857 <attribute name="type" type="SessionType" readonly="yes">
7858 <desc>
7859 Type of this session. The value of this attribute is valid only
7860 if the session is currently open (i.e. its #state is SessionType::SessionOpen),
7861 otherwise an error will be returned.
7862 </desc>
7863 </attribute>
7864
7865 <attribute name="machine" type="IMachine" readonly="yes">
7866 <desc>Machine object associated with this session.</desc>
7867 </attribute>
7868
7869 <attribute name="console" type="IConsole" readonly="yes">
7870 <desc>Console object associated with this session.</desc>
7871 </attribute>
7872
7873 <method name="close">
7874 <desc>
7875 Closes this session.
7876 <note>
7877 If a direct session for a machine opened with
7878 <link to="IVirtualBox::openSession()"/> is not explicitly
7879 closed when the application terminates, the state of the
7880 machine will be set to <link to="MachineState::Aborted"/>
7881 on the server. Generally, it is recommended to close all
7882 open sessions explicitly before terminating the application
7883 (no matter what is the reason of the termination).
7884 </note>
7885 </desc>
7886 </method>
7887
7888 </interface>
7889
7890 <class name="Session" uuid="3C02F46D-C9D2-4f11-A384-53F0CF917214"
7891 namespace="virtualbox.org">
7892 <interface name="ISession" default="yes"/>
7893 </class>
7894
7895<if target="wsdl">
7896
7897 <!--
7898 // IManagedObjectRef
7899 /////////////////////////////////////////////////////////////////////////
7900 -->
7901
7902 <interface
7903 name="IManagedObjectRef" extends="$unknown"
7904 uuid="9474d09d-2313-46de-b568-a42b8718e8ed"
7905 internal="yes"
7906 wsmap="explicit"
7907 >
7908 <method name="getInterfaceName">
7909 <desc>
7910 Returns the name of the interface that this managed object represents,
7911 for example, "IMachine", as a string.
7912 </desc>
7913 </method>
7914
7915 <method name="release">
7916 <desc>
7917 Releases this managed object reference and frees the resources that
7918 were allocated for it in the web service server process. After calling
7919 this method, the identifier of the reference can no longer be used.
7920 </desc>
7921 </method>
7922
7923 </interface>
7924
7925</if>
7926
7927</module>
7928
7929</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