Compartilhar via


IABContainer::CopyEntries

Aplica-se a: Outlook 2013 | Outlook 2016

Copia uma ou mais entradas, normalmente usuários de mensagens ou listas de distribuição.

HRESULT CopyEntries(
  LPENTRYLIST lpEntries,
  ULONG_PTR ulUIParam,
  LPMAPIPROGRESS lpProgress,
  ULONG ulFlags
);

Parâmetros

lpEntries

[in] Um ponteiro para uma matriz de estruturas ENTRYLIST que contém os identificadores de entrada das entradas a serem copiadas.

ulUIParam

[in] O identificador para a janela pai de qualquer caixa de diálogo ou janelas que este método exibe. O parâmetro ulUIParam deve ser zero se o sinalizador AB_NO_DIALOG for definido no parâmetro ulFlags .

lpProgress

[in] Um ponteiro para um objeto de progresso que exibe um indicador de progresso ou NULL. Se lpProgress for NULL, um indicador de progresso deverá ser exibido usando o objeto de progresso fornecido pela MAPI por meio do método IMAPISupport::D oProgressDialog . O parâmetro lpProgress será ignorado se o sinalizador AB_NO_DIALOG for definido em ulFlags.

ulFlags

[in] Um bitmask de sinalizadores que controla como a operação de cópia é executada. Os seguintes sinalizadores podem ser definidos:

AB_NO_DIALOG

Suprime a exibição de um indicador de progresso. Se esse sinalizador não estiver definido, um indicador de progresso será exibido.

CREATE_CHECK_DUP_LOOSE

Indica que um nível frouxo de verificação de entrada duplicada deve ser executado. A implementação da verificação de entrada duplicada frouxa é específica do provedor. Por exemplo, um provedor pode definir uma correspondência solta como qualquer duas entradas que tenham o mesmo nome de exibição.

CREATE_CHECK_DUP_STRICT

Indica que um nível estrito de verificação de entrada duplicada deve ser executado. A implementação da verificação de entrada duplicada estrita é específica do provedor. Por exemplo, um provedor pode definir uma correspondência estrita como qualquer duas entradas que tenham o mesmo nome de exibição e endereço de mensagens.

CREATE_REPLACE

Indica que uma nova entrada deve substituir uma existente se for determinado que os dois são duplicados.

Valor de retorno

S_OK

A operação de cópia foi bem-sucedida.

MAPI_W_PARTIAL_COMPLETION

A operação de cópia foi bem-sucedida no geral, mas uma ou mais das entradas não puderam ser copiadas. Quando esse valor é retornado, a chamada deve ser tratada como bem-sucedida. Para testar esse valor, use a macro HR_FAILED . Para obter mais informações, confira Usando macros para tratamento de erros.

Comentários

O método IABContainer::CopyEntries copia entradas do mesmo contêiner ou de um contêiner diferente. Uma chamada para CopyEntries é funcionalmente equivalente a fazer as seguintes chamadas para cada entrada a ser copiada:

  1. O método IABContainer::CreateEntry para criar a nova entrada.

  2. O método IMAPIProp::GetProps para ler propriedades da entrada a ser copiada.

  3. O método IMAPIProp::SetProps para gravar propriedades na nova entrada.

  4. O método IMAPIProp::SaveChanges da nova entrada para executar uma salvação.

  5. O método IUnknown::Release da nova entrada para liberar a referência do contêiner.

Observações para implementadores

Todos os contêineres que dão suporte ao método IABContainer::CopyEntries devem ser modificáveis. Defina o sinalizador de AB_MODIFIABLE do contêiner em sua propriedade PR_CONTAINER_FLAGS (PidTagContainerFlags) para indicar que ele é modificável.

Você deve dar suporte a todos os sinalizadores; no entanto, a interpretação e o uso desses sinalizadores são específicos da implementação, ou seja, você pode determinar o que a semântica dos sinalizadores CREATE_CHECK_DUP_LOOSE e CREATE_CHECK_DUP_STRICT significam no contexto de sua implementação. Se você não puder ou não determinar se uma entrada é duplicada, sempre permita que a entrada seja copiada.

Se o sinalizador CREATE_REPLACE estiver definido, copie sempre a entrada independentemente de CREATE_CHECK_DUP_LOOSE ou CREATE_CHECK_DUP_STRICT estiver definida e se a entrada é duplicada.

Se CREATE_REPLACE não estiver definida e CREATE_CHECK_DUP_STRICT estiver definida, marcar para duplicatas. Se uma entrada for determinada como uma duplicata, não copie a entrada.

Você não precisa dar suporte a CREATE_REPLACE; não dar suporte a CREATE_REPLACE significa que você pode ignorá-lo com segurança e sempre executar uma cópia.

Retorne o aviso MAPI_W_PARTIAL_COMPLETION somente se uma entrada não duplicada não puder ser copiada.

Notas para chamadores

Use os sinalizadores CREATE_CHECK_DUP_LOOSE e CREATE_CHECK_DUP_STRICT para indicar ao provedor como você deseja que o contêiner execute a verificação de entrada duplicada. Se você precisar ter uma entrada adicionada independentemente de ser uma duplicata, não defina nenhum desses sinalizadores ou defina o sinalizador CREATE_REPLACE. CREATE_REPLACE indica que você não se importa se uma entrada é duplicada; você sempre deseja que ele substitua a entrada original.

Confira também

ENTRYLIST

IABContainer::CreateEntry

IMAPIProgress : IUnknown

IMAPIProp::SaveChanges

IABContainer : IMAPIContainer