Поделиться через


IMAPISupport::SpoolerNotify

Область применения: Outlook 2013 | Outlook 2016

Уведомляет диспетчер очереди MAPI об изменении состояния или запросе на обслуживание.

HRESULT SpoolerNotify(
ULONG ulFlags,
LPVOID lpvData
);

Параметры

ulFlags

[в] Битовая маска флагов, указывающая тип уведомления. Поставщики транспорта могут задать все флаги, кроме NOTIFY_NEWMAIL_RECEIVED; Для поставщиков хранилища сообщений допустимы только NOTIFY_NEWMAIL_RECEIVED и NOTIFY_READTOSEND. Для параметра ulFlags допустимы следующие флаги :

NOTIFY_CONFIG_CHANGE

Регистрирует запрос на изменение конфигурации поставщика транспорта.

NOTIFY_CRITICAL_ERROR

С поставщиком транспорта произошла неустранимая ошибка. Так как и NOTIFY_SENTDEFERRED, и NOTIFY_CRITICAL_ERROR используют параметр lpvData для вызовов поставщика транспорта, эти флаги являются взаимоисключающими.

NOTIFY_CRITSEC

Запрашивает критически важный раздел для поставщика транспорта. Параметр lpvData не определен и должен иметь значение NULL.

NOTIFY_NEWMAIL

Диспетчер очереди MAPI должен скачать все новые полученные сообщения в следующий доступный момент времени. Параметр lpvData не определен и должен иметь значение NULL.

NOTIFY_NEWMAIL_RECEIVED

Новое сообщение получено в хранилище сообщений. Параметр lpvData указывает на структуру NEWMAIL_NOTIFICATION , описывающую сообщение. Этот флаг используется для поставщиков хранилища сообщений, тесно связанных с поставщиками транспорта, и игнорируется, если поставщик хранилища входит в систему с помощью флага MAPI_NO_MAIL.

NOTIFY_NONCRIT

Освобождает критически важный раздел, полученный при предыдущем вызове SpoolerNotify с параметром ulFlags , для NOTIFY_CRITSEC. Параметр lpvData не определен и должен иметь значение NULL.

NOTIFY_READYTOSEND

Поставщик транспорта или хранилища сообщений готов к отправке сообщений. Параметр lpvData не определен и должен иметь значение NULL.

NOTIFY_SENTDEFERRED

Теперь должно быть отправлено ранее отложенное сообщение, а поставщик транспорта должен получать уведомления о готовности сообщения к доставке с помощью вызова метода IXPLogon::SubmitMessage . Идентификатор записи отложенного сообщения содержится в структуре SBinary, на которую указывает lpvData. Поскольку и NOTIFY_SENTDEFERRED, и NOTIFY_CRITICAL_ERROR используют параметр lpvData , эти флаги являются взаимоисключающими.

lpvData

[в] Указатель на связанные данные, применимые к уведомлению. Параметр lpvData указывает на допустимые данные, только если заданы следующие флаги (lpvData имеет значение NULL, если для ulFlags заданы другие типы уведомлений):

Параметр ulFlags Значение lpvData
NOTIFY_CRITICAL_ERROR
Сведения об ошибке.
NOTIFY_NEWMAIL_RECEIVED
Структура NEWMAIL_NOTIFICATION , содержащая сведения о недавно доставленном сообщении.
NOTIFY_SENTDEFERRED
Структура SBinary , содержащая идентификатор записи отложенного сообщения.

Возвращаемое значение

S_OK

Уведомление прошло успешно.

Замечания

Метод IMAPISupport::SpoolerNotify реализован для объектов поддержки хранилища сообщений и поставщика транспорта. Эти поставщики вызывают SpoolerNotify , чтобы уведомить диспетчер очереди MAPI об изменении состояния или запросе на обслуживание. SpoolerNotify вызывается в основном поставщиками транспорта и может вызываться в любое время во время сеанса.

Примечания к поставщикам транспорта

Если вы изменили конфигурацию поставщика транспорта, вызовите SpoolerNotify и задайте для параметра ulFlags значение NOTIFY_CONFIG_CHANGED. SpoolerNotify отвечает, вызывая метод IXPLogon::AddressTypes для запроса на изменение поддерживаемых типов адресов.

Если вам нужен критически важный раздел для обеспечения непрерывной обработки, вызовите spoolerNotify с параметром ulFlags для NOTIFY_CRITSEC. Установка этого флага уведомляет диспетчер очереди MAPI о том, что ему не следует вызывать методы IXPLogon::Idle и IXPLogon::P oll . При открытии критического раздела возвращайте MAPI_E_BUSY при вызове метода IMAPIStatus::ValidateState . Завершив работу с критическим разделом, выполните еще один вызов SpoolerNotify with_ulFlags_ для NOTIFY_NONCRIT.

Например, если удаленный поставщик транспорта находится в процессе отправки сообщений, может потребоваться разрешить пользователю ввести номер телефона для установки удаленного подключения. Перед выполнением процедуры диалогового окна следует объявить критически важный раздел. Когда пользователь закрывает диалоговое окно, завершая процедуру диалогового окна, следует освободить критический раздел.

Если для ulFlags задано значение NOTIFY_CRITICAL_ERROR, диспетчер очереди MAPI не выполняет никаких дальнейших вызовов к поставщику, кроме как для освобождения его. При вызове SpoolerNotify с NOTIFY_CRITICAL_ERROR задано из методов IXPLogon::StartMessage или IXPLogon::SubmitMessage , возвращается соответствующее значение ошибки из вызова StartMessage или SubmitMessage сразу после вызова SpoolerNotify .

Если поставщик транспорта восстановился после условия, которое ранее приводило к сбою, вызовите spoolerNotify с параметром ulFlags для NOTIFY_READYTOSEND. Этот флаг указывает, что поставщик снова готов к обработке сообщений.

Примечания к поставщикам хранилища сообщений

Вызовите SpoolerNotify, передав флаг NOTIFY_READYTOSEND в ulFlags, прежде чем выполнять первый вызов IMAPISupport::P repareSubmit в IMessage::SubmitMessage. Этот вызов SpoolerNotify должен выполняться только один раз за сеанс.

Если поставщик хранилища сообщений тесно связан с поставщиком транспорта и вы вызываете spoolerNotify с параметром ulFlags NOTIFY_NEWMAIL_RECEIVED, диспетчер очереди MAPI открывает новое сообщение и начинает обработку новой функции перехватчика сообщений. После завершения обработки модуль очереди MAPI вызывает метод IMsgStore::NotifyNewMail , чтобы сообщить вам о вашем новом сообщении.

Дополнительные сведения о вызове SpoolerNotify см. в следующих разделах:

См. также

IMsgStore::NotifyNewMail
IXPLogon::StartMessage
IXPLogon::SubmitMessage
IMAPISupport: IUnknown