VirtualBox

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

Last change on this file since 4573 was 4573, checked in by vboxsync, 17 years ago

More statistics. Started implementing the guest side.

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