MAPI プロパティの種類の概要

適用対象: Outlook 2013 | Outlook 2016

プロパティ型は、MAPIDEFS で MAPI によって定義される定数です。プロパティ値の基になるデータ型を示す H ヘッダー ファイル。 MAPI、クライアント アプリケーション、またはサービス プロバイダーによって定義されているすべてのプロパティは、これらの種類のいずれかを使用します。

プロパティ型は、プロパティ タグに使用される名前付け規則と同様の規則に従います。 多くのプロパティ型には、単一値バージョンと複数値バージョンの両方があります。 単一値プロパティには、1 つの整数や文字列など、その型の 1 つの値が含まれます。 1 つの値プロパティを表すために使用される定数には、プレフィックス PT_と LONG やSTRING8などの実際の型を記述する文字列の 2 つの部分があります。

複数値プロパティには、その型の値が複数含まれています。 OLE バリアント配列とは異なり、複数値プロパティのすべての値は同じ型です。 複数値のプロパティを表すために使用される定数は、MV_FLAG フラグと、基本型を表す対応する単一値定数を組み合わせることによって作成されます。 3 つの部分があります。プレフィックス PT_の後にMV_が続き、その後に型を記述する文字列が続きます。 たとえば、複数の整数を含むプロパティの型はPT_MV_LONGされ、複数の文字列の場合はPT_MV_STRING8。

次の図は、PT_MV_LONG型のプロパティである複数値の整数を記述する SPropValue 構造体の構造を示しています。 Value メンバーが展開され、プロパティ内の整数値の数と、それらの値の配列へのポインターが含まれます。

複数値プロパティ

複数値プロパティ

複数値プロパティのサポートは省略可能ですが、MAPI では、クライアントとサービス プロバイダーが両方の種類のプロパティをサポートすることをお勧めします。これにより、MAPI に準拠したコンポーネント間の相互作用が向上するためです。

次の図は、 SPropValue 構造体に格納されている場所を示す、さまざまなプロパティ型の定数をすべて示しています。 Value メンバーのサイズは、特定の型に依存します。 単一値型のすべてが複数値に相当するわけではないことに注意してください。

プロパティ タイプ定数

プロパティ型定数

プロパティを操作するクライアントとサービス プロバイダーは、次の 2 つの手順に従う必要があります。

  1. プロパティが使用可能か使用不可かを判断します。

  2. 使用可能な場合は、プロパティの値を取得します。

場合によっては、クライアントまたはサービス プロバイダーは、プロパティの存在に対してチェックのみが必要な場合があります。それ以外の場合は、特定の値をチェックする必要があります。 たとえば、トランスポート プロバイダーには、 PR_SEND_RICH_INFO (PidTagSendRichInfo) プロパティを処理するための 3 つの異なるアクション コースがあります。これは、書式設定されたテキストでメッセージを送信するかどうかを示すブール値です。 PR_SEND_RICH_INFOが TRUE に設定されている場合、トランスポート プロバイダーは書式設定されたテキストを送信します。 FALSE に設定されている場合、書式設定されたテキストは転送前に破棄されます。 PR_SEND_RICH_INFOが使用できない場合、トランスポート プロバイダーは、特定のプロバイダーに対するアクションの既定のコースに従います。

MAPI は、クライアントまたはサービス プロバイダーがプロパティの種類が不明な場合にプロパティを取得するために使用できる特殊なプロパティの種類をPT_UNSPECIFIED定義します。クライアントまたはサービス プロバイダーは、その型に関する知識がなくてもプロパティを取得するために、オブジェクトの IMAPIProp::GetProps メソッドを呼び出し、プロパティの識別子とPT_UNSPECIFIEDプロパティ型で構成されるプロパティ タグを渡します。 GetProps は 、 プロパティの SPropValue 構造体を返し、PT_UNSPECIFIEDを適切な型に置き換えます。 PT_UNSPECIFIEDをサポートするには 、GetProps を 実装するサービス プロバイダーが必要です。

一部の MAPI オブジェクトは、それ自体のオブジェクトであるプロパティをサポートします。 オブジェクト プロパティには、型がPT_OBJECT。 IMAPIProp::GetProps を使用してこれらのプロパティにアクセスする代わりに、クライアントとサービス プロバイダーは通常、IMAPIProp::OpenProperty メソッドを使用し、アクセスに適したインターフェイスを指定するか、 プロパティをサポートするオブジェクトのメソッドを指定します。

オブジェクト プロパティの値にアクセスするには、オブジェクトのインターフェイスの 1 つを使用する必要があるため、 GetProps は不適切です。 GetProps を使用すると、呼び出し元は SPropValue 構造体を介してプロパティの値にアクセスします。 IMAPIProp::OpenProperty では、呼び出し元は オブジェクトにアクセスできるインターフェイスへのポインターを取得します。 OpenProperty は、オブジェクト プロパティを取得するために常に使用できます。 オブジェクトのメソッドを呼び出すもう 1 つのオプションは、すべてのオブジェクト プロパティで使用できるわけではありません。

たとえば、すべてのフォルダーでは、階層テーブルとコンテンツ テーブルという 2 つのテーブルがサポートされています。 これらのテーブルは、フォルダーのプロパティです。プロパティ タグは 、PR_CONTAINER_HIERARCHY (PidTagContainerHierarchy) と PR_CONTAINER_CONTENTS (PidTagContainerContents) です。 テーブルは、アクセスに IMAPITable インターフェイスを必要とするオブジェクトです。 クライアントは、フォルダーの IMAPIContainer::GetHierarchyTable メソッドを呼び出して階層テーブルにアクセスしたり、フォルダーの IMAPIContainer::GetContentsTable メソッドを呼び出してコンテンツ テーブルにアクセスしたり、フォルダーの IMAPIProp::OpenProperty メソッドを呼び出していずれかのテーブルにアクセスしたりできます。 OpenProperty を呼び出すために、クライアントはプロパティのプロパティ タグを最初のパラメーターとして渡し、2 番目のパラメーターとしてアクセスに使用するインターフェイスのインターフェイス識別子を渡します。 これらのパラメーターは 、PR_CONTAINER_HIERARCHY または PR_CONTAINER_CONTENTSIID_IMAPITableになります。

単一値プロパティ型と複数値プロパティ型の完全な一覧については、「 プロパティの種類」を参照してください。

関連項目