Compartir a través de


IMAPIAdviseSink::OnNotify

Hace referencia a: Outlook 2013 | Outlook 2016

Responde a una notificación realizando una o varias tareas. Las tareas realizadas dependen del tipo de evento y del objeto que genera la notificación.

ULONG OnNotify(
  ULONG cNotif,
  LPNOTIFICATION lpNotifications
);

Parameters

cNotif

[in] Recuento de estructuras NOTIFICATION a las que apunta el parámetro lpNotifications .

lpNotifications

[in] Puntero a una o varias estructuras NOTIFICATION que proporcionan información sobre los eventos que se han producido.

Valor devuelto

S_OK

La notificación se procesó correctamente.

Comentarios

El proceso de notificación se inicia cuando un cliente o MAPI realiza una llamada al método Advise de un proveedor de servicios para registrarse para recibir una notificación de un tipo determinado para un objeto determinado. Uno de los parámetros del método Advise es un puntero a un objeto receptor advise que implementa la interfaz IMAPIAdviseSink . Cuando se produce un evento en el objeto de destino que corresponde a la notificación registrada, el proveedor de servicios, ya sea directa o indirectamente a través de MAPI, llama al método OnNotify del receptor de aviso.

La llamada a OnNotify puede producirse durante la llamada MAPI que está causando el evento o en algún momento posterior. En sistemas que admiten varios subprocesos de ejecución, se puede llamar a OnNotify en el mismo subproceso que se usó para el registro o en otro subproceso. Los clientes pueden asegurarse de que la llamada a OnNotify se realiza en el mismo subproceso usado para llamar a Advise mediante la creación del receptor de aviso que pasan a Advise con la función HrThisThreadAdviseSink .

El parámetro lpNotifications apunta a una o varias estructuras NOTIFICATION que describen lo que ha cambiado durante el evento. Hay un tipo diferente de estructura NOTIFICATION para cada tipo de evento.

En la tabla siguiente se enumeran los valores que se usan para representar los posibles tipos de eventos y las estructuras asociadas a cada valor:

Tipo de evento de notificación Estructura correspondiente
fnevCriticalError
ERROR_NOTIFICATION
fnevNewMail
NEWMAIL_NOTIFICATION
fnevObjectCreated
OBJECT_NOTIFICATION
fnevObjectDeleted
OBJECT_NOTIFICATION
fnevObjectModified
OBJECT_NOTIFICATION
fnevObjectCopied
OBJECT_NOTIFICATION
fnevSearchComplete
OBJECT_NOTIFICATION
fnevTableModified
TABLE_NOTIFICATION
fnevStatusObjectModified
STATUS_OBJECT_NOTIFICATION
fnevExtended
EXTENDED_NOTIFICATION

Para obtener más información sobre cómo configurar y detener notificaciones, vea las entradas de referencia de los métodos Advise y Unadvise para cualquiera de las siguientes interfaces: IABLogon, IAddrBook, IMAPIForm, IMAPISession, IMAPITable, IMsgStore e IMSLogon.

Para obtener información general sobre el proceso de notificación, vea Notificación de eventos en MAPI.

Notas a los implementadores

La implementación de OnNotify normalmente constará de uno o más bloques de código para cada tipo de notificación que espera recibir. Dentro de estos bloques de código, realice las tareas que considere necesarias como respuesta a la notificación. Por ejemplo, supongamos que se registra para recibir notificaciones fnevObjectModified en una carpeta que se incluye en una pantalla de cuadro de diálogo. En el bloque de código que se incluye en el método OnNotify para controlar las notificaciones fnevObjectModified , es posible que envíe un mensaje de Windows al cuadro de diálogo para solicitar una presentación actualizada.

No modifique ni libere la estructura NOTIFICATION que se pasa a OnNotify. Los datos de la estructura solo son válidos hasta que OnNotify devuelve.

Notas para los llamadores

Cuando se producen cambios en varios objetos, puede notificar a un receptor de aviso registrado en una sola llamada a OnNotify o en varias llamadas en función de las restricciones de memoria. Esto es cierto independientemente de si los cambios son el resultado de una llamada al método o de varios. Por ejemplo, una llamada a IMAPIFolder::CopyMessages puede afectar a varios mensajes y carpetas. Como proveedor de almacén de mensajes, puede realizar una llamada a OnNotify con un tipo de evento fnevObjectModified para la carpeta de destino o muchas llamadas, una para cada mensaje afectado. De forma similar, si un cliente realiza llamadas repetidas a IMAPIFolder::CreateMessage, estas llamadas se pueden combinar en un evento fnevObjectModified para la carpeta o separarse en eventos fnevObjectCreated individuales para cada mensaje nuevo.

Para obtener más información sobre cómo y cuándo generar notificaciones, vea Notificación de eventos en MAPI y Compatibilidad con la notificación de eventos.

Referencia de MFCMAPI

Para obtener un ejemplo de código de MFCMAPI, vea la siguiente tabla.

Archivo Función Comment
AdviseSink.h y AdviseSink.cpp
CAdviseSink::OnNotifyDesc
La clase CAdviseSink se implementa para controlar todas las notificaciones de MFCMAPI.

Vea también

HrAllocAdviseSink

HrThisThreadAdviseSink

IMAPISupport::Notify

Notificaci�n

IMAPIAdviseSink : IUnknown

MFCMAPI como un ejemplo de c�digo