Compartir a través de


Administración de mensajes en OST sin invocar una sincronización en modo de intercambio almacenado en caché

Hace referencia a: Outlook 2013 | Outlook 2016

Este tema contiene un ejemplo de código en C++ que muestra cómo usar IID_IMessageRaw en IMsgStore::OpenEntry para obtener una interfaz IMessage que administra un mensaje en un archivo de carpetas sin conexión (OST) sin forzar una descarga de todo el mensaje cuando el cliente está en modo de intercambio almacenado en caché.

Cuando un cliente está en modo de intercambio almacenado en caché, los mensajes del OST pueden estar en uno de los dos estados:

  • Se descarga todo el mensaje que contiene el encabezado y el cuerpo.
  • Se descarga el mensaje con solo su encabezado.

Cuando solicite una interfaz IMessage para un mensaje en un OST y el cliente esté en modo de intercambio almacenado en caché, use IID_IMessageRaw. Si usa IID_IMessage para solicitar una interfaz IMessage y si el mensaje solo tiene su encabezado descargado en el OST, invocará una sincronización que intente descargar todo el mensaje.

Si usa IID_IMessageRaw o IID_IMessage para solicitar una interfaz IMessage , las interfaces que se devuelven son idénticas en uso. La interfaz IMessage que se solicitó mediante IID_IMessageRaw devuelve un mensaje de correo electrónico tal como existe en el OST y la sincronización no se fuerza.

En el ejemplo siguiente se muestra cómo llamar al método OpenEntry , pasando IID_IMessageRaw en lugar de IID_IMessage.

HRESULT HrOpenRawMessage ( 
    LPMDB lpMSB,  
    ULONG cbEntryID,  
    LPENTRYID lpEntryID,  
    ULONG ulFlags,  
    LPMESSAGE* lpMessage) 
{ 
    ULONG ulObjType = NULL; 
 
    HRESULT hRes = lpMDB->OpenEntry( 
        cbEntryID, 
        lpEntryID, 
        IID_IMessageRaw, 
        ulFlags, 
        &ulObjType, 
        (LPUNKNOWN*) lpMessage)); 
 
   return hRes; 
} 

Si el método OpenEntry devuelve el código de error MAPI_E_INTERFACE_NOT_SUPPORTED , indica que el almacén de mensajes no admite el acceso al mensaje en modo sin formato. En esta situación, vuelva a intentar el método OpenEntry pasando IID_IMessage.

Importante

IID_IMessageRaw es posible que no esté definido en el archivo de encabezado descargable que tiene actualmente. En este caso, puede agregarlo al código mediante la siguiente definición. Use la macro de DEFINE_OLEGUID definida en el archivo de encabezado de Microsoft Kit de desarrollo de software de Windows (SDK) guiddef.h para asociar el nombre simbólico guid a su valor. #if !defined(INITGUID) || defined(USES_IID_IMessageRaw) DEFINE_OLEGUID(IID_IMessageRaw,0x0002038A, 0, 0);> #endif

Vea también