Method: VirtualBox::COM::FFIInterface#initialize_for_version
- Defined in:
- lib/virtualbox/com/ffi_interface.rb
#initialize_for_version(version) ⇒ Object
Initializes the FFI interface for a specific version.
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/virtualbox/com/ffi_interface.rb', line 74 def initialize_for_version(version) logger.debug("FFI init: Trying version #{version}") # Setup the FFI classes COM::Util.set_interface_version(version) virtualbox_klass = COM::Util.versioned_interface(:VirtualBox) session_klass = COM::Util.versioned_interface(:Session) # Setup the OUT pointers virtualbox_ptr = ::FFI::MemoryPointer.new(:pointer) session_ptr = ::FFI::MemoryPointer.new(:pointer) # Call the initialization functions @xpcom[:pfnComInitialize].call(virtualbox_klass::IID_STR, virtualbox_ptr, session_klass::IID_STR, session_ptr) @virtualbox = virtualbox_klass.new(Implementer::FFI, self, virtualbox_ptr.get_pointer(0)) @session = session_klass.new(Implementer::FFI, self, session_ptr.get_pointer(0)) # Make a call to version to verify no exceptions are raised @virtualbox.implementer.valid? && @session.implementer.valid? logger.debug(" -- Valid version") true rescue ::FFI::NullPointerError => e logger.debug(" -- Invalid version") false end |