通知の登録
適用対象: Outlook 2013 | Outlook 2016
クライアントは、初期化プロセスの一環として、アドレス帳またはメッセージ ストアの通知に登録できます。
MAPI では、アドレス帳プロバイダーがサポートしているかどうかに関係なく、アドレス帳の通知がサポートされます。 メッセージ ストアでの通知のサポートは、特定のメッセージ ストア プロバイダーによって異なります。 特定のメッセージ ストア プロバイダーが通知をサポートしているかどうかを判断するには、そのPR_STORE_SUPPORT_MASK (PidTagStoreSupportMask) プロパティをチェックします。 メッセージ ストアで通知がサポートされている場合は、STORE_NOTIFY_OK ビットが設定されます。
アドバイズ ソース オブジェクトの Advise メソッドを呼び出して通知を登録します。 多くのオブジェクトが アドバイズ を実装し、クライアントはさまざまな方法でそれらのオブジェクトに登録できます。
通知に登録するには
MAPI アドバイズ シンク オブジェクトを作成し、その参照カウントをインクリメントします。
必要に応じて HrThisThreadAdviseSink を呼び出して、元のアドバイズ シンクをラップするアドバイズ シンク オブジェクトを作成し、元のアドバイス シンクを解放します。
登録を完了するには、次のいずれかの Advise メソッドを呼び出します。
IMAPISession::Advise を呼び出して、セッション通知またはアドレス帳またはメッセージ ストア オブジェクトの通知に登録します。
IAddrBook::Advise を呼び出して、アドレス帳の通知またはメッセージング ユーザー、コンテナー、または配布リストの通知を登録します。
IABLogon::Advise を呼び出して、メッセージング ユーザー、コンテナー、または配布リストに対する通知をアドレス帳プロバイダーに直接登録します。
IMsgStore::Advise を呼び出して、メッセージ ストアの通知またはフォルダーまたはメッセージの通知に登録します。
IMSLogon::Advise を呼び出して、フォルダーまたはメッセージに対する通知をメッセージ ストア プロバイダーに直接登録します。
IMAPITable::Advise を呼び出して、テーブル通知を登録します。
アドバイスから返された接続番号をキャッシュ します。
ラップされたアドバイズ シンクを使用している場合は、それを解放します。 ラップされたアドバイズ シンクが登録されると、不要になります。
IMAPISession::Advise を呼び出すと、セッション全体の重大なエラー通知または個々のオブジェクトに対するさまざまな通知に登録できます。 セッションは、共有セッションを使用する別のクライアントが IMAPISession::Logoff メソッドを呼び出したときに、共有セッションにログオンしているクライアントに重大なエラー通知を送信します。 セッション通知に登録するには、エントリ識別子パラメーターに NULL を渡します。 個々のオブジェクトに通知を登録するには、オブジェクトのエントリ識別子を渡します。 IMAPISession メソッドは、エントリ識別子の MAPIUID 部分によって決定された適切なサービス プロバイダーに呼び出しを転送します。 IMAPISession::Advise を呼び出してオブジェクト通知を登録する方が、サービス プロバイダーの Advise メソッドを呼び出すよりも簡単です。
アドレス帳への登録は、セッションへの登録に似ています。 アドレス帳から重大なエラー通知を登録するには、エントリ識別子に NULL を渡します。 特定のアドレス帳オブジェクトに対する通知を登録するには、適切なエントリ識別子と目的のイベントを指定します。 多くのアドレス帳プロバイダーは、個々のオブジェクトに対する通知をサポートしていないことに注意してください。 代わりに、コンテンツテーブルと階層テーブルに対するテーブル通知をサポートします。
アドバイズ 呼び出しから正常に戻った直後に 、HrAllocAdviseSink で実装または作成する アドバイズ シンクを解放することをお勧めします。 これは、サービス プロバイダーがアドバイズ 呼び出しの後、ただし Unadvise 呼び出しが行われる前にアドバイズ シンクを解放できるからです。 アドバイス ソースにアドバイズ シンクへのポインターを指定し、このアドバイズ シンクで参照カウントがインクリメントされたら、長期間使用しない限り、それを解放することをお勧めします。
注:
有効なアドバイザリ登録を表すすべての接続番号は、 Unadvise 呼び出しが行われるまで解放されません。