MSGSERVICEENTRY
Область применения: Outlook 2013 | Outlook 2016
Определяет прототип для функции точки входа службы сообщений для поддержки конфигурации службы сообщений.
Свойство | Значение |
---|---|
Файл заголовка: |
Mapispi.h |
Определена функция, реализованная: |
Службы сообщений |
Определенная функция, вызываемая: |
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
);
Параметры
hInstance
[в] Дескриптор экземпляра поставщика службыDLL. Дескриптор обычно используется для получения ресурсов.
lpMalloc
[в] Указатель на объект распределителя памяти, предоставляющий интерфейс OLE IMalloc . Службе сообщений может потребоваться использовать этот метод выделения при работе с определенными интерфейсами, такими как IStream.
lpMAPISup
[в] Указатель на IMAPISupport: реализация интерфейса IUnknown .
ulUIParam
[в] Конкретное значение реализации, используемое для передачи сведений о пользовательском интерфейсе в функцию или ноль. Параметр ulUIParam является дескриптором родительского окна для диалогового окна конфигурации и имеет тип HWND (приведение к ULONG_PTR). Нулевое значение указывает на отсутствие родительского окна.
ulFlags
[в] Битовая маска флагов, указывающих параметры функции входа в службу. Можно задать следующие флаги:
MAPI_UNICODE
Переданные строки имеют формат Юникода. Если флаг MAPI_UNICODE не задан, строки имеют формат ANSI.
MSG_SERVICE_UI_READ_ONLY
Пользовательский интерфейс конфигурации службы должен отображать текущую конфигурацию, но не разрешать пользователю изменять ее.
SERVICE_UI_ALLOWED
При необходимости позволяет отображать диалоговое окно конфигурации. При установке флага SERVICE_UI_ALLOWED диалоговое окно должно отображаться только в том случае, если массив значений свойств lpProps пуст или не содержит допустимую конфигурацию. Если SERVICE_UI_ALLOWED не задано, диалоговое окно может по-прежнему отображаться, если установлен флаг SERVICE_UI_ALWAYS.
UI_CURRENT_PROVIDER_FIRST
Запрашивает отображение диалогового окна конфигурации для активного поставщика поверх других диалоговых окон.
SERVICE_UI_ALWAYS
Требуется, чтобы служба сообщений отображала диалоговое окно конфигурации. Если флаг SERVICE_UI_ALWAYS не задан, диалоговое окно конфигурации может по-прежнему отображаться, если установлен флаг SERVICE_UI_ALLOWED и допустимые сведения о конфигурации недоступны в массиве значений свойств lpProps . Необходимо настроить SERVICE_UI_ALLOWED или SERVICE_UI_ALWAYS, чтобы разрешить отображение пользовательского интерфейса.
ulContext
[в] Операция конфигурации, которую в настоящее время выполняет MAPI. Параметр ulContext будет содержать одно из следующих значений:
MSG_SERVICE_CONFIGURE
Изменения в конфигурации службы должны быть внесены в профиль. Если установлен флаг SERVICE_UI_ALWAYS, служба должна отобразить диалоговое окно конфигурации. Диалоговое окно также должно отображаться, если установлен флаг SERVICE_UI_ALLOWED и параметр lpProps пуст или не содержит допустимых данных конфигурации. Если lpProps содержит допустимые данные, диалоговое окно не должно отображаться, и служба должна использовать эти данные для изменения конфигурации.
MSG_SERVICE_CREATE
Служба добавляется в профиль. Если установлен флаг SERVICE_UI_ALWAYS или SERVICE_UI_ALLOWED, служба должна отобразить диалоговое окно конфигурации. Если ни один из флагов не задан, служба должна завершиться ошибкой.
MSG_SERVICE_DELETE
Служба удаляется из профиля. После получения этого события служба должна вернуть S_OK.
MSG_SERVICE_INSTALL
Служба была установлена на рабочую станцию пользователя из сети, дискеты или другого внешнего носителя. После получения этого события служба обычно возвращает S_OK.
MSG_SERVICE_PROVIDER_CREATE
Запрашивает, чтобы служба создавала дополнительный экземпляр поставщика. Если служба поддерживает эту операцию, она должна вызвать IProviderAdmin::CreateProvider. Если служба не поддерживает эту операцию, она может вернуть MAPI_E_NO_SUPPORT.
MSG_SERVICE_PROVIDER_DELETE
Запрашивает удаление экземпляра поставщика службой. Если служба поддерживает эту операцию, она должна вызвать IProviderAdmin::D eleteProvider. Если служба не поддерживает эту операцию, она может вернуть MAPI_E_NO_SUPPORT.
MSG_SERVICE_UNINSTALL
Служба удаляется. После получения этого события служба может выполнять любые задачи по очистке, которые должны быть выполнены до завершения службы, а затем вернуться с успешным значением. Если пользователь отменяет удаление, служба должна вернуть MAPI_E_USER_CANCEL.
cValues
[в] Количество значений свойств в массиве, на который указывает параметр lpProps . Значение параметра cValues равно нулю, если MAPI не передает значения свойств.
lpProps
[в] Указатель на необязательный массив структур SPropValue , указывающий значения свойств, поддерживаемых поставщиком, которые функция будет использовать при настройке службы сообщений. Функция использует этот параметр только в том случае, если для параметра ulContext задано значение MSG_SERVICE_CONFIGURE. Этот параметр обычно используется для передачи пути к файлу для файловой службы, например службы личной адресной книги. Если флаг MSG_SERVICE_CONFIGURE не передается в параметре ulFlags , параметр lpProps должен быть равен нулю.
lpProviderAdmin
[в] Указатель на интерфейс IProviderAdmin:IUnknown , который функция может использовать для поиска разделов профиля для определенного поставщика в текущей службе сообщений.
lppMapiError
[out] Указатель на структуру MAPIERROR . Структура выделяется с помощью функции MAPIAllocateBuffer . Все члены являются необязательными, хотя большинство структур будет содержать допустимую строку сообщения об ошибке в члене lpszError . Если элементы структуры lpszComponent или lpszError присутствуют, их память в конечном итоге должна быть освобождена одним вызовом MAPIFreeBuffer в базовой структуре.
Возвращаемое значение
S_OK
����� ������� � ������ ��������� ��������� ��� ��������.
MAPI_E_UNCONFIGURED
Поставщик услуг не настроен.
MAPI_E_USER_CANCEL
Пользователь отменил операцию, обычно нажав кнопку Отмена в диалоговом окне.
MAPI_E_NO_SUPPORT
Поставщик либо не поддерживает изменения своих объектов, либо не поддерживает уведомление об изменениях.
MAPI_E_BAD_CHARWIDTH
Либо был установлен флаг MAPI_UNICODE и реализация не поддерживает Юникод, либо MAPI_UNICODE не задан и реализация поддерживает только Юникод.
Замечания
Функция, определяемая с помощью прототипа функции MSGSERVICEENTRY , позволяет службам сообщений настраивать себя или выполнять другие действия, относящиеся к службе. Функция в основном предоставляет диалоговое окно, в котором пользователь может изменять параметры, относящиеся к службе сообщений. Он также может поддерживать программную конфигурацию с помощью массива значений свойств, переданных в параметре lpProps . Программная конфигурация необязательна, если служба не поддерживает мастер профилей, для которого она требуется.
MAPI вызывает эту точку входа из приложения панель управления или в ответ на вызов клиентского приложения, вызывающего IMsgServiceAdmin::CreateMsgService или IMsgServiceAdmin::ConfigureMsgService.
MAPI не накладывает ограничений на имя функции, используемое службой сообщений для прототипа MSGSERVICEENTRY , но предпочитает имя ServiceEntry. Для функции нет ограничений на порядковый номер, а библиотека DLL одного поставщика может содержать несколько функций. Однако только одна из функций может называться ServiceEntry.
Служба сообщений может использовать функцию BuildDisplayTable и метод IMAPISupport::D oConfigPropsheet для упрощения реализации диалогового окна конфигурации.
Пользователь может отменить операцию MSG_SERVICE_UNINSTALL. В этом случае функция ServiceEntry должна проверка с пользователем, чтобы убедиться, что служба не должна быть удалена, и вернуть MAPI_E_USER_CANCEL, если служба остается установленной.
Функция на основе прототипа MSGSERVICEENTRY возвращает одно из перечисленных значений HRESULT. MAPI пересылает это значение при ответе на вызов клиента в IMsgServiceAdmin::ConfigureMsgService.
Службы сообщений, которые экспортируют функцию ввода службы, должны включать свойства PR_SERVICE_DLL_NAME (PidTagServiceDllName) и PR_SERVICE_ENTRY_NAME (PidTagServiceEntryName) в разделе службы сообщений MAPISVC.INF.