Implementación de una función de punto de entrada del proveedor de servicios
Hace referencia a: Outlook 2013 | Outlook 2016
Cada DLL del proveedor de servicios tiene una función de punto de entrada a la que MAPI llama para cargarla. Tenga en cuenta que esta función de punto de entrada no es la misma que DllMain, la función de punto de entrada dll de Win32.
En función del tipo de proveedor, la función de punto de entrada del proveedor se ajusta a un prototipo diferente. MAPI define diferentes prototipos de función de punto de entrada para los proveedores de servicios.
Provider | Prototipo de función de punto de entrada |
---|---|
Proveedores de almacén de mensajes |
MSProviderInit |
Proveedores de transporte |
XPProviderInit |
Proveedores de libretas de direcciones |
ABProviderInit |
Gran parte de la funcionalidad de estos prototipos es la misma para todos los tipos de proveedor de servicios.
La libreta de direcciones, el almacén de mensajes y los proveedores de transporte realizan las dos tareas principales siguientes en sus funciones de punto de entrada:
- Compruebe la versión de la interfaz del proveedor de servicios (SPI) para asegurarse de que MAPI usa una versión compatible con la versión que usa el proveedor de servicios. Use el parámetro lpulMAPIVer , que contiene la versión de MAPI SPI, y el parámetro lpulProviderVer , que contiene la versión de SPI, para realizar la comprobación. Estos parámetros son enteros sin signo de 32 bits compuestos por tres partes:
Los bits 24 a 31 representan la versión principal.
Los bits 16 a 23 representan la versión secundaria.
Los bits 0 a 15 representan el identificador de actualización. Aunque el número de versión principal rara vez cambia, el número de versión secundaria cambia cada vez que se publica MAPI y el SPI ha cambiado. El identificador de actualización es la versión de compilación interna de Microsoft; se usa para realizar un seguimiento de los cambios durante el proceso de desarrollo. MAPI define la constante CURRENT_SPI_VERSION, documentada en el archivo de encabezado Mapispi.h, para indicar la versión actual de SPI. Realice una comprobación con el error MAPI_E_VERSION si usa una versión del SPI más reciente que la versión que usa MAPI.
Cree una instancia de un objeto de proveedor. Dado que el proveedor se puede iniciar e inicializar varias veces, debe crear una nueva instancia cada vez que esto ocurra. Los proveedores se inician varias veces cuando aparecen en varios perfiles que están en uso simultáneamente por uno o varios clientes, o cuando aparecen varias veces en un único perfil. Del mismo modo que el prototipo de función de punto de entrada difiere en función del tipo de proveedor, también lo hace el tipo de objeto de proveedor.
Si va a escribir un proveedor de libreta de direcciones, implemente IABProvider : IUnknown. Si va a escribir un proveedor de almacén de mensajes, implemente IMSProvider : IUnknown. Para obtener más información, vea Carga de proveedores de almacén de mensajes.
Si va a escribir un proveedor de transporte, implemente IXPProvider : IUnknown. Para obtener más información, vea Inicializar el proveedor de transporte.