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


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.

См. также