IMAPISupport::Notify
Область применения: Outlook 2013 | Outlook 2016
Отправляет уведомление о указанном событии источнику рекомендаций, который первоначально зарегистрирован для уведомления с помощью метода IMAPISupport::Subscribe .
HRESULT Notify(
LPNOTIFKEY lpKey,
ULONG cNotification,
LPNOTIFICATION lpNotifications,
ULONG FAR * lpulFlags
);
Параметры
lpKey
[в] Указатель на ключ уведомления для исходного объекта advise. Параметр lpKey не может иметь значение NULL.
cNotification
[в] Количество структур уведомлений, на которые указывает параметр lpNotifications .
lpNotifications
[в] Указатель на массив структур NOTIFICATION , описывающих ожидающие уведомления.
lpulFlags
[вход, выход] Битовая маска флагов, управляющая процессом уведомления. На входных данных можно задать следующий флаг:
MAPI_UNICODE
Строки в структурах уведомлений, на которые указывает lpNotifications , имеют формат Юникода. Если флаг MAPI_UNICODE не задан, строки имеют формат ANSI.
В выходных данных MAPI может задать следующий флаг:
NOTIFY_CANCELED
Функция обратного вызова отменила синхронное уведомление.
Возвращаемое значение
S_OK
Уведомления были успешно созданы.
Замечания
Метод IMAPISupport::Notify реализован для всех объектов поддержки поставщика услуг. Поставщики услуг вызывают Notify , чтобы запросить, чтобы MAPI создал уведомление для приемника рекомендаций, который ранее зарегистрировался для уведомления с помощью метода IMAPISupport::Subscribe .
Notify копирует структуры, на которые указывает параметр lpNotifications , в память и вызывает метод IMAPIAdviseSink::OnNotify соответствующего приемника рекомендаций. Когда OnNotify завершает работу с уведомлением, он освобождает задействованную память. Вызывающей объекту не нужно выделять память; MAPI выполняет все необходимое выделение памяти.
Примечания для вызывающих методов
Ключ уведомления, переданный в параметре lpKey , должен быть идентичен ключу, переданном в lpKey методу IMAPISupport::Subscribe . Многие поставщики используют в качестве ключа идентификатор записи источника рекомендаций, но можно использовать другие данные, например путь к файлу. MAPI использует этот ключ для поиска всех регистраций для уведомлений в идентифицированном источнике рекомендаций.
Убедитесь, что для элемента lpEntryID структуры уведомления задан долгосрочный идентификатор записи.
Если вы задали флаг NOTIFY_SYNC в вызове Подписки для любого из ожидающих уведомлений, перед возвращением будет вызываться функция обратного вызова метода IMAPIAdviseSink::OnNotify . Приемник рекомендаций можно создать вручную или путем вызова HrAllocAdviseSink. Функция HrAllocAdviseSink позволяет вызывающей функции указать функцию обратного вызова, которая уведомляет вызовы в составе уведомления. Функция обратного вызова соответствует прототипу NOTIFCALLBACK . Функции обратного вызова, реализованные клиентами, всегда возвращают S_OK; Функции обратного вызова, реализованные поставщиками услуг, могут возвращать CALLBACK_DISCONTINUE.
Если функция обратного вызова возвращает CALLBACK_DISCONTINUE, MAPI прекращает отправку уведомлений и возвращает NOTIFY_CANCELED в параметре lpulFlags метода Notify. Можно предположить, что процесс неактивен и перестает создавать уведомления для этого процесса. Если уведомление возвращает значение 0 в lpulFlags, процесс по-прежнему активен, и вы должны продолжать отправлять уведомления соответствующим образом.
При использовании синхронных уведомлений будьте осторожны, чтобы избежать взаимоблокировок.
Дополнительные сведения о процессе уведомления см. в разделе Уведомление о событиях в MAPI.