MAPIInitialize
Hace referencia a: Outlook 2013 | Outlook 2016
Incrementa el recuento de referencias del subsistema MAPI e inicializa los datos globales para el archivo DLL MAPI.
Propiedad | Valor |
---|---|
Archivo de encabezado: |
Mapix.h |
Implementado por: |
MAPI |
Llamado por: |
Aplicaciones cliente |
HRESULT MAPIInitialize(
LPVOID lpMapiInit
);
Parameters
lpMapiInit
[in] Puntero a una estructura MAPIINIT_0 . El parámetro lpMapiInit se puede establecer en NULL.
Valor devuelto
S_OK
El subsistema MAPI se inicializó correctamente.
Comentarios
La función MAPIInitialize incrementa el recuento de referencias MAPI para el subsistema MAPI y la función MAPIUninitialize reduce el número de referencias internas. Por lo tanto, el número de llamadas a una función debe ser igual al número de llamadas a la otra. MAPIInitialize devuelve S_OK si MAPI no se ha inicializado previamente.
Un cliente o proveedor de servicios debe llamar a MAPIInitialize antes de realizar cualquier otra llamada MAPI. Si no lo hace, las llamadas de cliente o proveedor de servicios devuelven el valor MAPI_E_NOT_INITIALIZED.
Al llamar a MAPIInitialize desde una aplicación multiproceso, establezca el parámetro lpMapiInit en una estructura de MAPIINIT_0 que se declara de la siguiente manera:
MAPIINIT_0 MAPIINIT= { 0, MAPI_MULTITHREAD_NOTIFICATIONS}
y llame a:
MAPIInitialize (&MAPIINIT);
Cuando se declara esta estructura, MAPI crea un subproceso independiente para controlar la ventana de notificación, que continúa hasta que el recuento de referencias de inicialización cae a cero. Un servicio de Windows debe establecer el miembro ulflags de la estructura MAPIINIT_0 a la que apunta lpMapiInit en MAPI_NT_SERVICE.
Nota:
No se puede llamar a MAPIInitialize o MAPIUninitialize desde una función DllMain win32 o cualquier otra función que cree o finalice subprocesos. Para obtener más información, consulte Uso de objetos Thread-Safe.
MAPIInitialize no devuelve ninguna información de error extendida. A diferencia de la mayoría de las otras llamadas MAPI, los significados de sus valores devueltos se definen estrictamente para corresponder al paso determinado de la inicialización que produjo un error:
Comprueba los parámetros y las marcas.
MAPI_E_INVALID_PARAMETER o MAPI_E_UNKNOWN_FLAGS. El autor de la llamada pasó un parámetro o una marca no válidos.
Inicializa las claves del Registro requeridas por MAPI y confirma el tipo de sistema operativo. Este paso solo se produce si el proceso de cliente se ejecuta como un servicio en Windows y establece la marca MAPI_NT SERVICE en la estructura MAPIINIT_0 .
MAPI_E_TOO_COMPLEX. El proceso de llamada es un servicio de Windows y no se pudieron inicializar las claves del Registro requeridas por MAPI.
Puede haber información adicional disponible en el registro de eventos de la aplicación.
Compruebe la compatibilidad de MAPI con OLE y, a continuación, inicialice OLE.
Comprueba la compatibilidad entre las versiones actuales de OLE y MAPI.
MAPI_E_VERSION. La versión de OLE instalada en la estación de trabajo no es compatible con esta versión de MAPI.
Inicializa OLE.
Solo durante este paso, esta función puede devolver un código de error que no aparece aquí. Se debe suponer que cualquier error que no aparece aquí procede de la función OLE CoInitialize.
Inicializa las variables globales por proceso.
MAPI_E_SESSION_LIMIT. MAPI configura un contexto específico para el proceso actual. Los errores pueden producirse en Win16 si el número de procesos supera un número determinado o en cualquier sistema si se agota la memoria disponible.
Inicializa las variables globales compartidas de todos los procesos.
MAPI_E_NOT_ENOUGH_RESOURCES. No había suficientes recursos del sistema disponibles para completar la operación.
Inicializa el motor de notificaciones, crea su ventana y su subproceso si lo solicita la marca de MAPI_MULTITHREAD_NOTIFICATIONS.
MAPI_E_INVALID_OBJECT. Puede producirse un error si se agotan los recursos del sistema.
Carga e inicializa el proveedor de perfiles. Comprueba que MAPIInitialize puede acceder a la clave del Registro donde se almacenan los datos del perfil.
MAPI_E_NOT_INITIALIZED. El proveedor de perfiles ha encontrado un error.
Referencia de MFCMAPI
Para obtener un ejemplo de código de MFCMAPI, vea la siguiente tabla.
Archivo | Función | Comment |
---|---|---|
ContentsTableListCtrl.cpp |
MFCMAPI usa el método MAPIInitialize para inicializar MAPI en un subproceso en segundo plano para realizar algún procesamiento de tabla. |