次の方法で共有


MAPI エントリ識別子

適用対象: Outlook 2013 | Outlook 2016

エントリ識別子は、MAPI オブジェクトを一意に識別して開くために使用される ENTRYID 構造体に格納されているバイナリ データの一部です。 ほとんどの MAPI オブジェクトにはエントリ識別子があります。 オブジェクトのエントリ識別子は、ファイルのファイル名に似ています。 ただし、送信可能ではなく、発信元のシステム以外のシステムでは使用できません。

エントリ識別子

メッセージ ストア プロバイダーは、メッセージ ストア、フォルダー、メッセージにエントリ識別子を割り当てます。アドレス帳プロバイダーは、アドレス帳コンテナー、配布リスト、メッセージング ユーザーに割り当てます。 エントリ識別子は、状態テーブルの状態オブジェクトなど、テーブル内の行で表されるオブジェクトを開く場合にも使用されます。 オブジェクトは、エントリ識別子を PR_ENTRYID (PidTagEntryId) プロパティに格納します。

サービス プロバイダーはエントリ識別子を作成、割り当て、検査しますが、クライアント アプリケーションでは、オブジェクトを開くツールとしてのみ使用されます。 クライアントでは、エントリ識別子はバイナリ データの不透明な部分であり、基になるメッセージング システムとは関係ありません。

クライアントは、オブジェクトの IMAPIProp::GetProps メソッドを呼び出して 、PR_ENTRYID プロパティを取得するか、テーブルの IMAPITable::QueryColumns メソッドを呼び出して 、PR_ENTRYID プロパティを保持する列を取得します。

エントリ識別子は、OpenEntry メソッドと CompareEntryIDs メソッドにパラメーターとして渡されます。 いくつかの MAPI オブジェクトは、 OpenEntry メソッドと CompareEntryIDs メソッドを 実装します。 OpenEntry を使用すると、クライアントはオブジェクトを開くことができます。 CompareEntryID を使用すると、クライアントは 2 つのエントリ識別子を比較して、同じオブジェクトを参照しているかどうかを判断できます。 エントリ識別子は必ずしもバイナリに匹敵するとは限らないので、クライアントは CompareEntryIDs メソッドで比較する必要があります。

サービス プロバイダーは任意にアラインされたエントリ識別子を処理する必要があるため、クライアントは常にサービス プロバイダーへの呼び出しで自然にアラインされたエントリ識別子を渡す必要があります。ただし、これは必ずしも当てはまるわけではありません。 自然に配置されたメモリ アドレスを使用すると、コンピューターはアラインメント エラーを生成することなく、そのアドレスでサポートされている任意のデータ型にアクセスできます。 自然配置係数は、通常、システム メモリ アロケーターで使用されるのと同じアラインメント係数であり、通常は 8 バイトです。

エントリ識別子には、短期と長期の 2 種類があります。 短期エントリ識別子は構築が速くなりますが、その一意性は、現在のワークステーション上の現在のセッションの有効期間中にのみ保証されます。 長期的なエントリ識別子の有効期間は長くなります。 短期エントリ識別子は、主に、テーブル内の行とダイアログ ボックス内のエントリに使用されますが、長期的なエントリ識別子は、メッセージ、フォルダー、配布リストなどの多くのオブジェクトに使用されます。

関連項目

MAPI アプリケーション開発