Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Hace referencia a: Outlook 2013 | Outlook 2016
MAPI proporciona tres tipos de propiedad diferentes para describir las propiedades de cadena:
PT_TSTRING
PT_STRING8
PT_UNICODE
Las propiedades de cadena se definen normalmente como PT_TSTRING. El tipo de propiedad PT_TSTRING se compila condicionalmente en uno de los otros tipos de propiedad de cadena, dependiendo de si se ha definido la macro UNICODE. PT_STRING8 describe cadenas de caracteres terminadas en NULL de 8 bits en formato ANSI; PT_UNICODE describe cadenas de caracteres terminadas en NULL de doble byte.
Un cliente o un proveedor de servicios, o tanto el cliente como el proveedor pueden optar por admitir cadenas de caracteres Unicode. No es necesario. Un cliente que solo admite PT_STRING8 cadenas puede funcionar con un proveedor que admita Unicode y viceversa. Para habilitar esta interoperabilidad, los clientes y proveedores de servicios pasan una marca, la marca MAPI_UNICODE, para indicar que Unicode se admite en métodos que implican el intercambio de cadenas de caracteres.
Por ejemplo, supongamos que un cliente admite Unicode y necesita recuperar el nombre para mostrar de una carpeta. Todas las propiedades de PT_TSTRING del cliente se compilan para escribir PT_UNICODE. Cuando el cliente llama al método IMAPIProp::GetProps de la carpeta para recuperar su propiedad PR_DISPLAY_NAME (PidTagDisplayName), pasa la marca MAPI_UNICODE para solicitar que se devuelva la cadena de nombre para mostrar en el formato Unicode.
Los clientes y proveedores de servicios deben tener en cuenta que especificar un juego de caracteres en una llamada de método es solo una solicitud. La compatibilidad con uno o ambos conjuntos de caracteres depende del implementador del objeto. Sin embargo, se recomienda a los proveedores de servicios que admitan ambos conjuntos de caracteres porque les permite lograr una distribución más generalizada que los proveedores que solo admiten un conjunto.
Las propiedades de cadena pueden crecer hasta ser bastante grandes, como las propiedades binarias, las propiedades que usan el tipo de propiedad PT_BINARY. Para facilitar el trabajo con propiedades grandes, MAPI permite a los proveedores de servicios establecer estas propiedades para aplicar límites de tamaño. Estos límites pueden variar, dependiendo de:
Si las propiedades se están leyendo o escribiendo.
Cómo implementa el proveedor de servicios los métodos IMAPIProp .
Consideraciones en tiempo de ejecución, como las restricciones de memoria.
Problemas de traducción del juego de caracteres.
Los límites de tamaño también se pueden colocar en las propiedades de cadena y binarias cuando se usan en el conjunto de columnas de una tabla porque a veces es imposible hacer visible el valor de una propiedad grande. Muchos proveedores de servicios truncan las propiedades binarias o de cadena grandes que se usan en tablas a 255 bytes.
Cuando un cliente llama al método GetProps o SetProps de un objeto para que funcione con una cadena grande o una propiedad binaria y se produce un error en la llamada debido al tamaño de la propiedad, el método devuelve el valor de error MAPI_E_NOT_ENOUGH_MEMORY. Si se produce un error en GetProps para una propiedad específica, el cliente puede recuperarse llamando a IMAPIProp::OpenProperty y solicitando acceso a IStream especificando IID_IStream como identificador de interfaz. Con OpenProperty, el cliente puede recuperar una propiedad grande mediante una interfaz como IStream que sea más adecuada para trabajar con propiedades grandes.