code: def passthrough_device(self, name, controller_port, device, passthrough):
          
          if not isinstance(name, basestring):
              raise TypeError("name can only be an instance of type basestring")
          if not isinstance(controller_port, baseinteger):
              raise TypeError("controller_port can only be an instance of type baseinteger")
          if not isinstance(device, baseinteger):
              raise TypeError("device can only be an instance of type baseinteger")
          if not isinstance(passthrough, bool):
              raise TypeError("passthrough can only be an instance of type bool")
          self._call("passthroughDevice",
                       in_p=[name, controller_port, device, passthrough])
docs: Sets the passthrough mode of an existing DVD device. Changing the
          setting while the VM is running is forbidden. The setting is only used
          if at VM start the device is configured as a host DVD drive, in all
          other cases it is ignored. The device must already exist; see
          :py:func:`IMachine.attach_device`  for how to attach a new device.
          
          The @a controllerPort and @a device parameters specify the device slot and
          have have the same meaning as with :py:func:`IMachine.attach_device` .
  
          in name of type str
              Name of the storage controller.
  
          in controller_port of type int
              Storage controller port.
  
          in device of type int
              Device slot in the given port.
  
          in passthrough of type bool
              New value for the passthrough setting.
  
          raises :class:`OleErrorInvalidarg`
              SATA device, SATA port, IDE port or IDE slot out of range.
          
          raises :class:`VBoxErrorInvalidObjectState`
              Attempt to modify an unregistered virtual machine.
          
          raises :class:`VBoxErrorInvalidVmState`
              Invalid machine state.