IABLogon::Advise
The IABLogon::Advise
method registers to receive notification of specified events affecting a
container, messaging user, or distribution list.
Quick Info
See IABLogon
: IUnknown
HRESULT Advise(
ULONG cbEntryID,
|
|
LPENTRYID lpEntryID,
|
|
ULONG ulEventMask, |
|
LPMAPIADVISESINK lpAdviseSink, |
|
ULONG FAR * lpulConnection |
|
) |
|
Parameters
cbEntryID
[in] Count of
bytes in the entry identifier pointed to by the lpEntryID parameter.
lpEntryID
[in] Pointer
to the entry identifier of the object about which notifications should be
generated.
ulEventMask
[in] A mask
of values indicating the types of notification events that the caller is
interested in and should be included in the registration. There is a
corresponding NOTIFICATION
The following
table lists the valid values for the ulEventMask parameter and the
structures associated with each value.
Notification
event type |
Corresponding
NOTIFICATION structure |
fnevCriticalError |
ERROR_NOTIFICATION |
fnevObjectCreated |
OBJECT_NOTIFICATION |
fnevObjectDeleted |
OBJECT_NOTIFICATION |
fnevObjectModified |
OBJECT_NOTIFICATION |
fnevObjectCopied |
OBJECT_NOTIFICATION |
fnevObjectMoved |
OBJECT_NOTIFICATION |
lpAdviseSink
[in] Pointer
to an advise sink object to receive the subsequent notifications.
lpulConnection
[out] Pointer
to a nonzero value that represents the notification registration.
Return Values
S_OK
The
notification registration was successful.
MAPI_E_INVALID_ENTRYID
The entry
identifier passed in lpEntryID is not in the appropriate format.
MAPI_E_NO_SUPPORT
The address
book provider does not support notification, possibly because it does not allow
changes to be made to its objects.
MAPI_E_UNKNOWN_ENTRYID
The address
book provider cannot handle the entry identifier passed in lpEntryID.
Remarks
Address book
providers implement the IABLogon::Advise method to register the caller
to be notified when a change occurs to an object in one of their containers.
Callers can register for notifications on messaging users, distribution lists,
or entire containers.
Clients
typically call IAddrBook::Advise
When a change
occurs to the indicated object of the type represented in ulEventMask, a
call is made to the OnNotify method of the advise sink pointed to by lpAdviseSink.
Data passed in the notification structure to the OnNotify routine
describes the event.
Notes to Implementers
You can
support notification with or without help from MAPI. MAPI has three support
object methods for helping service providers implement notification: IMAPISupport::Subscribe
If you elect
to support notification yourself, call the IUnknown::AddRef method of
the advise sink represented by the lpAdviseSink parameter to keep a copy
of this pointer. Maintain this copy until your IABLogon::Unadvise
Regardless of
how you support notification, assign a nonzero connection number to the
notification registration and return it in the lpulConnection parameter.
Do not release this connection number until Unadvise has been called.
Notes to Callers
The advise
sink pointer that you pass in the lpAdviseSink parameter to Advise
can point to an object that you have created or that MAPI has created through the
HrThisThreadAdviseSink
Be prepared
for your advise sink object to be released any time after your call to Advise
and before your call to Unadvise. MAPI recommends that you release your advise
sink object after Advise returns, unless you have a specific long-term
use for it.
For more
information on the notification process, see Event Notification in MAPI
See Also