Compartilhar via


Enumerating Objects

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Enumeração é o processo de acessar cada objeto em um Diretório ou pasta para determinar se o objeto foi alterada e se os objetos alterados atendem aos critérios de seleção.

  1. As chamadas Gerenciador serviço IReplStore::IsFolderChanged.
  2. Se IReplStore::IsFolderChanged Retorna TRUE, Gerenciador chamadas do serviço IReplStore::FindFirstItem.
  3. Se houver outros objetos, IReplStore::FindFirstItem Define *pfExist para TRUE.
  4. As chamadas Gerenciador serviço IReplStore::FindNextItem repetidamente até *pfExist é FALSE, que indica não existem mais objetos ser enumerados.
  5. As chamadas Gerenciador serviço IReplStore::FindItemClose a livre quaisquer recursos que foram usados durante enumeração.

O seguinte mostra exemplo de código como para implementar IReplStore::FindFirstItem.

STDMETHODIMP CStore::FindFirstItem
(
   HREPLFLD hFolder,   // Handle to a folder
   HREPLITEM *phItem,   // Output pointer to the handle of the first
                 // item in the folder
   BOOL *pfExist      // Output pointer to a Boolean value that is set
                 // to TRUE if there is an object in the folder
)
{
   CFolder *pFolder = (CFolder*)hFolder;

   // Find the first item.
   // pItem in the following code points to the first item.
   // ...
   // Implementation retrieves the unique identifier from the first item.
   // pItem->m_uid        = retrieved_unique_ID;

   // Implementation retrieves whatever it uses to verify the first item
   // has changed; for example, a time stamp.
   // pItem->m_ftModified = retrieved_time_stamp;

   *phItem = (HREPLITEM)pItem;

   if (pfExist)
      *pfExist = TRUE;

   return NOERROR;
}

Durante enumeração, você pode selecionar apenas os objetos desejar para sincronizar por ter o área de trabalho provedor retornar para o Gerenciador serviço somente os que atenderem aos seus critérios. De exemplo, você pode desejar sincronizar apenas compromissos que caem dentro de próximo três dias. O Gerenciador serviço acessa critérios de seleção — que são armazenadas com o identificador pasta — por chamado IReplStore::IsItemReplicated.

Importante

Qualquer objeto retornado pela enumeração não aparece como um área de trabalho excluído objeto.O Gerenciador serviço assume o objeto foi excluído e exclui o correspondente objeto dispositivo.Para evitar a exclusão de objetos que não atendam aos critérios de seleção, certifique de área de trabalho enumeração do provedor retorna cada objeto a armazenar se o objeto atende aos critérios seleção ou não.

Você pode selecionar novamente como alteração condições. De exemplo, você pode desejar sincronizar compromissos que ocorrem dentro de próximo três dias, todos os dias. Em ordem para determinar o intervalo de data selecionar, as chamadas Gerenciador serviço IReplStore::ReportStatus Com RSC_DATE_CHANGED para iniciar o processo sincronização.

See Also

Concepts

Developing the Desktop Provider