Compartir a través de


MSProviderInit

Hace referencia a: Outlook 2013 | Outlook 2016

Inicializa un proveedor de almacén de mensajes para la operación.

Propiedad Valor
Archivo de encabezado:
Mapispi.h
Implementado por:
Proveedores de almacén de mensajes
Llamado por:
MAPI
HRESULT MSProviderInit(
  HINSTANCE hInstance,
  LPMALLOC lpMalloc,
  LPALLOCATEBUFFER lpAllocateBuffer,
  LPALLOCATEMORE lpAllocateMore,
  LPFREEBUFFER lpFreeBuffer,
  ULONG ulFlags,
  ULONG ulMAPIVer,
  ULONG FAR * lpulProviderVer,
  LPMSPROVIDER FAR * lppMSProvider
);

Parameters

hInstance

[in] Instancia de la biblioteca de vínculos dinámicos (DLL) del proveedor de mensajes que MAPI usó cuando se vinculó.

lpMalloc

[in] Puntero a un objeto de asignador de memoria que expone la interfaz OLE IMalloc . Es posible que el proveedor del almacén de mensajes tenga que usar este método de asignación al trabajar con ciertas interfaces, como IStream.

lpAllocateBuffer

[in] Puntero a la función MAPIAllocateBuffer , que se usará para asignar memoria.

lpAllocateMore

[in] Puntero a la función MAPIAllocateMore , que se usará para asignar memoria adicional.

lpFreeBuffer

[in] Puntero a la función MAPIFreeBuffer , que se usará para liberar memoria.

ulFlags

[in] Máscara de bits de marcas. Se puede establecer la marca siguiente:

MAPI_NT_SERVICE

El proveedor se carga en el contexto de un servicio de Windows, un tipo especial de proceso sin acceso a ninguna interfaz de usuario.

ulMAPIVer

[in] Número de versión de la interfaz del proveedor de servicios (SPI) que usa MAPI. Para obtener el número de versión actual, vea el archivo de encabezado Mapispi.h.

lpulProviderVer

[out] Puntero al número de versión del SPI que usa este proveedor de almacén de mensajes.

lppMSProvider

[out] Puntero a un puntero al objeto de proveedor de almacén de mensajes inicializado.

Valor devuelto

S_OK

La llamada se ha realizado correctamente y devuelva el valor esperado o los valores.

MAPI_E_VERSION

La versión spi que usa MAPI no es compatible con el SPI que usa este proveedor.

Comentarios

MAPI llama a la función de punto de entrada MSProviderInit para inicializar un proveedor de almacén de mensajes después de un inicio de sesión de cliente.

Notas a los implementadores

Un proveedor de almacén de mensajes debe implementar MSProviderInit como una función de punto de entrada en el archivo DLL del proveedor. La implementación debe basarse en el prototipo de función MSPROVIDERINIT , también especificado en MAPISPI.H. MAPI define MSPROVIDERINIT para usar el tipo de llamada de inicialización MAPI estándar, STDMAPIINITCALLTYPE, que hace que MSProviderInit siga la convención de llamada de CDECL. Una ventaja de CDECL es que las llamadas se pueden intentar incluso si el número de parámetros de llamada no coincide con el número de parámetros definidos.

Un proveedor se puede inicializar varias veces, como resultado de aparecer en varios perfiles en uso simultáneo o de aparecer más de una vez en el mismo perfil. Dado que el objeto de proveedor contiene contexto, MSProviderInit debe devolver un objeto de proveedor diferente en lppMSProvider para cada inicialización, incluso para varias inicializaciones en el mismo proceso.

El archivo DLL del proveedor no debe vincularse con Mapix.dll. En su lugar, debe usar estos punteros para la asignación o desasignación de memoria.

El proveedor de almacén de mensajes debe usar las funciones a las que apuntan lpAllocateBuffer, lpAllocateMore y lpFreeBuffer para la mayoría de la asignación y desasignación de memoria. En concreto, el proveedor debe usar estas funciones para asignar memoria para que las aplicaciones cliente las usen al llamar a interfaces de objetos como IMAPIProp::GetProps e IMAPITable::QueryRows. Si el proveedor también espera usar el asignador de memoria OLE, debe llamar al método IUnknown::AddRef del objeto de asignador al que apunta el parámetro lpMalloc .

Para obtener más información sobre cómo escribir MSProviderInit, vea Carga de proveedores de almacén de mensajes. Para obtener más información sobre las funciones de punto de entrada, vea Implementación de una función de punto de entrada del proveedor de servicios.

Vea también

ABProviderInit
IMSProvider : IUnknown
XPProviderInit