VirtualBox

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

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

Corrected a typo (consistent, but I assume not intentional!).

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