'Optional method to perform further checks on a device to see if this driver
is capable of handling it. If it is not it should return False. This method
is only called after the vendor, product ids and the bcd have matched, so
it can do some relatively time intensive checks. The default implementation
returns True. This method is called only on windows. See also
:method:`can_handle`.
:param device_info: On windows a device ID string. On Unix a tuple of
``(vendor_id, product_id, bcd)``.
iPad implementation notes:
It is necessary to use this method to check for the presence of a connected
iPad, as we have to return True if we can handle device interaction, or False if not.'

def can_handle_windows(self, device_id, debug=False):

    import pythoncom
    if self.iTunes:
        try:
            pythoncom.CoInitialize()
            self.sources = self._get_sources()
            if ('iPod' in self.sources):
                if self.verbose:
                    sys.stdout.write('.')
                    sys.stdout.flush()
                if self.verbose:
                    logger().info(('%s.can_handle_windows:\n    confirming    connected    iPad' % self.__class__.__name__))
                self.ejected = False
                self._discover_manual_sync_mode()
                return True
            else:
                if self.verbose:
                    logger().info(('%s.can_handle_windows():\n    device    ejected' % self.__class__.__name__))
                self.ejected = True
                return False
        except:
            if self.verbose:
                logger().info(('ERROR:    %s.can_handle_windows():\n    no    connection    to    iTunes' % self.__class__.__name__))
            return False
        finally:
            pythoncom.CoUninitialize()
    else:
        if self.verbose:
            logger().info(('%s.can_handle_windows():\n    Launching    iTunes' % self.__class__.__name__))
        try:
            pythoncom.CoInitialize()
            self._launch_iTunes()
            self.sources = self._get_sources()
            if (('iPod' not in self.sources) or (self.sources['iPod'] == '')):
                attempts = 9
                while attempts:
                    self.sources = self._get_sources()
                    if (('iPod' not in self.sources) or (self.sources['iPod'] == '')):
                        attempts -= 1
                        time.sleep(1.0)
                        if self.verbose:
                            logger().info(('    waiting    for    connected    iDevice,    attempt    #%d' % (10 - attempts)))
                    else:
                        if self.verbose:
                            logger().info('    found    connected    iPad    in    iTunes')
                        break
                else:
                    if self.verbose:
                        logger().info('    iDevice    has    been    ejected')
                    self.ejected = True
                    return False
            logger().info('    found    connected    iPad    in    sources')
            self._discover_manual_sync_mode(wait=1.0)
        finally:
            pythoncom.CoUninitialize()
        return True
