Share via


階層テーブル

適用対象: Outlook 2013 | Outlook 2016

階層テーブルには、メッセージ ストア内のフォルダー、またはアドレス帳コンテナー内のコンテナーに関する情報が含まれています。 階層テーブルの各行には、1 つのフォルダーまたはアドレス帳コンテナーに関する情報を含む列のセットが含まれています。 階層テーブルは主にクライアントによって使用され、フォルダーとサブフォルダーのツリーを表示するためにメッセージ ストア プロバイダーによって実装され、アドレス帳プロバイダーによって実装され、アドレス帳内のコンテナーのツリーが表示されます。 サブコンテナーを保持できないコンテナーは、PR_CONTAINER_FLAGS (PidTagContainerFlags) プロパティにAB_SUBCONTAINERS フラグがない場合に示すように、階層テーブルを実装しません。

階層テーブルには、次の呼び出しによってアクセスできます。

コンテナーとフォルダーは、テーブル プロパティを取得するための両方の手法をサポートする必要があります。 サービス プロバイダーがこれらのテーブルにアクセスする 1 つの方法のみをサポートすることは許容されません。これは、クライアントが選択できる必要があるためです。

重要

ストア プロバイダーは、階層テーブルに対して指定された並べ替え順序セットを尊重することは保証されません。

IMAPIProp::OpenProperty の呼び出しでは、対応するプロパティPR_CONTAINER_HIERARCHYを開いて階層テーブルにアクセスします。 PR_CONTAINER_HIERARCHYフォルダーまたはコンテナーの IMAPIProp::GetProps メソッドを介して取得することはできませんが、IMAPIProp::GetPropList メソッドによって返されるプロパティ タグ配列に含まれています。

PR_CONTAINER_HIERARCHY を使用して、階層テーブルをコピー操作に含めたり、コピー操作から除外したりすることもできます。 クライアントがコピー操作で IMAPIProp::CopyTolpExcludeProps パラメーターにPR_CONTAINER_HIERARCHYを指定した場合、新しいフォルダーまたはコンテナーは元のフォルダーまたはコンテナーの階層テーブルをサポートしません。

次のプロパティは、階層テーブルに必要な列セットを構成します。

PR_COMMENT (PidTagComment)
PR_DEPTH (PidTagDepth)
PR_DISPLAY_NAME (PidTagDisplayName)
PR_DISPLAY_TYPE (PidTagDisplayType)
PR_ENTRYID (PidTagEntryId)
PR_INSTANCE_KEY (PidTagInstanceKey)
PR_OBJECT_TYPE (PidTagObjectType)
PR_STATUS (PidTagStatus)

PR_DISPLAY_NAME には、階層の表示に表示されるコンテナーまたはフォルダーの名前が含まれています。

PR_ENTRYID は、このコンテナーまたはフォルダーに関連付けられているエントリ識別子です。 これは、長期的なエントリ識別子である必要があります。 クライアントと MAPI は、このエントリ識別子を OpenEntry に渡してコンテナーまたはフォルダーを開き、 IMAPIContainer::GetContentsTable を呼び出してその内容を表示できます。

PR_DEPTH は、このコンテナーまたはフォルダーのインデントのレベルを示す数値で、最上位レベルは 0 です。 コンテナーまたはフォルダーが存在する階層が深いほど、 そのPR_DEPTH プロパティの値が大きくなります。 クライアントは 、PR_DEPTH プロパティを使用して階層テーブルを適切に表示し、ユーザーが親子関係を明確に表示できるようにします。 コンテナーまたはフォルダーの深さは、常に階層テーブルを実装するコンテナーまたはフォルダーに対して相対的です。

PR_OBJECT_TYPE は、アドレス帳階層テーブルの場合は MAPI_ABCONT、フォルダー階層テーブルの場合はMAPI_FOLDERに常に設定されます。

PR_DISPLAY_TYPE は、階層テーブルでのコンテナーまたはフォルダーの表示方法に関連する数値です。 主に、コンテナーまたはフォルダーの種類を視覚的に区別するために、表示目的で使用されます。 多くのメッセージ ストアおよびアドレス帳プロバイダーは、さまざまな表示の種類のアイコンを使用します。 これらのアイコンを提供するのはプロバイダー次第です。MAPI では既定値は提供されません。

MAPI では、 PR_DISPLAY_TYPEの多くの値を定義します。フォルダーに対して有効な値と、アドレス帳コンテナーの階層テーブルで使用される値が定義されています。 通常、フォルダーの PR_DISPLAY_TYPE は、既定のフォルダー アイコンを示すためにDT_FOLDERに設定され、別のフォルダーへのリンクを表すアイコンを示すDT_FOLDER_LINK、またはアプリケーション固有のアイコンを示すDT_FOLDER_SPECIALに設定されます。 DT_FOLDER_LINKは、検索結果フォルダーで使用されます。

これらの必須列に加えて、アドレス帳階層テーブルには PR_CONTAINER_FLAGS プロパティが含まれている必要があります。 PR_CONTAINER_FLAGS は、階層内のコンテナーに関するさまざまな属性を示し、あるコンテナーを別のコンテナーと区別するために使用されます。

アドレス帳階層テーブルの省略可能なプロパティは 、PR_AB_PROVIDER_ID (PidTagAbProviderId) プロパティです。

メッセージ ストア階層テーブルには、次のプロパティが必要な列セットに含まれます。

アドレス帳プロバイダーは、MAPI 統合アドレス帳で必要であるため、階層テーブルの実装で次の IMAPITable メソッドをサポートする必要があります。

メソッド メソッド
IMAPITable::QueryColumns
IMAPITable::QueryPosition
IMAPITable::SeekRow
IMAPITable::SeekRowApprox
IMAPITable::FindRow
IMAPITable::Restrict
IMAPITable::CreateBookmark
IMAPITable::FreeBookmark
IMAPITable::QueryRows

関連項目

MAPI テーブル