Compartir a través de


Carga de proveedores de almacén de mensajes

Hace referencia a: Outlook 2013 | Outlook 2016

Cuando una aplicación cliente abre un almacén de mensajes, MAPI carga el archivo DLL del proveedor del almacén de mensajes en la memoria. Una vez que MAPI carga el archivo DLL, se produce una secuencia muy específica de llamadas de método entre el proveedor del almacén de mensajes y MAPI. Esta secuencia de llamadas de método permite a MAPI obtener interfaces IMSProvider de nivel superior: IUnknown, IMSLogon : IUnknown e IMsgStore : IMAPIProp , y permite al proveedor del almacén de mensajes obtener un objeto de soporte técnico MAPI. Después de la secuencia de llamadas, el proveedor del almacén de mensajes debe estar listo para aceptar inicios de sesión de clientes.

La secuencia de llamadas cuando se carga una DLL del proveedor de mensajes es la siguiente:

  1. El cliente llama a IMAPISession::OpenMsgStore.

  2. Si el almacén de mensajes aún no está abierto, MAPI carga el archivo DLL del proveedor de almacenamiento y llama al punto de entrada MSProviderInit del archivo DLL. Si el almacén de mensajes ya está abierto, MAPI omite los pasos 2 y 3 y, a continuación, usa la interfaz IMSProvider : IUnknown existente para completar el paso 4.

  3. MSProviderInit crea y devuelve un objeto IMSProvider .

  4. MAPI llama a IMSProvider::Logon, pasando el identificador de entrada del almacén de mensajes de la aplicación cliente.

  5. IMSProvider::Logon crea y devuelve una interfaz IMSLogon : IUnknown y una interfaz IMsgStore : IMAPIProp y, a continuación, llama al método IUnknown::AddRef en su interfaz IMAPISupport : IUnknown . Si el identificador de entrada del almacén de mensajes del cliente hace referencia a un almacén de mensajes que ya está abierto, el proveedor del almacén de mensajes puede devolver interfaces IMSLogon e IMsgStore existentes y no es necesario llamar a AddRef en su objeto de soporte técnico.

  6. Si el cliente no estableció la marca de MAPI_NO_MAIL al iniciar sesión y no estableció la MDB_NO_MAIL en el paso 1, MAPI proporciona el identificador de entrada del almacén de mensajes a la cola MAPI para que la cola MAPI pueda iniciar sesión en el almacén de mensajes.

  7. MAPI devuelve la interfaz IMsgStore al cliente.

  8. La cola MAPI llama a IMSProvider::SpoolerLogon.

  9. IMSProvider::SpoolerLogon devuelve las mismas interfaces IMSLogon e IMsgStore del paso 5.

Nota:

Si se produce un error en la llamada de inicio de sesión al proveedor del almacén de mensajes porque se proporcionó una contraseña incorrecta y el proveedor del almacén de mensajes no puede mostrar una interfaz para solicitar la contraseña correcta, debe devolver MAPI_E_FAILONEPROVIDER del método IMSProvider::Logon . Esto permitirá a los clientes solicitar al usuario una contraseña para intentar iniciar sesión de nuevo en el proveedor del almacén de mensajes, en lugar de hacer que MAPI produzca un error en el proveedor durante toda la sesión.

Vea también

Desarrollar un proveedor de almacén de mensajes MAPI