IMSProvider::SpoolerLogon
Область применения: Outlook 2013 | Outlook 2016
Регистрирует диспетчер очереди MAPI в хранилище сообщений.
HRESULT SpoolerLogon(
LPMAPISUP lpMAPISup,
ULONG_PTR ulUIParam,
LPSTR lpszProfileName,
ULONG cbEntryID,
LPENTRYID lpEntryID,
ULONG ulFlags,
LPCIID lpInterface,
ULONG cbSpoolSecurity,
LPBYTE lpbSpoolSecurity,
LPMAPIERROR FAR * lppMAPIError,
LPMSLOGON FAR * lppMSLogon,
LPMDB FAR * lppMDB
);
Параметры
lpMAPISup
[в] Указатель на объект поддержки MAPI для хранилища сообщений.
ulUIParam
[в] Дескриптор родительского окна любых диалоговых окон или окон, отображаемых этим методом.
lpszProfileName
[в] Указатель на строку, содержащую имя профиля, используемого для входа в приложение MAPI spooler. Эта строка может отображаться в диалоговых окнах, записываться в файл журнала или просто игнорироваться. Если флаг MAPI_UNICODE установлен в параметре ulFlags , он должен быть в формате Юникода.
cbEntryID
[в] Размер (в байтах) идентификатора записи, на который указывает параметр lpEntryID .
lpEntryID
[в] Указатель на идентификатор записи для хранилища сообщений. Передача NULL в параметре lpEntryID означает, что хранилище сообщений еще не выбрано и что могут отображаться диалоговые окна, позволяющие пользователю выбрать хранилище сообщений.
ulFlags
[в] Битовая маска флагов, управляющая тем, как выполняется вход. Можно задать следующие флаги:
MAPI_DEFERRED_ERRORS
Вызов может завершиться успешно, даже если базовый объект недоступен для реализации вызова. Если объект недоступен, последующий вызов объекта может вызвать ошибку.
MAPI_UNICODE
Переданные строки имеют формат Юникода. Если MAPI_UNICODE не задано, строки имеют формат ANSI.
MDB_NO_DIALOG
Запрещает отображение диалоговых окон входа. Если этот флаг установлен, в случае неудачного входа возвращается значение ошибки MAPI_E_LOGON_FAILED. Если этот флаг не установлен, поставщик хранилища сообщений может предложить пользователю исправить имя или пароль, вставить диск или выполнить другие действия, необходимые для подключения к хранилищу.
MDB_WRITE
Запрашивает разрешение на чтение и запись.
lpInterface
[в] Указатель на идентификатор интерфейса (IID) для хранилища сообщений для входа. Передача NULL означает, что возвращается интерфейс MAPI для хранилища сообщений (IMsgStore). Параметру lpInterface также можно задать идентификатор соответствующего интерфейса для хранилища сообщений (например, IID_IUnknown или IID_IMAPIProp).
cbSpoolSecurity
[в] Указатель на размер (в байтах) данных проверки в параметре lppbSpoolSecurity .
lpbSpoolSecurity
[в] Указатель на указатель на данные проверки. Метод SpoolerLogon использует эти данные для регистрации очереди MAPI в том же хранилище, в котором ранее вошел поставщик хранилища сообщений с помощью метода IMSProvider::Logon .
lppMAPIError
[out] Указатель на указатель на возвращенную структуру MAPIERROR , если она имеется, которая содержит сведения о версии, компоненте и контексте для ошибки. Параметру lppMAPIError можно задать значение NULL, если нет возвращаемой структуры MAPIERROR.
lppMSLogon
[out] Указатель на указатель на объект входа в хранилище сообщений для входа в MAPI.
lppMDB
[out] Указатель на указатель на объект хранилища сообщений для диспетчера очереди MAPI и клиентских приложений для входа.
Возвращаемое значение
S_OK
����� ������� � ������ ��������� ��������� ��� ��������.
MAPI_E_UNCONFIGURED
Профиль не содержит достаточно сведений для завершения входа. При возвращении этого значения MAPI вызывает функцию точки входа службы сообщений поставщика хранилища сообщений.
MAPI_W_ERRORS_RETURNED
Вызов выполнен успешно, но у поставщика хранилища сообщений доступны сведения об ошибках. При возврате этого предупреждения вызов должен быть обработан как успешный. Чтобы проверить наличие этого предупреждения, используйте макрос HR_FAILED . Дополнительные сведения см. в разделе Использование макросов для обработки ошибок. Чтобы получить сведения об ошибке от поставщика, вызовите метод IMAPISession::GetLastError .
Замечания
Диспетчер очереди MAPI вызывает метод IMSProvider::SpoolerLogon для входа в хранилище сообщений. Диспетчер очереди MAPI должен использовать объект хранилища сообщений, возвращенный поставщиком хранилища сообщений в параметре lppMDB во время и после входа.
Для согласованности с методом IMSProvider::Logon поставщик также возвращает объект входа в хранилище сообщений в параметре lppMSLogon . Использование объекта store и объекта входа идентичны для обычного входа в магазин; между объектом входа и объектом store должно быть одно к одному соответствие, чтобы объекты действовали так, как будто они являются одним объектом, предоставляющим два интерфейса. Два объекта создаются вместе и освобождаются вместе.
Поставщик хранилища должен внутренне пометить возвращенный объект хранилища сообщений, чтобы указать, что хранилище используется диспетчером очереди MAPI. Некоторые методы для этого объекта хранилища ведут себя иначе, чем для объекта хранилища сообщений, предоставленного клиентским приложениям. Сохранение этой внутренней метки является наиболее распространенным способом активации поведения, характерным для диспетчера очереди MAPI.