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:
O método IABContainer::CreateEntry para criar a nova entrada.
O método IMAPIProp::GetProps para ler propriedades da entrada a ser copiada.
O método IMAPIProp::SetProps para gravar propriedades na nova entrada.
O método IMAPIProp::SaveChanges da nova entrada para executar uma salvação.
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.