Compartir a través de


Secuencia de Autocompletar

Hace referencia a: Outlook 2013 | Outlook 2016

Además de saber cómo Microsoft Outlook interactúa con la secuencia de autocompletar, también debe comprender el formato binario de la secuencia de autocompletar.

La secuencia de autocompletar es un conjunto de filas de la propiedad de destinatario que se guardan como una secuencia binaria con algunos metadatos de contabilidad que solo usan Microsoft Outlook 2013, Microsoft Outlook 2010, Microsoft Office Outlook 2007 y Microsoft Outlook 2003. Los metadatos son relevantes para las interacciones de Outlook con el flujo de autocompletar, por lo que los terceros deben conservar el contenido de cada bloque de metadatos cuando guardan una secuencia de autocompletar modificada. Dicho de otro modo, los terceros deben modificar solo la parte del conjunto de filas del formato binario y conservar el contenido que ya está en los bloques de metadatos de la secuencia de autocompletar.

Visualización de flujo

El diseño de alto nivel de la secuencia de autocompletar es el siguiente:

Metadatos (4 bytes)

Número de versión principal (4 bytes)

Número de versión secundaria (4 bytes)

Número de filas n (4 bytes)

Número de propiedades p de la fila uno (4 bytes)

Etiqueta de propiedad de la Propiedad 1 (4 bytes)

Datos reservados de la Propiedad 1 (4 bytes)

Unión de valor de la Propiedad 1 (8 bytes)

Datos del valor de la Propiedad 1 (0 o bytes variables)

… (propiedades 2 por P-1)

Etiqueta de la propiedad de la Propiedad p (4 bytes)

Valor reservado de la Propiedad p (4 bytes)

Unión de valor de la Propiedad p (8 bytes)

Datos del valor de la Propiedad p (0 o bytes variables)

Número de propiedades q de la fila dos (4 bytes)

… (propiedades de la fila dos)

… (filas 3 a n-1)

Número de propiedades p de la fila n (4 bytes)

… (propiedades de la fila n)

EI de recuento de byte de información adicional (4 bytes)

Información adicional (bytes EI)

Metadatos (8 bytes)

Para obtener un ejemplo de una estructura binaria, vea el ejemplo binario en las Directrices de desarrollador y formato de archivo NK2 de Outlook 2003/2007.

Diseño de alto nivel

En términos generales, el diseño de la secuencia de autocompletar es el siguiente:

Datos de valor Número de bytes
Metadatos
4
Número de versión principal
4
Número de versión secundaria
4
Conjunto de filas
Variable
EI de recuento de byte de información adicional
4
Información adicional
EI
Metadatos
8

Al leer esta secuencia, si la versión principal es diferente de 12, esta secuencia no debe leerse ni escribirse. La versión secundaria actual de la secuencia de autocompletar es 0, que tiene el recuento de byte de información adicional establecido en 0. Si la versión secundaria es distinta de 0, habrá información en la información adicional que debe leerse al leer la secuencia y conservarse cuando se escribe la secuencia. La versión secundaria también deberá conservarse al escribir la secuencia. Si no se conservan ambas, las instancias de Outlook que escribieron la información adicional perderán datos.

Nota:

Las aplicaciones no deben agregar datos personalizados en el campo Información adicional o cambiar la versión secundaria, ya que esta funcionalidad admite las extensiones de Outlook en el formato y no extensiones arbitrarias de terceros.

Diseño del conjunto de filas

El diseño del conjunto de filas es el siguiente:

Datos de valor Número de bytes
Número de filas
4
Filas
Variable

El número de filas identifica cuántas filas tiene el siguiente elemento de la secuencia binaria.

Diseño de fila

Cada fila tiene el siguiente formato:

Datos de valor Número de bytes
Número de propiedades
4
Propiedades
Variable

El número de propiedades identifica cuántas propiedades tiene el siguiente elemento de la secuencia binaria.

Diseño de propiedad

Cada propiedad tiene el siguiente formato:

Datos de valor Número de bytes
Etiqueta de propiedad
4
Datos reservados
4
Unión de valor de propiedad
Información del valor
0 o variable (en función de la etiqueta de propiedad)

Interpretar el valor de propiedad

La unión de valor de propiedad y los datos de valor deben interpretarse en función de la etiqueta de propiedad de los 4 primeros bytes del bloque de propiedades. Esta etiqueta de propiedad está en el mismo formato que una etiqueta de propiedad MAPI. Los bits de 0 a 15 de la etiqueta de propiedad son el tipo de propiedad. Los bits de 16 a 31 son el identificador de la propiedad. El tipo de propiedad determina cómo se debe leer el resto de la propiedad.

Valor estático

Algunas propiedades no tienen Datos de valor y solo tienen datos en la unión. Los siguientes tipos de propiedades (que proceden de la Etiqueta de propiedad) deben interpretar los datos de la unión de propiedad de 8 bytes como sigue:

Tipo de propiedad Interpretación de la unión de propiedad
PT_I2
short int
PT_LONG
largo
PT_ERROR
largo
PT_R4
float
PT_DOUBLE
double
PT_BOOLEAN
short int
PT_SYSTIME
FILETIME
PT_I8
LARGE_INTEGER

Valores dinámicos

Otras propiedades tienen datos en un bloque de Datos del valor después de los primeros 16 bytes que contienen la Etiqueta de propiedad, los Datos reservados y la Unión de valor de propiedad. A diferencia de los valores estáticos, los datos almacenados en la Unión de valor de propiedad de 8 bytes son irrelevantes al leer. Al escribir, asegúrese de rellenar estos 8 bytes con algo. Sin embargo, no es importante el contenido de los 8 bytes. En los valores dinámicos, el tipo de etiqueta de propiedad determina cómo interpretar los Datos de valor.

PT_STRING8

Datos de valor Número de bytes
Número de bytes n
4
Bytes que se interpretarán como una cadena de ANSI (incluye terminador NULL)
n

PT_CLSID

Datos de valor Número de bytes
Bytes que se interpretarán como un GUID
16

PT_BINARY

Datos de valor Número de bytes
Número de bytes n
4
Bytes que se interpretarán como una matriz de bytes
n

PT_MV_BINARY

Datos de valor Número de bytes
Número de matrices binarias X
4
Una ejecución de bytes que contiene X matrices binarias. Cada matriz debe interpretarse exactamente igual al byte PT_BINARY ejecutado. Variable

PT_MV_STRING8 (Outlook 2007, Outlook 2010 y Outlook 2013)

Datos de valor Número de bytes
Número de cadenas ANSI X
4
Una ejecución de bytes que contiene las cadenas ANSI X. Cada cadena debe interpretarse exactamente igual al byte PT_STRING8 ejecutado. Variable

PT_MV_UNICODE (Outlook 2007, Outlook 2010, Outlook 2013)

Datos de valor Número de bytes
Número de cadenas UNICODE X
4
Una ejecución de bytes que contiene X cadenas UNICODE. Cada cadena debe interpretarse exactamente igual al byte PT_UNICODE ejecutado. Variable

Propiedades importantes

Como se indicó anteriormente en este tema, los bloques binarios que representan las propiedades tienen etiquetas de propiedades que se corresponden a propiedades de los destinatarios de la libreta de direcciones. Para propiedades que no se muestran aquí, puede buscar la descripción de la propiedad en https://msdn.microsoft.com/library/cc433490(EXCHG.80).aspx.

Nombre de propiedad Etiqueta de propiedad Descripción (vea MSDN para obtener más información)
PR_NICK_NAME_W (no se transmite en destinatarios, específica solo para la secuencia de autocompletar)
0x6001001f
Esta propiedad debe ser la primera en cada fila del destinatario. Actúa como un identificador de clave de la fila del destinatario.
PR_ENTRYID
0x0FFF0102
El identificador de entrada de la libreta de direcciones del destinatario.
PR_DISPLAY_NAME_W
0x3001001F
El nombre para mostrar del destinatario.
PR_EMAIL_ADDRESS_W
0x3003001F
Dirección de correo electrónico del destinatario (por ejemplo, johndoe@contoso.com o /o=Contoso/OU=Foo/cn=Recipients/cn=johndoe)
PR_ADDRTYPE_W
0x3002001F
Tipo de dirección del destinatario (por ejemplo, SMTP o EX).
PR_SEARCH_KEY
0x300B0102
La clave de búsqueda MAPI del destinatario.
PR_SMTP_ADDRESS_W
0x39FE001f
La dirección de SMTP del destinatario.
PR_DROPDOWN_DISPLAY_NAME_W (no se transmite en destinatarios, específica solo para la secuencia de autocompletar)
0X6003001f
La cadena para mostrar que aparece en la lista Autocompletar.
PR_NICK_NAME_WEIGHT (no se transmite en destinatarios, específica solo para la secuencia de autocompletar)
0x60040003
El peso de esta entrada de autocompletar. El peso se usa para determinar en qué orden se producen las entradas de autocompletar cuando coinciden con la lista autocompletar. Se mostrarán las entradas con mayor peso antes que las entradas con un peso inferior. Esta propiedad ordena la lista completa de autocompletar. El peso disminuye periódicamente con el tiempo y aumenta cuando el usuario envía un correo electrónico a este destinatario. Vea la descripción más adelante en este tema para obtener más información sobre esta propiedad.

PR_NICK_NAME_WEIGHT

La propiedad PR_NICK_NAME_WEIGHT ordena el conjunto de filas de la secuencia de autocompletar en orden descendente y la secuencia de autocompletar siempre debe conservar esta característica ordenada. Por lo tanto, los cambios realizados en el peso de una fila también deben asegurar que la posición de la fila mantiene el criterio de ordenación de un conjunto completo de filas. Cualquier adición al conjunto de filas debe insertarse en la posición para mantener el orden correcto.

El valor mínimo de este peso es 0x1 y el valor máximo es LONG_MAX. Otros valores para el peso se consideran no válidos.

Cuando Outlook 2007 envía un correo o resuelve a un destinatario, aumentará el peso del destinatario en 0x2000.