MAPI denominada propriedades

Aplica-se a: Outlook 2013 | Outlook 2016

O MAPI fornece um recurso para atribuir nomes a propriedades, para mapear esses nomes para identificadores exclusivos e para tornar esse mapeamento persistente. O mapeamento persistente de nome para identificador garante que os nomes de propriedade permaneçam válidos em todas as sessões.

Para definir uma propriedade nomeada, um cliente ou provedor de serviços cria um nome e o armazena em uma estrutura MAPINAMEID . Como os nomes são compostos por um identificador global exclusivo de 128 bits, ou GUID, e uma cadeia de caracteres Unicode ou um valor numérico de 32 bits, os criadores de propriedades nomeadas podem criar nomes significativos sem medo de duplicação. Os nomes são exclusivos e podem ser usados sem levar em conta o valor de seus identificadores.

Para dar suporte a propriedades nomeadas, um provedor de serviços implementa dois métodos — IMAPIProp::GetIDsFromNames e IMAPIProp::GetNamesFromIDs — para traduzir entre nomes e identificadores e permitir que seus métodos IMAPIProp::GetPropsIMAPIProp::SetProps recuperem e modifiquem propriedades com identificadores no intervalo de propriedades nomeadas. O intervalo para identificadores de propriedade nomeados está entre 0x8000 e 0xFFFE.

Qualquer objeto que implemente a interface IMAPIProp pode dar suporte a propriedades nomeadas. Os provedores de catálogo de endereços que permitem que entradas de outros provedores sejam copiadas em seus contêineres e provedores de repositório de mensagens que podem ser usados para criar tipos de mensagens arbitrárias são necessários para fornecer esse suporte. É uma opção para todos os outros provedores de serviços. Os provedores que não dão suporte a propriedades nomeadas retornam MAPI_E_NO_SUPPORT dos métodos GetIDsFromNames e GetNamesFromIDs e se recusam a definir propriedades com identificadores de 0x8000 ou maiores, retornando MAPI_E_UNEXPECTED no SPropProblemarray.

A criação de nomes para propriedades é uma maneira de os clientes definirem novas propriedades para classes de mensagens existentes ou personalizadas. Os provedores de serviços podem usar propriedades nomeadas para expor recursos exclusivos de seus sistemas de mensagens. Ainda outro uso para propriedades nomeadas é fornecer uma maneira alternativa de se referir a propriedades com identificadores abaixo de 0x8000.

Por exemplo, um cliente pode usar um código semelhante ao código a seguir para recuperar os nomes de todas as propriedades nomeadas de um objeto:

LPSPropTagArray FAR *    lppPropTags = NULL;
LPGUID                   lpPropSetGuid = NULL;
ULONG FAR *              lpcPropNames;
LPMAPINAMEID FAR * FAR * lpppPropNames;
lpMAPIProp->GetNamesFromIDs (lppPropTags,
                             lpPropSetGuid,
                             0,
                             lpcPropNames,
                             lpppPropNames);
 

Para solicitar todos os nomes do conjunto de propriedades PS_PUBLIC_STRINGS, um cliente substituiria o parâmetro NULL no conjunto de propriedades para PS_PUBLIC_STRINGS da seguinte maneira:

LPSPropTagArray FAR *    lppPropTags = NULL;
LPGUID                   lpPropSetGuid = &PS_PUBLIC_STRINGS;
ULONG FAR *              lpcPropNames;
LPMAPINAMEID FAR * FAR * lpppPropNames;
lpMAPIProp->GetNamesFromIDs (lppPropTags,
                             lpPropSetGuid,
                             0,
                             lpcPropNames,
                             lpppPropNames);
 

Confira também