MAPI レコードキーと検索キー
適用対象: Outlook 2013 | Outlook 2016
レコード キーと検索キーは、多くの MAPI オブジェクトに割り当てられているバイナリ識別子です。 オブジェクトのエントリ識別子とは異なり、そのレコードまたは検索キーは直接同等であり、転送可能です。
レコード キー
レコード キーは、2 つのオブジェクトを比較するために使用されます。 メッセージ ストアオブジェクトとアドレス帳オブジェクトには、 PR_RECORD_KEY (PidTagRecordKey) プロパティに格納されるレコード キーが必要です。 レコード キーはデータではなくオブジェクトを識別するため、オブジェクトのすべてのインスタンスには一意のレコード キーがあります。 フォルダーとメッセージのレコード キーのスコープは、メッセージ ストアです。 アドレス帳コンテナー、メッセージング ユーザー、配布リストのスコープは、統合アドレス帳で使用するために MAPI によって提供される最上位のコンテナーのセットです。
レコード キーは、別のリソースで複製できます。 たとえば、2 つの異なるメッセージ ストア内の異なるメッセージは、同じレコード キーを持つことができます。 これは、長期的なエントリ識別子とは異なります。長期的なエントリ識別子にはサービス プロバイダーへの参照が含まれているため、スコープは広くなっています。 メッセージ ストアのレコード キーのスコープは、長期的なエントリ識別子と似ています。すべてのメッセージ ストア プロバイダーで一意である必要があります。 この一意性を確保するために、メッセージ ストア プロバイダーは通常、レコード キーを 、PR_MDB_PROVIDER (PidTagStoreProvider) プロパティとメッセージ ストアに固有の識別子の組み合わせである値に設定します。
検索キー
検索キーは、2 つのオブジェクト内のデータを比較するために使用されます。 オブジェクトの検索キーは、 そのPR_SEARCH_KEY (PidTagSearchKey) プロパティに格納されます。 検索キーはオブジェクト自体ではなくオブジェクトのデータを表しているため、同じデータを持つ 2 つの異なるオブジェクトに同じ検索キーを持つことができます。 たとえば、オブジェクトがコピーされると、元のオブジェクトとそのコピーの両方に同じデータと同じ検索キーがあります。
メッセージとメッセージング ユーザーには検索キーがあります。 メッセージの検索キーは、メッセージのデータの一意の識別子です。 メッセージ ストア プロバイダーは、メッセージ作成時にメッセージの PR_SEARCH_KEY プロパティを提供します。 アドレス帳エントリの検索キーは、アドレスの種類 (PR_ADDRTYPE (PidTagAddressType)) とアドレス (PR_EMAIL_ADDRESS (PidTagEmailAddress)) から計算されます。 アドレス帳エントリが書き込み可能な場合、 IMAPIProp::SetProps メソッドを使用してアドレスの種類とアドレスが設定され、 IMAPIProp::SaveChanges メソッドを使用してエントリが保存されるまで、その検索キーを使用できない可能性があります。 これらのアドレス プロパティが変更されると、 SaveChanges 呼び出しで変更がコミットされるまで、対応する検索キーが新しい値と同期されない可能性があります。
オブジェクトのレコード キーの値は、サービス プロバイダーに応じて、検索キーの値と同じまたは異なる場合があります。 一部のサービス プロバイダーは、オブジェクトの検索キー、レコード キー、エントリ識別子に同じ値を使用します。 他のサービス プロバイダーは、オブジェクトの識別子ごとに一意の値を割り当てます。