Compartir a través de


XPProviderInit

Hace referencia a: Outlook 2013 | Outlook 2016

Inicializa un proveedor de transporte para la operación.

Propiedad Valor
Archivo de encabezado:
Mapispi.h
Implementado por:
Proveedores de transporte
Llamado por:
MAPI
HRESULT XPProviderInit(
  HINSTANCE hInstance,
  LPMALLOC lpMalloc,
  LPALLOCATEBUFFER lpAllocateBuffer,
  LPALLOCATEMORE lpAllocateMore,
  LPFREEBUFFER lpFreeBuffer,
  ULONG ulFlags,
  ULONG ulMAPIVer,
  ULONG FAR * lpulProviderVer,
  LPXPPROVIDER FAR * lppXPProvider
);

Parameters

hInstance

[in] Instancia de la biblioteca de vínculos dinámicos (DLL) del proveedor de transporte que MAPI usó cuando cargó el archivo DLL.

lpMalloc

[in] Puntero a un objeto de asignador de memoria que expone la interfaz OLE IMalloc . Es posible que el proveedor de transporte 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 Mapi.dll usa. 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 transporte.

lppXPProvider

[out] Puntero a un puntero al objeto del proveedor de transporte 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 XPProviderInit para inicializar un proveedor de transporte después de un inicio de sesión de cliente. Se llama a XPProviderInit una vez para cada proveedor de transporte especificado en el perfil del cliente.

Notas a los implementadores

Un proveedor de transporte debe implementar XPProviderInit 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 XPPROVIDERINIT , también especificado en Mapispi.h. MAPI define XPPROVIDERINIT para usar el tipo de llamada de inicialización MAPI estándar, STDMAPIINITCALLTYPE, lo que hace que XPProviderInit 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, XPProviderInit debe devolver un objeto de proveedor diferente en lppXPProvider para cada inicialización, incluso para varias inicializaciones en el mismo proceso.

El proveedor de transporte 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 XPProviderInit, vea Inicializar el proveedor de transporte. 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
IXPProvider : IUnknown
MSProviderInit