Compartilhar via


Fluxo de preenchimento automático

Aplica-se a: Outlook 2013 | Outlook 2016

Além de saber como o Microsoft Outlook interage com o fluxo de preenchimento automático, você também deve entender formato binário dele.

O fluxo de preenchimento automático é um conjunto de linhas de propriedade de destinatário salvo como um fluxo de binário com alguns metadados contábeis usados apenas pelo Microsoft Outlook 2013, o Microsoft Outlook 2010, o Microsoft Office Outlook 2007 e o Microsoft Outlook 2003. Os metadados são relevantes para as interações do Outlook com o fluxo de preenchimento automático, assim terceiros devem manter o que está em cada bloco de metadados quando salvam um fluxo de preenchimento automático modificado. Em outras palavras, terceiros devem modificar apenas a parte do conjunto de linhas do formato binário e preservar o que já estava nos blocos de metadados do fluxo de preenchimento automático.

Visualização de Fluxo

O layout de alto nível do fluxo de preenchimento automático é o seguinte:

Metadados (4 bytes)

Número da Versão Principal (4 bytes)

Número da Versão Secundária (4 bytes)

Número de linhas n (4 bytes)

Número de propriedades p na linha um (4 bytes)

Marca da propriedade 1 (4 bytes)

Dados reservados da propriedade 1 (4 bytes)

União de valor da propriedade 1 (8 bytes)

Dados de valor da propriedade 1 (0 byte ou bytes variáveis)

… (da propriedade 2 à propriedade P-1)

Marca da propriedade p (4 bytes)

Dados reservados da propriedade p (4 bytes)

União de valor da propriedade p (8 bytes)

Dados de valor da propriedade p (0 byte ou bytes variáveis)

Número de propriedades q na linha dois (4 bytes)

… (propriedades da linha dois)

… (da linha 3 à linha n-1)

Número de propriedades r na linha n (4 bytes)

… (propriedades da linha n)

EI de contagem de bytes de informações extras (4 bytes)

Informações extras (bytes EI)

Metadados (8 bytes)

Para ver um exemplo de estrutura binária, confira o Exemplo Binário nas Diretrizes para Desenvolvedor e Formato de Arquivo do Outlook 2003/2007 NK2.

Layout de Alto Nível

Em geral, o layout do fluxo de preenchimento automático é o seguinte:

Dados do Valor Número de Bytes
Metadados
4
Número da Versão Principal
4
Número da Versão Secundária
4
Conjunto de linhas
Variável
EI de contagem de bytes de informações extras
4
Informações extras
EI
Metadados
8

Ao ler este fluxo, se a versão principal for diferente da 12, então ele não deverá ser lido nem gravado. A versão secundária atual do fluxo de preenchimento automático é 0, que tem a contagem de Bytes de Informações Extras definida como 0. Se a versão secundária for diferente de 0, então as informações extras apresentarão informações que precisam ser lidas na leitura do fluxo e preservadas na gravação do fluxo. A versão secundária também deverá ser preservada ao gravar o fluxo. Se ambas não forem preservadas, as instâncias do Outlook que gravarem informações extras perderão os dados.

Observação

Aplicativos não devem adicionar dados personalizados ao campo Informações Extras nem alterar a versão secundária, já que esta funcionalidade existe para dar suporte ao formato de extensões do Outlook e a extensões não arbitrárias de terceiros.

Layout de conjunto de linhas

O layout do conjunto de linhas é o seguinte:

Dados do Valor Número de Bytes
Número de linhas
4
Linhas
Variável

O número de linhas identifica quantas linhas existem na próxima parte da sequência de fluxo binário.

Layout de Linha

Cada linha tem o seguinte formato:

Dados do Valor Número de Bytes
Número de Propriedades
4
Propriedades
Variável

O número de propriedades identifica quantas propriedades existem na próxima parte da sequência de fluxo binário.

Layout de Propriedade

Cada propriedade tem o seguinte formato:

Dados do Valor Número de Bytes
Marca de Propriedade
4
Dados Reservados
4
União do Valor da Propriedade
Dados do Valor
0 ou variável (dependendo da marca propr)

Interpretar o Valor da Propriedade

A União do Valor da Propriedade e os Dados de Valor são interpretados com base na marca de propriedade dos primeiros 4 bytes do bloco de propriedade. Essa marca de propriedade está no mesmo formato de uma marca de propriedade MAPI. Os bits de 0 a 15 da marca propriedade indicam o tipo da propriedade. Os bits de 16 a 31 são o identificador da propriedade. O tipo de propriedade determina como o restante da propriedade deve ser lido.

Valor Estático

Algumas propriedades não têm Dados de Valor e só têm dados na união. Os seguintes tipos de propriedades (procedentes da Marca da Propriedade) devem interpretar os dados da União de Propriedade de 8 bytes da seguinte forma:

Tipo de Propr Interpretação da União da Propriedade
PT_I2
short int
PT_LONG
long
PT_ERROR
long
PT_R4
float
PT_DOUBLE
double
PT_BOOLEAN
short int
PT_SYSTIME
FILETIME
PT_I8
LARGE_INTEGER

Valores Dinâmicos

Outras propriedades têm dados em um bloco de Valor de Dados após os primeiros 16 bytes que contêm a Marca de Propriedade, os Dados Reservados e a União de Valor da Propriedade. Ao contrário dos valores estáticos, os dados armazenados na União de Valor da Propriedade 8 bytes são irrelevantes para a leitura. Ao gravar, certifique-se de preencher estes 8 bytes com algo. No entanto, o conteúdo desses 8 bytes não é importante. Nos valores dinâmicos, o tipo da marca de propriedade determina como interpretar os Dados de Valor.

PT_STRING8

Dados do Valor Número de Bytes
Número de bytes n
4
Bytes a interpretar como uma cadeia de caracteres ANSI (inclui um terminador NULL)
n

PT_CLSID

Dados do Valor Número de Bytes
Bytes a interpretar como um GUID
16

PT_BINARY

Dados do Valor Número de Bytes
Número de bytes n
4
Bytes a serem interpretados como uma matriz de byte
n

PT_MV_BINARY

Dados do Valor Número de Bytes
Número de matrizes binárias X
4
Uma execução de bytes com X matrizes binárias. Cada matriz deve ser interpretada exatamente como a execução de byte PT_BINARY. Variável

PT_MV_STRING8 (Outlook 2007, Outlook 2010, and Outlook 2013)

Dados do Valor Número de Bytes
Número de cadeias de caracteres ANSI X
4
Uma execução de bytes com X cadeias de caracteres ANSI. Cada cadeia de caracteres deve ser interpretada exatamente como a execução de byte PT_STRING8. Variável

PT_MV_UNICODE (Outlook 2007, Outlook 2010, Outlook 2013)

Dados do Valor Número de Bytes
Número de cadeias de caracteres UNICODE X
4
Uma execução de bytes que contém X cadeias de caracteres UNICODE. Cada cadeia de caracteres deve ser interpretada exatamente como a execução de byte PT_UNICODE. Variável

Propriedades significativas

Como mencionado anteriormente neste tópico, os blocos binários que representam propriedades têm marcas de propriedade que correspondem às propriedades nos destinatários de catálogo de endereços. Para as propriedades que não estão listadas aqui, você pode pesquisar a descrição da propriedade na https://msdn.microsoft.com/library/cc433490(EXCHG.80).aspx.

Nome da propriedade Marca de Propriedade Descrição (confira MSDN para saber mais)
PR_NICK_NAME_W (não transmitida aos destinatários, específica apenas para o fluxo de preenchimento automático)
0x6001001f
Essa propriedade deve ser a primeira em cada linha de destinatário. Serve funcionalmente como um importante identificador para a linha de destinatário.
PR_ENTRYID
0x0FFF0102
O identificador de entrada de catálogo de endereço do destinatário.
PR_DISPLAY_NAME_W
0x3001001F
O nome de exibição do destinatário.
PR_EMAIL_ADDRESS_W
0x3003001F
Endereço de email do destinatário (por exemplo johndoe@contoso.com , ou /o=Contoso/OU=Foo/cn=Destinatários/cn=johndoe)
PR_ADDRTYPE_W
0x3002001F
O tipo de endereço do destinatário (por exemplo, SMTP ou EX).
PR_SEARCH_KEY
0x300B0102
A chave de pesquisa MAPI do destinatário.
PR_SMTP_ADDRESS_W
0x39FE001f
O endereço SMTP do destinatário.
PR_DROPDOWN_DISPLAY_NAME_W (não transmitida aos destinatários, específica apenas para o fluxo de preenchimento automático)
0X6003001f
A cadeia de caracteres de exibição exibida na lista de preenchimento automático.
PR_NICK_NAME_WEIGHT (não transmitida aos destinatários, específica apenas para o fluxo de preenchimento automático)
0x60040003
O peso desta entrada de preenchimento automático. O peso é usado para determinar em que ordem ocorrem as entradas de preenchimento automático ao fazer a correspondência da lista preenchimento automático. Entradas com maior peso são exibidas antes de entradas com peso inferior. A lista completa de preenchimento automático é classificada por esta propriedade. O peso periodicamente diminui ao longo do tempo e aumenta quando o usuário envia um email para esse destinatário. Confira a descrição neste tópico para saber mais sobre essa propriedade.

PR_NICK_NAME_WEIGHT

O conjunto de linhas no fluxo de preenchimento automático é classificado em ordem decrescente pela propriedade PR_NICK_NAME_WEIGHT, e o fluxo de preenchimento automático sempre deve preservar esse característica de classificação. Portanto, alterações ao peso da linha também devem garantir que a posição da linha mantém a ordem de classificação do conjunto completo de linhas. Os acréscimos ao conjunto de linhas devem ser inseridos na posição correta para manter a ordem de classificação.

O valor mínimo deste peso é de 0x1 e o valor máximo é LONG_MAX. Outros valores de peso são considerados inválidos.

Quando o Outlook 2007 envia um email ou resolve um destinatário, ele aumenta o peso do destinatário em 0x2000.