MAPI denominada propriedades
Aplica-se a: Outlook 2013 | Outlook 2016
O MAPI fornece uma facilidade para atribuir nomes a propriedades, para mapear esses nomes para identificadores exclusivos e para tornar esse mapeamento persistente. O nome persistente no mapeamento do identificador garante que os nomes de propriedades permaneçam válidos entre as sessões.
Para definir uma propriedade nomeada, um cliente ou provedor de serviços compõe um nome e o armazena em uma estrutura MAPINAMEID . Como os nomes são compostos por um identificador globalmente 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 considerar 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 nomeado. 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. Provedores de catálogo de endereços que permitem que entradas de outros provedores sejam copiadas em seus contêineres e provedores de armazenamento 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. 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 quaisquer propriedades com identificadores de 0x8000 ou superior, retornando MAPI_E_UNEXPECTED no SPropProblemarray.
Criar 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. Outro uso para propriedades nomeadas é fornecer uma maneira alternativa de se referir a propriedades com identificadores abaixo 0x8000.
Por exemplo, um cliente poderia 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 NULL no parâmetro de 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);