Compartilhar via


IXPLogon::AddressTypes

Aplica-se a: Outlook 2013 | Outlook 2016

Retorna os tipos de destinatários que o provedor de transporte manipula.

HRESULT AddressTypes(
  ULONG FAR * lpulFlags,
  ULONG FAR * lpcAdrType,
  LPSTR FAR * FAR * lpppszAdrTypeArray,
  ULONG FAR * lpcMAPIUID,
  LPUID FAR * FAR * lpppUIDArray
);

Parâmetros

lpulFlags

[out] Um bitmask de sinalizadores que controla o tipo de cadeias de caracteres retornadas. O seguinte sinalizador pode ser definido:

MAPI_UNICODE

As cadeias de caracteres retornadas estão no formato Unicode. Se o sinalizador MAPI_UNICODE não estiver definido, as cadeias de caracteres estarão no formato ANSI.

lpcAdrType

[out] Um ponteiro para a contagem de entradas na matriz apontada pelo parâmetro lpppszAdrTypeArray .

lpppszAdrTypeArray

[out] Um ponteiro para um ponteiro para uma matriz de cadeias de caracteres que identificam tipos de destinatário.

lpcMAPIUID

[out] Um ponteiro para a contagem de entradas na matriz apontada pelo parâmetro lpppUIDArray .

lpppUIDArray

[out] Um ponteiro para um ponteiro para uma matriz de ponteiros para estruturas MAPIUID que identificam tipos de destinatário.

Valor de retorno

S_OK

O provedor de transporte indicou com êxito os tipos de destinatários que ele pode manipular.

Observações para implementadores

O spooler MAPI chama o método IXPLogon::AddressTypes imediatamente após um provedor de transporte retornar de uma chamada para o método IXPProvider::TransportLogon para que o provedor de transporte possa indicar quais tipos de destinatários ele manipula. Para indicar isso, o provedor de transporte deve passar de volta no parâmetro lpppszAdrTypeArray um ponteiro para uma matriz de ponteiros para cadeias de caracteres ou passar para trás no parâmetro lpppUIDArray um ponteiro para uma matriz de ponteiros para estruturas MAPIUID ou passar valores em ambos os parâmetros.

Essas duas matrizes são usadas para processos de identificação diferentes. MAPI e o spooler MAPI usam as estruturas MAPIUID na matriz lpppUIDArray para identificar os identificadores de entrada do destinatário que são tratados diretamente pelo provedor de transporte ou pelo sistema de mensagens ao qual o provedor de transporte se conecta. Nem MAPI nem o spooler MAPI expandem endereços usando identificadores de entrada contidos em qualquer uma dessas estruturas MAPIUID ; essas estruturas são usadas apenas para identificação de tipo de destinatário.

O spooler MAPI usa cada uma das cadeias de caracteres no parâmetro lpppszAdrTypeArray para um teste de comparação quando decide qual provedor de transporte deve lidar com quais destinatários para uma mensagem de saída. Se a propriedade PR_ADDRTYPE (PidTagAddressType) de um destinatário de mensagem corresponder exatamente a uma cadeia de caracteres que identifica um dos tipos de endereço de mensagens fornecidos pelo provedor de transporte, o provedor poderá entregar a mensagem a esse destinatário.

Se vários provedores de transporte puderem lidar com o mesmo tipo de destinatário, o MAPI selecionará um provedor de transporte com base na ordem de prioridade de transporte indicada no perfil do aplicativo cliente. Para determinar qual provedor de transporte usar, o spooler MAPI examina todas as estruturas MAPIUID especificadas pelo provedor em ordem de prioridade e, em seguida, todos os valores de tipo de endereço especificados pelo provedor em ordem de prioridade. O primeiro provedor de transporte a corresponder a um destinatário específico nesta verificação obtém a primeira oportunidade de lidar com esse destinatário. Se esse provedor não manipular o destinatário, o spooler MAPI continuará a verificação para encontrar um provedor de transporte para qualquer destinatário ainda não tratado. A verificação continua até que nenhuma correspondência adicional seja encontrada, momento em que um relatório não detalhado é gerado para qualquer destinatário que não tenha sido tratado.

Se o provedor sempre dá suporte a um determinado conjunto de tipos de destinatário, o tipo de endereço e as matrizes MAPIUID que o provedor de transporte passou podem ser estáticos. Se o provedor de transporte construir dinamicamente essas matrizes, ele poderá alocar memória usando o objeto de suporte que foi passado anteriormente na chamada para TransportLogon, embora isso não seja necessário.

A memória usada para o tipo de endereço e as matrizes MAPIUID devem permanecer alocadas até a chamada final para o método IXPLogon::TransportLogoff , quando o provedor de transporte pode liberar a memória, se necessário. O provedor de transporte não deve alterar o conteúdo dessas matrizes após retornar da chamada TransportLogoff .

Um provedor de transporte que pode lidar com qualquer tipo de destinatário pode retornar NULL no parâmetro lpppszAdrTypeArray . Provedores de transporte para sistemas de mensagens baseados em LAN que usam um servidor central para fornecer mensagens de saída para vários sistemas de mensagens estrangeiras geralmente fazem isso. Esse tipo de provedor de transporte deve ser instalado por último na ordem de prioridade do carretel MAPI e MAPI dos provedores de transporte no perfil.

Um provedor de transporte que não dá suporte a mensagens de saída enviadas para ele com base no tipo de endereço deve retornar uma única cadeia de caracteres de comprimento zero em lpppszAdrTypeArray. Se um provedor de transporte não dá suporte a nenhum tipo de destinatário, ele deverá passar NULL para a estrutura MAPIUID e uma cadeia de caracteres vazia para o tipo de endereço. Os provedores de transporte desse tipo são mais comumente usados para instalar um pré-processador de mensagens.

Confira também

IXPLogon::TransportLogoff

IXPProvider::TransportLogon

MAPIUID

IXPLogon : IUnknown