virtualbox 0.5.4 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. data/.gitignore +2 -1
  2. data/Gemfile +1 -1
  3. data/Rakefile +1 -1
  4. data/Readme.md +5 -21
  5. data/VERSION +1 -1
  6. data/docs/WhatsNew.md +9 -47
  7. data/lib/virtualbox.rb +7 -30
  8. data/lib/virtualbox/abstract_model.rb +25 -5
  9. data/lib/virtualbox/abstract_model/attributable.rb +5 -1
  10. data/lib/virtualbox/abstract_model/dirty.rb +2 -0
  11. data/lib/virtualbox/abstract_model/interface_attributes.rb +96 -0
  12. data/lib/virtualbox/abstract_model/relatable.rb +19 -8
  13. data/lib/virtualbox/appliance.rb +59 -0
  14. data/lib/virtualbox/audio_adapter.rb +44 -0
  15. data/lib/virtualbox/bios.rb +44 -0
  16. data/lib/virtualbox/com.rb +23 -0
  17. data/lib/virtualbox/com/abstract_enum.rb +42 -0
  18. data/lib/virtualbox/com/abstract_implementer.rb +43 -0
  19. data/lib/virtualbox/com/abstract_interface.rb +165 -0
  20. data/lib/virtualbox/com/ffi/interface.rb +141 -0
  21. data/lib/virtualbox/com/ffi/interfaces.rb +42 -0
  22. data/lib/virtualbox/com/ffi/util.rb +101 -0
  23. data/lib/virtualbox/com/ffi/vboxxpcomc.rb +31 -0
  24. data/lib/virtualbox/com/ffi_interface.rb +65 -0
  25. data/lib/virtualbox/com/implementer/base.rb +52 -0
  26. data/lib/virtualbox/com/implementer/ffi.rb +350 -0
  27. data/lib/virtualbox/com/implementer/mscom.rb +165 -0
  28. data/lib/virtualbox/com/implementer/nil.rb +10 -0
  29. data/lib/virtualbox/com/interface/appliance.rb +20 -0
  30. data/lib/virtualbox/com/interface/audio_adapter.rb +13 -0
  31. data/lib/virtualbox/com/interface/audio_controller_type.rb +9 -0
  32. data/lib/virtualbox/com/interface/audio_driver_type.rb +9 -0
  33. data/lib/virtualbox/com/interface/bios_boot_menu_mode.rb +9 -0
  34. data/lib/virtualbox/com/interface/bios_settings.rb +19 -0
  35. data/lib/virtualbox/com/interface/clipboard_mode.rb +9 -0
  36. data/lib/virtualbox/com/interface/console.rb +48 -0
  37. data/lib/virtualbox/com/interface/cpu_property_type.rb +9 -0
  38. data/lib/virtualbox/com/interface/device_type.rb +9 -0
  39. data/lib/virtualbox/com/interface/dhcp_server.rb +20 -0
  40. data/lib/virtualbox/com/interface/firmware_type.rb +9 -0
  41. data/lib/virtualbox/com/interface/guest_os_type.rb +21 -0
  42. data/lib/virtualbox/com/interface/host.rb +40 -0
  43. data/lib/virtualbox/com/interface/host_network_interface.rb +28 -0
  44. data/lib/virtualbox/com/interface/host_network_interface_medium_type.rb +9 -0
  45. data/lib/virtualbox/com/interface/host_network_interface_status.rb +9 -0
  46. data/lib/virtualbox/com/interface/host_network_interface_type.rb +9 -0
  47. data/lib/virtualbox/com/interface/host_usb_device.rb +11 -0
  48. data/lib/virtualbox/com/interface/host_usb_device_filter.rb +11 -0
  49. data/lib/virtualbox/com/interface/hw_virt_ex_property_type.rb +9 -0
  50. data/lib/virtualbox/com/interface/machine.rb +103 -0
  51. data/lib/virtualbox/com/interface/machine_state.rb +12 -0
  52. data/lib/virtualbox/com/interface/medium.rb +48 -0
  53. data/lib/virtualbox/com/interface/medium_attachment.rb +16 -0
  54. data/lib/virtualbox/com/interface/medium_format.rb +16 -0
  55. data/lib/virtualbox/com/interface/medium_state.rb +9 -0
  56. data/lib/virtualbox/com/interface/medium_type.rb +9 -0
  57. data/lib/virtualbox/com/interface/medium_variant.rb +9 -0
  58. data/lib/virtualbox/com/interface/network_adapter.rb +28 -0
  59. data/lib/virtualbox/com/interface/network_adapter_type.rb +9 -0
  60. data/lib/virtualbox/com/interface/network_attachment_type.rb +9 -0
  61. data/lib/virtualbox/com/interface/nsiexception.rb +21 -0
  62. data/lib/virtualbox/com/interface/nsisupports.rb +13 -0
  63. data/lib/virtualbox/com/interface/parallel_port.rb +15 -0
  64. data/lib/virtualbox/com/interface/port_mode.rb +9 -0
  65. data/lib/virtualbox/com/interface/progress.rb +58 -0
  66. data/lib/virtualbox/com/interface/serial_port.rb +17 -0
  67. data/lib/virtualbox/com/interface/session.rb +16 -0
  68. data/lib/virtualbox/com/interface/session_state.rb +9 -0
  69. data/lib/virtualbox/com/interface/session_type.rb +9 -0
  70. data/lib/virtualbox/com/interface/shared_folder.rb +15 -0
  71. data/lib/virtualbox/com/interface/snapshot.rb +18 -0
  72. data/lib/virtualbox/com/interface/storage_bus.rb +9 -0
  73. data/lib/virtualbox/com/interface/storage_controller.rb +21 -0
  74. data/lib/virtualbox/com/interface/storage_controller_type.rb +9 -0
  75. data/lib/virtualbox/com/interface/system_properties.rb +35 -0
  76. data/lib/virtualbox/com/interface/usb_controller.rb +18 -0
  77. data/lib/virtualbox/com/interface/usb_device.rb +22 -0
  78. data/lib/virtualbox/com/interface/usb_device_filter.rb +21 -0
  79. data/lib/virtualbox/com/interface/usb_device_filter_action.rb +9 -0
  80. data/lib/virtualbox/com/interface/usb_device_state.rb +9 -0
  81. data/lib/virtualbox/com/interface/virtual_box_error_info.rb +15 -0
  82. data/lib/virtualbox/com/interface/virtual_system_description.rb +17 -0
  83. data/lib/virtualbox/com/interface/virtual_system_description_type.rb +12 -0
  84. data/lib/virtualbox/com/interface/virtual_system_description_value_type.rb +9 -0
  85. data/lib/virtualbox/com/interface/virtualbox.rb +54 -0
  86. data/lib/virtualbox/com/interface/vrdp_auth_type.rb +9 -0
  87. data/lib/virtualbox/com/interface/vrdp_server.rb +17 -0
  88. data/lib/virtualbox/com/mscom_interface.rb +22 -0
  89. data/lib/virtualbox/com/util.rb +18 -0
  90. data/lib/virtualbox/dvd.rb +7 -94
  91. data/lib/virtualbox/exceptions.rb +24 -0
  92. data/lib/virtualbox/ext/glob_loader.rb +22 -0
  93. data/lib/virtualbox/ext/logger.rb +38 -0
  94. data/lib/virtualbox/ext/platform.rb +1 -1
  95. data/lib/virtualbox/extra_data.rb +25 -37
  96. data/lib/virtualbox/forwarded_port.rb +35 -13
  97. data/lib/virtualbox/global.rb +22 -80
  98. data/lib/virtualbox/hard_drive.rb +30 -97
  99. data/lib/virtualbox/lib.rb +82 -0
  100. data/lib/virtualbox/media.rb +7 -6
  101. data/lib/virtualbox/medium.rb +138 -0
  102. data/lib/virtualbox/medium_attachment.rb +61 -0
  103. data/lib/virtualbox/network_adapter.rb +134 -0
  104. data/lib/virtualbox/shared_folder.rb +53 -78
  105. data/lib/virtualbox/storage_controller.rb +76 -20
  106. data/lib/virtualbox/system_properties.rb +74 -0
  107. data/lib/virtualbox/usb_controller.rb +55 -0
  108. data/lib/virtualbox/version.rb +15 -0
  109. data/lib/virtualbox/virtual_system_description.rb +47 -0
  110. data/lib/virtualbox/vm.rb +160 -272
  111. data/test/test_helper.rb +0 -108
  112. data/test/virtualbox/abstract_model/attributable_test.rb +7 -1
  113. data/test/virtualbox/abstract_model/dirty_test.rb +1 -1
  114. data/test/virtualbox/abstract_model/interface_attributes_test.rb +169 -0
  115. data/test/virtualbox/abstract_model/relatable_test.rb +20 -0
  116. data/test/virtualbox/abstract_model_test.rb +40 -5
  117. data/test/virtualbox/appliance_test.rb +152 -0
  118. data/test/virtualbox/audio_adapter_test.rb +83 -0
  119. data/test/virtualbox/bios_test.rb +83 -0
  120. data/test/virtualbox/com/abstract_enum_test.rb +48 -0
  121. data/test/virtualbox/com/abstract_implementer_test.rb +39 -0
  122. data/test/virtualbox/com/abstract_interface_test.rb +139 -0
  123. data/test/virtualbox/com/ffi/interface_test.rb +249 -0
  124. data/test/virtualbox/com/ffi/util_test.rb +86 -0
  125. data/test/virtualbox/com/ffi_interface_test.rb +42 -0
  126. data/test/virtualbox/com/implementer/base_test.rb +37 -0
  127. data/test/virtualbox/com/implementer/ffi_test.rb +519 -0
  128. data/test/virtualbox/com/implementer/mscom_test.rb +208 -0
  129. data/test/virtualbox/com/mscom_interface_test.rb +17 -0
  130. data/test/virtualbox/com/util_test.rb +17 -0
  131. data/test/virtualbox/dvd_test.rb +4 -95
  132. data/test/virtualbox/ext/platform_test.rb +8 -0
  133. data/test/virtualbox/extra_data_test.rb +78 -102
  134. data/test/virtualbox/forwarded_port_test.rb +57 -7
  135. data/test/virtualbox/global_test.rb +25 -115
  136. data/test/virtualbox/hard_drive_test.rb +49 -212
  137. data/test/virtualbox/lib_test.rb +93 -0
  138. data/test/virtualbox/medium_attachment_test.rb +147 -0
  139. data/test/virtualbox/medium_test.rb +192 -0
  140. data/test/virtualbox/network_adapter_test.rb +160 -0
  141. data/test/virtualbox/shared_folder_test.rb +144 -160
  142. data/test/virtualbox/storage_controller_test.rb +166 -45
  143. data/test/virtualbox/system_properties_test.rb +87 -0
  144. data/test/virtualbox/usb_controller_test.rb +104 -0
  145. data/test/virtualbox/version_test.rb +34 -0
  146. data/test/virtualbox/virtual_system_description_test.rb +61 -0
  147. data/test/virtualbox/vm_test.rb +288 -322
  148. data/test/virtualbox_test.rb +1 -9
  149. data/virtualbox.gemspec +139 -23
  150. metadata +143 -27
  151. data/lib/virtualbox/attached_device.rb +0 -249
  152. data/lib/virtualbox/command.rb +0 -109
  153. data/lib/virtualbox/image.rb +0 -137
  154. data/lib/virtualbox/nic.rb +0 -111
  155. data/lib/virtualbox/system_property.rb +0 -55
  156. data/lib/virtualbox/usb.rb +0 -72
  157. data/test/virtualbox/attached_device_test.rb +0 -303
  158. data/test/virtualbox/command_test.rb +0 -152
  159. data/test/virtualbox/image_test.rb +0 -190
  160. data/test/virtualbox/nic_test.rb +0 -76
  161. data/test/virtualbox/system_property_test.rb +0 -71
  162. data/test/virtualbox/usb_test.rb +0 -35
@@ -0,0 +1,165 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Implementer
4
+ class MSCOM < Base
5
+ attr_reader :lib
6
+ attr_reader :object
7
+
8
+ # Initializes the MSCOM implementer.
9
+ #
10
+ # @param [AbstractInterface] inteface
11
+ # @param [FFI::Pointer] pointer
12
+ def initialize(interface, lib_base, object)
13
+ super(interface)
14
+
15
+ @lib = lib_base
16
+ @object = object
17
+ end
18
+
19
+ # Reads a property from the interface with the given name.
20
+ def read_property(name, opts)
21
+ # First get the basic value from the COM object
22
+ value = @object[COM::FFI::Util.camelize(name.to_s)]
23
+
24
+ # Then depending on the value type, we either return as-is or
25
+ # must wrap it up in another interface class
26
+ returnable_value(value, opts[:value_type])
27
+ end
28
+
29
+ # Writes a property from the interface with the given name and
30
+ # value.
31
+ def write_property(name, value, opts)
32
+ # Set the property with a prepared value
33
+ @object[COM::FFI::Util.camelize(name.to_s)] = spec_to_args([opts[:value_type]], [value]).first
34
+ end
35
+
36
+ # Calls a function from the interface with the given name
37
+ def call_function(name, args, opts)
38
+ # Convert args to proper values to send and send em!
39
+ args = spec_to_args(opts[:spec], args)
40
+ value = @object.send(COM::FFI::Util.camelize(name.to_s), *args)
41
+
42
+ # TODO: Multiple return values
43
+ returnable_value(value, opts[:value_type])
44
+ end
45
+
46
+ #############################################################
47
+ # Internal Methods, a.k.a. unless you're hacking on the code of this
48
+ # library, you should do well to leave these alone =]
49
+ #############################################################
50
+
51
+ # Takes a function spec and an argument list. This handles properly converting
52
+ # enums to ints and {AbstractInterface}s to proper MSCOM interfaces.
53
+ def spec_to_args(spec, args)
54
+ args = args.dup
55
+
56
+ # First remove all :out parameters from the spec, since those are of no
57
+ # concern for MSCOM at this point
58
+ spec = spec.collect do |item|
59
+ if item.is_a?(Array) && item[0] == :out
60
+ nil
61
+ else
62
+ item
63
+ end
64
+ end.compact
65
+
66
+ spec = spec.collect do |item|
67
+ if item == T_BOOL
68
+ args.shift ? 1 : 0
69
+ elsif item.to_s[0,1] == item.to_s[0,1].upcase
70
+ # Try to get the class from the interfaces
71
+ interface = interface_klass(item.to_sym)
72
+
73
+ if interface.superclass == COM::AbstractInterface
74
+ # For interfaces, get the instance, then dig deep to get the pointer
75
+ # to the VtblParent, which is what the API expects
76
+ instance = args.shift
77
+
78
+ if !instance.nil?
79
+ # Get the actual MSCOM object, rather than the AbstractInterface
80
+ instance.implementer.object
81
+ else
82
+ # If the argument was nil, just pass a nil pointer as the argument
83
+ nil
84
+ end
85
+ elsif interface.superclass == COM::AbstractEnum
86
+ # For enums, we need the value of the enum
87
+ interface.index(args.shift.to_sym)
88
+ end
89
+ else
90
+ # Simply replace spec item with next item in args
91
+ # list
92
+ args.shift
93
+ end
94
+ end
95
+ end
96
+
97
+ # Takes a value (returned from a WIN32OLE object) and a type and converts
98
+ # to a proper ruby return value type.
99
+ def returnable_value(value, type)
100
+ # Types which are void or nil just return
101
+ return nil if type.nil? || type == :void
102
+
103
+ klass = type.is_a?(Array) ? type.first : type
104
+ ignore, inferred_type = infer_type(klass)
105
+
106
+ array_of = type.is_a?(Array) ? "array_of_" : ""
107
+ send("read_#{array_of}#{inferred_type}", value, type)
108
+ end
109
+
110
+ def read_unicode_string(value, type)
111
+ # Return as-is
112
+ value
113
+ end
114
+
115
+ def read_char(value, type)
116
+ # Convert to a boolean
117
+ !(value.to_s == "0")
118
+ end
119
+
120
+ def read_ushort(value, type)
121
+ value.to_i
122
+ end
123
+
124
+ def read_uint(value, type)
125
+ value.to_i
126
+ end
127
+
128
+ def read_ulong(value, type)
129
+ value.to_i
130
+ end
131
+
132
+ def read_int(value, type)
133
+ value.to_i
134
+ end
135
+
136
+ def read_long(value, type)
137
+ value.to_i
138
+ end
139
+
140
+ def read_enum(value, type)
141
+ interface_klass(type)[value]
142
+ end
143
+
144
+ def read_interface(value, type)
145
+ return nil if value.nil?
146
+ interface_klass(type).new(self.class, lib, value)
147
+ end
148
+
149
+ def read_array_of_unicode_string(value, type)
150
+ # Return as-is, since MSCOM returns ruby strings!
151
+ value
152
+ end
153
+
154
+ def read_array_of_interface(value, type)
155
+ klass = interface_klass(type.first)
156
+ value.collect do |item|
157
+ if !item.nil?
158
+ klass.new(self.class, lib, item)
159
+ end
160
+ end
161
+ end
162
+ end
163
+ end
164
+ end
165
+ end
@@ -0,0 +1,10 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Implementer
4
+ # A "nil" implementer which doesn't actually do anything. This is used in
5
+ # tests.
6
+ class Nil < AbstractImplementer
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,20 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ class Appliance < AbstractInterface
5
+ IID = "e3ba9ab9-ac2c-4266-8bd2-91c4bf721ceb"
6
+
7
+ property :path, WSTRING, :readonly => true
8
+ property :disks, [WSTRING], :readonly => true
9
+ property :virtual_system_descriptions, [:VirtualSystemDescription], :readonly => true
10
+
11
+ function :read, :Progress, [WSTRING]
12
+ function :interpret, nil, []
13
+ function :import_machines, :Progress, []
14
+ function :create_vfs_explorer, :VFSExplorer, [WSTRING]
15
+ function :write, :Progress, [WSTRING, WSTRING]
16
+ function :get_warnings, [WSTRING], []
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,13 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ class AudioAdapter < AbstractInterface
5
+ IID = "921873db-5f3f-4b69-91f9-7be9e535a2cb"
6
+
7
+ property :enabled, T_BOOL
8
+ property :audio_controller, :AudioControllerType
9
+ property :audio_driver, :AudioDriverType
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ class AudioControllerType < AbstractEnum
5
+ map [:ac97, :sb16]
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ class AudioDriverType < AbstractEnum
5
+ map [:null, :winmm, :oss, :alsa, :direct_sound, :core_audio, :mmpm, :pulse, :sol_audio]
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ class BIOSBootMenuMode < AbstractEnum
5
+ map [:disabled, :menu_only, :message_and_menu]
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ class BIOSSettings < AbstractInterface
5
+ IID = "38b54279-dc35-4f5e-a431-835b867c6b5e"
6
+
7
+ property :logo_fade_in, T_BOOL
8
+ property :logo_fade_out, T_BOOL
9
+ property :logo_display_time, T_UINT32
10
+ property :logo_image_path, WSTRING
11
+ property :boot_menu_mode, :BIOSBootMenuMode
12
+ property :acpi_enabled, T_BOOL
13
+ property :io_apic_enabled, T_BOOL
14
+ property :time_offset, T_INT64
15
+ property :pxe_debug_enabled, T_BOOL
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,9 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ class ClipboardMode < AbstractEnum
5
+ map [:disabled, :host_to_guest, :guest_to_host, :bidirectional]
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,48 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ class Console < AbstractInterface
5
+ IID = "6375231a-c17c-464b-92cb-ae9e128d71c3"
6
+
7
+ property :machine, :Machine, :readonly => true
8
+ property :state, :MachineState, :readonly => true
9
+ property :guest, :Guest, :readonly => true
10
+ property :keyboard, :Keyboard, :readonly => true
11
+ property :mouse, :Mouse, :readonly => true
12
+ property :display, :Display, :readonly => true
13
+ property :debugger, :MachineDebugger, :readonly => true
14
+ property :usb_devices, [:USBDevice], :readonly => true
15
+ property :remote_usb_devices, [:HostUSBDevice], :readonly => true
16
+ property :shared_folders, [:SharedFolder], :readonly => true
17
+ property :remote_display_info, :RemoteDisplayInfo, :readonly => true
18
+
19
+ function :power_up, :Progress, []
20
+ function :power_up_paused, :Progress, []
21
+ function :power_down, :Progress, []
22
+ function :reset, nil, []
23
+ function :pause, nil, []
24
+ function :resume, nil, []
25
+ function :power_button, nil, []
26
+ function :sleep_button, nil, []
27
+ function :get_power_button_handled, T_BOOL, []
28
+ function :get_guest_entered_acpi_mode, T_BOOL, []
29
+ function :save_state, :Progress, []
30
+ function :adopt_saved_state, nil, [WSTRING]
31
+ function :forget_saved_state, nil, [T_BOOL]
32
+ function :get_device_activity, :DeviceActivity, [:DeviceType]
33
+ function :attach_usb_device, nil, [WSTRING]
34
+ function :detach_usb_device, :USBDevice, [WSTRING]
35
+ function :find_usb_device_by_address, :USBDevice, [WSTRING]
36
+ function :find_usb_device_by_id, :USBDevice, [WSTRING]
37
+ function :create_shared_folder, nil, [WSTRING, WSTRING, T_BOOL]
38
+ function :remove_shared_folder, nil, [WSTRING]
39
+ function :take_snapshot, :Progress, [WSTRING, WSTRING]
40
+ function :delete_snapshot, :Progress, [WSTRING]
41
+ function :restore_snapshot, :Progress, [:Snapshot]
42
+ function :teleport, :Progress, [WSTRING, T_UINT32, WSTRING, T_UINT32]
43
+ function :register_callback, nil, [:ConsoleCallback]
44
+ function :unregister_callback, nil, [:ConsoleCallback]
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,9 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ class CpuPropertyType < AbstractEnum
5
+ map [:null, :pae, :synthetic]
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ class DeviceType < AbstractEnum
5
+ map [:null, :floppy, :dvd, :hard_disk, :network, :usb, :shared_folder]
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,20 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ class DHCPServer < AbstractInterface
5
+ IID = "6cfe387c-74fb-4ca7-bff6-973bec8af7a3"
6
+
7
+ property :enabled, T_BOOL
8
+ property :ip_address, WSTRING, :readonly => true
9
+ property :network_mask, WSTRING, :readonly => true
10
+ property :network_name, WSTRING, :readonly => true
11
+ property :lower_ip, WSTRING, :readonly => true
12
+ property :upper_ip, WSTRING, :readonly => true
13
+
14
+ function :set_configuration, nil, [WSTRING, WSTRING, WSTRING, WSTRING]
15
+ function :start, nil, [WSTRING, WSTRING, WSTRING]
16
+ function :stop, nil, []
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,9 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ class FirmwareType < AbstractEnum
5
+ map [:bios, :efi, :efi32, :efi64, :efidual]
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,21 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ class GuestOSType < AbstractInterface
5
+ IID = "cfe9e64c-4430-435b-9e7c-e3d8e417bd58"
6
+
7
+ property :family_id, WSTRING, :readonly => true
8
+ property :family_description, WSTRING, :readonly => true
9
+ property :id, WSTRING, :readonly => true
10
+ property :description, WSTRING, :readonly => true
11
+ property :is_64_bit, T_BOOL, :readonly => true
12
+ property :recommended_io_apic, T_BOOL, :readonly => true
13
+ property :recommended_virt_ex, T_BOOL, :readonly => true
14
+ property :recommended_ram, T_UINT32, :readonly => true
15
+ property :recommended_vram, T_UINT32, :readonly => true
16
+ property :recommended_hdd, T_UINT32, :readonly => true
17
+ property :adapter_type, :NetworkAdapterType, :readonly => true
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,40 @@
1
+ module VirtualBox
2
+ module COM
3
+ module Interface
4
+ class Host < AbstractInterface
5
+ IID_STR = "e380cbfc-ae65-4fa6-899e-45ded6b3132a"
6
+
7
+ property :dvd_drives, [:Medium], :readonly => true
8
+ property :floppy_drives, [:Medium], :readonly => true
9
+ property :usb_devices, [:HostUSBDevice], :readonly => true
10
+ property :usb_device_filters, [:HostUSBDeviceFilter], :readonly => true
11
+ property :network_interfaces, [:HostNetworkInterface], :readonly => true
12
+ property :processor_count, T_ULONG, :readonly => true
13
+ property :processor_online_count, T_ULONG, :readonly => true
14
+ property :memory_size, T_ULONG, :readonly => true
15
+ property :memory_available, T_ULONG, :readonly => true
16
+ property :operating_system, WSTRING, :readonly => true
17
+ property :os_version, WSTRING, :readonly => true
18
+ property :utc_time, T_INT64, :readonly => true
19
+ property :acceleration_3d_available, T_BOOL, :readonly => true
20
+
21
+ function :get_processor_speed, T_ULONG, [T_UINT32]
22
+ function :get_processor_feature, T_BOOL, [T_UINT32] # TODO ENUM
23
+ function :get_processor_description, WSTRING, [T_UINT32]
24
+ function :get_processor_cpu_id_leaf, nil, [T_UINT32, T_UINT32, T_UINT32, [:out, T_UINT32], [:out, T_UINT32], [:out, T_UINT32], [:out, T_UINT32]]
25
+ function :create_host_only_network_interface, :Progress, [[:out, :HostNetworkInterface]]
26
+ function :remove_host_only_network_interface, :Progress, [WSTRING]
27
+ function :create_usb_device_filter, :HostUSBDeviceFilter, [WSTRING]
28
+ function :insert_usb_device_filter, nil, [T_UINT32, :HostUSBDeviceFilter]
29
+ function :remove_usb_device_filter, nil, [T_UINT32]
30
+ function :find_host_dvd_drive, :Medium, [WSTRING]
31
+ function :find_host_floppy_drive, :Medium, [WSTRING]
32
+ function :find_host_network_interface_by_name, :HostNetworkInterface, [WSTRING]
33
+ function :find_host_network_interface_by_id, :HostNetworkInterface, [WSTRING]
34
+ function :find_host_network_interfaces_of_type, [:HostNetworkInterface], [:HostNetworkInterfaceType]
35
+ function :find_usb_device_by_id, :HostUSBDevice, [WSTRING]
36
+ function :find_usb_device_by_address, :HostUSBDevice, [WSTRING]
37
+ end
38
+ end
39
+ end
40
+ end