Compartir a través de


MSGSERVICEENTRY

Hace referencia a: Outlook 2013 | Outlook 2016

Define un prototipo para una función de punto de entrada del servicio de mensajes para admitir la configuración del servicio de mensajes.

Propiedad Valor
Archivo de encabezado:
Mapispi.h
Función definida implementada por:
Servicios de mensajes
Función definida a la que llama:
MAPI
HRESULT MSGSERVICEENTRY(
  HINSTANCE hInstance,
  LPMALLOC lpMalloc,
  LPMAPISUP lpMAPISup,
  ULONG_PTR ulUIParam,
  ULONG ulFlags,
  ULONG ulContext,
  ULONG cValues,
  LPSPropValue lpProps,
  LPPROVIDERADMIN lpProviderAdmin,
  LPMAPIERROR FAR * lppMapiError
);

Parameters

hInstance

[in] Identificador de la instancia del proveedor de serviciosDLL. El identificador se usa normalmente para recuperar recursos.

lpMalloc

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

lpMAPISup

[in] Puntero a una implementación de interfaz IMAPISupport: IUnknown .

ulUIParam

[in] Valor específico de la implementación que se usa para pasar información de la interfaz de usuario a una función o cero. El parámetro ulUIParam es el identificador de ventana principal del cuadro de diálogo de configuración y es de tipo HWND (convertido a un ULONG_PTR). Un valor de cero indica que no hay ninguna ventana primaria.

ulFlags

[in] Máscara de bits de marcas que indican las opciones de la función de entrada de servicio. Se pueden establecer las siguientes marcas:

MAPI_UNICODE

Las cadenas pasadas están en formato Unicode. Si no se establece la marca de MAPI_UNICODE, las cadenas están en formato ANSI.

MSG_SERVICE_UI_READ_ONLY

La interfaz de usuario de configuración del servicio debe mostrar la configuración actual, pero no permitir que el usuario la cambie.

SERVICE_UI_ALLOWED

Permite mostrar un cuadro de diálogo de configuración si es necesario. Cuando se establece la marca de SERVICE_UI_ALLOWED, el cuadro de diálogo solo se debe mostrar si la matriz de valores de propiedad lpProps está vacía o no contiene una configuración válida. Si no se establece SERVICE_UI_ALLOWED, es posible que se muestre un cuadro de diálogo si se establece la marca de SERVICE_UI_ALWAYS.

UI_CURRENT_PROVIDER_FIRST

Solicita que el cuadro de diálogo de configuración del proveedor activo se muestre encima de otros cuadros de diálogo.

SERVICE_UI_ALWAYS

Requiere que el servicio de mensajes muestre un cuadro de diálogo de configuración. Si no se establece la marca de SERVICE_UI_ALWAYS, es posible que todavía se muestre un cuadro de diálogo de configuración si se establece la marca de SERVICE_UI_ALLOWED y la información de configuración válida no está disponible en la matriz de valores de propiedad lpProps . Se debe establecer SERVICE_UI_ALLOWED o SERVICE_UI_ALWAYS para permitir que se muestre una interfaz de usuario.

ulContext

[in] La operación de configuración que MAPI está realizando actualmente. El parámetro ulContext contendrá uno de los valores siguientes:

MSG_SERVICE_CONFIGURE

Los cambios en la configuración del servicio deben realizarse en el perfil. Si se establece la marca de SERVICE_UI_ALWAYS, el servicio debe mostrar su cuadro de diálogo de configuración. El cuadro de diálogo también debe mostrarse si se establece la marca SERVICE_UI_ALLOWED y el parámetro lpProps está vacío o no contiene datos de configuración válidos. Si lpProps contiene datos válidos , no se debe mostrar ningún cuadro de diálogo y el servicio debe usar estos datos para realizar el cambio de configuración.

MSG_SERVICE_CREATE

El servicio se agrega a un perfil. Si se establece la marca SERVICE_UI_ALWAYS o SERVICE_UI_ALLOWED, el servicio debe mostrar su cuadro de diálogo de configuración. Si no se establece ninguna marca, el servicio debe producir un error.

MSG_SERVICE_DELETE

El servicio se está quitando de un perfil. Después de recibir este evento, el servicio debe devolver S_OK.

MSG_SERVICE_INSTALL

El servicio se ha instalado en la estación de trabajo del usuario desde una red, un disquete u otro medio externo. Después de recibir este evento, el servicio normalmente devuelve S_OK.

MSG_SERVICE_PROVIDER_CREATE

Solicita que el servicio cree una instancia adicional de un proveedor. Si el servicio admite esta operación, debe llamar a IProviderAdmin::CreateProvider. Si el servicio no admite esta operación, puede devolver MAPI_E_NO_SUPPORT.

MSG_SERVICE_PROVIDER_DELETE

Solicita que el servicio elimine una instancia de proveedor. Si el servicio admite esta operación, debe llamar a IProviderAdmin::D eleteProvider. Si el servicio no admite esta operación, puede devolver MAPI_E_NO_SUPPORT.

MSG_SERVICE_UNINSTALL

El servicio se está quitando. Después de recibir este evento, el servicio puede realizar cualquier tarea de limpieza que se debe realizar antes de que finalice el servicio y, a continuación, devolver con un valor correcto. Si el usuario cancela la eliminación, el servicio debe devolver MAPI_E_USER_CANCEL.

cValues

[in] Recuento de valores de propiedad de la matriz a la que apunta el parámetro lpProps . El valor del parámetro cValues es cero si MAPI no pasa ningún valor de propiedad.

lpProps

[in] Puntero a una matriz opcional de estructuras SPropValue que indican los valores de las propiedades compatibles con el proveedor que la función usará para configurar el servicio de mensajes. La función solo usa este parámetro si el parámetro ulContext está establecido en MSG_SERVICE_CONFIGURE. Este parámetro se usa normalmente para pasar la ruta de acceso a un archivo para un servicio basado en archivos, como un servicio de libreta de direcciones personal. Si no se pasa la marca de MSG_SERVICE_CONFIGURE en el parámetro ulFlags , el parámetro lpProps debe ser cero.

lpProviderAdmin

[in] Puntero a una interfaz IProviderAdmin:IUnknown que la función puede usar para buscar secciones de perfil de un proveedor específico en el servicio de mensajes actual.

lppMapiError

[out] Puntero a una estructura MAPIERROR . La estructura se asigna con la función MAPIAllocateBuffer . Todos los miembros son opcionales, aunque la mayoría de las estructuras contendrán una cadena de mensaje de error válida en el miembro lpszError . Si los miembros lpszComponent o lpszError de la estructura están presentes, su memoria debe liberarse finalmente mediante una sola llamada a MAPIFreeBuffer en la estructura base.

Valor devuelto

S_OK

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

MAPI_E_UNCONFIGURED

No se ha configurado el proveedor de servicios.

MAPI_E_USER_CANCEL

El usuario canceló la operación, normalmente haciendo clic en el botón Cancelar de un cuadro de diálogo.

MAPI_E_NO_SUPPORT

El proveedor no admite cambios en sus objetos o no admite la notificación de cambios.

MAPI_E_BAD_CHARWIDTH

Se estableció la marca de MAPI_UNICODE y la implementación no admite Unicode, o MAPI_UNICODE no se estableció y la implementación solo admite Unicode.

Comentarios

Una función definida mediante el prototipo de función MSGSERVICEENTRY permite a los servicios de mensajes configurarse por sí mismos o realizar otras acciones específicas del servicio. La función proporciona principalmente un cuadro de diálogo en el que el usuario puede cambiar la configuración específica del servicio de mensajes. También puede admitir la configuración mediante programación mediante la matriz de valores de propiedad que se pasa en el parámetro lpProps . La configuración mediante programación es opcional a menos que el servicio admita el Asistente para perfiles, para el que es necesario.

MAPI llama a este punto de entrada desde la aplicación Panel de control o en respuesta a una aplicación cliente que llama a IMsgServiceAdmin::CreateMsgService o IMsgServiceAdmin::ConfigureMsgService.

MAPI no establece ninguna restricción en el nombre de función que usa un servicio de mensajes para el prototipo MSGSERVICEENTRY , pero prefiere el nombre ServiceEntry. No hay ninguna restricción en el ordinal para la función y un único archivo DLL de proveedor puede contener más de una función. Sin embargo, solo una de las funciones se puede denominar ServiceEntry.

Un servicio de mensajes puede usar la función BuildDisplayTable y el método IMAPISupport::D oConfigPropsheet para simplificar la implementación del cuadro de diálogo de configuración.

Es posible que un usuario cancele una operación de MSG_SERVICE_UNINSTALL. En este caso, la función ServiceEntry debe comprobar con el usuario que no se debe quitar el servicio y devolver MAPI_E_USER_CANCEL si el servicio permanece instalado.

Una función basada en el prototipo MSGSERVICEENTRY devuelve uno de los valores HRESULT enumerados. MAPI reenvía este valor al responder a la llamada de un cliente a IMsgServiceAdmin::ConfigureMsgService.

Los servicios de mensajes que exportan una función de entrada de servicio deben incluir las propiedades PR_SERVICE_DLL_NAME (PidTagServiceDllName) y PR_SERVICE_ENTRY_NAME (PidTagServiceEntryName) en la sección de servicio de mensajes de MAPISVC.INF.