def on_storage_device_change(self, medium_attachment, remove, silent):
        """Triggered when attached storage devices of the
        associated virtual machine have changed.

        in medium_attachment of type :class:`IMediumAttachment`
            The medium attachment which changed.

        in remove of type bool
            TRUE if the device is removed, FALSE if it was added.

        in silent of type bool
            TRUE if the device is is silently reconfigured without
            notifying the guest about it.

        raises :class:`VBoxErrorInvalidVmState`
            Session state prevents operation.
        
        raises :class:`VBoxErrorInvalidObjectState`
            Session type prevents operation.
        
        """
        if not isinstance(medium_attachment, IMediumAttachment):
            raise TypeError("medium_attachment can only be an instance of type IMediumAttachment")
        if not isinstance(remove, bool):
            raise TypeError("remove can only be an instance of type bool")
        if not isinstance(silent, bool):
            raise TypeError("silent can only be an instance of type bool")
        self._call("onStorageDeviceChange",
                     in_p=[medium_attachment, remove, silent])
Triggered when attached storage devices of the
        associated virtual machine have changed.

        in medium_attachment of type :class:`IMediumAttachment`
            The medium attachment which changed.

        in remove of type bool
            TRUE if the device is removed, FALSE if it was added.

        in silent of type bool
            TRUE if the device is is silently reconfigured without
            notifying the guest about it.

        raises :class:`VBoxErrorInvalidVmState`
            Session state prevents operation.
        
        raises :class:`VBoxErrorInvalidObjectState`
            Session type prevents operation.