Desenvolvendo um manipulador do Windows Sync Center
Este tópico fornece um exame passo a passo dos requisitos para criar um arquivo DLL que implementa um manipulador a ser usado com o Centro de Sincronização. Essas informações são válidas a partir do Windows Vista.
A experiência de sincronização do Windows antes do Vista
O Windows XP forneceu um Gerenciador de Sincronização (mobsync.exe). Muitos dispositivos, como mp3 players, celulares e câmeras, também forneceram suas próprias interfaces de sincronização em vez de usar o Gerenciador de Sincronização. Isso resultou em uma experiência de usuário inconsistente e nãocentralizada.
O novo recurso do Centro de Sincronização fornecido no Windows Vista tem várias vantagens em relação ao Gerenciador de Sincronização mais antigo.
- Melhor capacidade de descoberta
- Menos necessidade de ação direta do usuário
- Não bloqueia outras operações
- Melhor visualização do progresso da sincronização
- Mais fácil de entender o modelo de desenvolvimento
Sync Center APIs
O Sync Center se comunica com manipuladores por meio de várias interfaces COM (Component Object Model). Nem todas essas interfaces são necessárias para implementar um manipulador do Centro de Sincronização. Este tópico foi dividido em duas seções. A primeira seção explica as interfaces COM essenciais que cada manipulador deve dar suporte e a segunda seção examina as interfaces COM opcionais e analisa os motivos pelos quais um manipulador os daria suporte.
Interfaces essenciais
Todos os manipuladores do Sync Center devem dar suporte às seguintes interfaces:
- ISyncMgrHandler
- ISyncMgrHandlerInfo
- ISyncMgrSyncItemContainer
- IEnumSyncMgrSyncItems
- ISyncMgrSyncItem
- ISyncMgrSyncItemInfo
ISyncMgrSyncItem e ISyncMgrSyncItemInfo são usados para descrever um único item de sincronização envolvido na sincronização com o Centro de Sincronização. Um item de sincronização geralmente representa um tipo de dados específico (como imagens) ou um local específico de dados.
Os itens de sincronização que representam diferentes locais de dados permitem sincronizações muito específicas. A granularidade do local cabe ao autor do manipulador, mas o cuidado deve ser tomado no design. Se houver poucos itens de sincronização (locais), o usuário será restrito em sua capacidade de sincronizar apenas determinados dados. No outro extremo, muita granularidade pode se tornar incontrolável.
Se um manipulador der suporte a mais de um tipo de dados ou vários locais de dados, ele precisará dar suporte a mais de um objeto de item de sincronização. Um exemplo pode ser um PDA (assistente de dados pessoais) que permite ao usuário sincronizar contatos, itens de calendário e documentos. Esses três tipos de dados precisariam ser representados por três objetos exclusivos que expõem as interfaces ISyncMgrSyncItem e ISyncMgrSyncItemInfo .
A interface IEnumSyncMgrSyncItems fornece um mecanismo para enumerar por meio de itens de sincronização de um manipulador. Para recuperar esse enumerador, o Sync Center chama o método ISyncMgrSyncItemContainer::GetSyncItemEnumerator exposto pelo manipulador. ISyncMgrSyncItemContainer também contém dois outros métodos que o Centro de Sincronização pode usar para recuperar informações sobre os itens de sincronização do manipulador:
- GetSyncItem retorna um item de sincronização específico.
- GetSyncItemCount retorna o número de itens de sincronização compatíveis com o manipulador.
ISyncMgrHandler e ISyncMgrHandlerInfo são usados para descrever as propriedades do hander e iniciar a sincronização real. ISyncMgrHandler::Synchronize é onde o código do manipulador realiza a sincronização e fornece comentários sobre o progresso e quaisquer problemas que ocorram.
Muitos dos métodos de interface não precisam ser totalmente implementados. O Centro de Sincronização fornece uma determinada quantidade de informações padrão. As interfaces permitem que um manipulador substitua essas informações e forneça informações personalizadas a serem exibidas, se necessário.