VirtualBox

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

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

Continued Main-VMMDev work on memory ballooning.

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