新しい MAPI プロパティの定義
適用対象: Outlook 2013 | Outlook 2016
クライアントとサービス プロバイダーで使用するために MAPI によって提供される豊富なプロパティにもかかわらず、MAPI を使用すると、必要に応じて新しいプロパティを作成できます。 新しいパブリック プロパティを定義するための有効なシナリオには、新しいメッセージ クラスをサポートするクライアント作成プロパティと、一意のメッセージング システム機能を公開するための新しいプロパティを作成するサービス プロバイダーなどがあります。
通常、サービス プロバイダーが既存の MAPI オブジェクトまたはメッセージ クラスの新しいプロパティを定義することは無効です。 MAPI を使用する主な利点の 1 つは、多数のメッセージング システム要素の標準識別子と形式を設定し、ユーザーがサービス プロバイダーをシームレスに組み合わせて一致できるようにすることです。 標準以外のプロパティを使用するサービス プロバイダーは、他のサービス プロバイダーと同様に機能しません。
クライアントは、次の方法で新しいメッセージ クラスのコンテンツ プロパティを作成できます。
メッセージ クラス固有のコンテンツ プロパティに対して、指定された範囲内のプロパティ識別子を使用する。
- または-
名前付きプロパティの使用。
すべてのサービス プロバイダーが名前付きプロパティをサポートしているわけではないため、最初のオプションを使用することをお勧めします。 MAPI では、クライアントが新しいメッセージ クラス固有のコンテンツ プロパティに使用する 2 つの個別の範囲を定義します。
送信可能なプロパティの0x7BFFへの0x6800
転送不可プロパティの0x7FFFに0x7C00
プロパティ識別子は、さまざまなベンダーまたはユーザーによって定義されたプロパティ間の競合を防ぐために、定義済みの範囲に収まる必要があります。 ただし、これらの範囲のプロパティのユーザーは、プロパティの動作に関する前提を立てることはできません。 新しいメッセージ クラスを作成するすべてのクライアントは、これらの範囲にアクセスできます。識別子 xxxx を持つプロパティは、1 つのメッセージ クラスに対する 1 つの動作と、別のメッセージ クラスの別の動作を意味します。
名前付きプロパティは、特定のプロパティがメッセージ クラスに固有であることを保証するために使用されます。 名前付きプロパティ識別子は、0x8000範囲から始まります。 クライアントは 1 つ以上の名前を定義し、メッセージ ストアの IMAPIProp::GetIDsFromNames メソッドを呼び出して、識別子を各名前に関連付けます。 名前付きプロパティは、オブジェクトの所有者が名前付きプロパティをサポートしている場合にのみ、クライアントまたはサービス プロバイダーが任意のオブジェクトの新しいプロパティを定義するために使用できます。 これらのプロパティのユーザーは 、GetIDsFromNames と関連する IMAPIProp メソッド GetNamesFromIDs を呼び出して、名前とその識別子の間でマップします。
新規または既存のすべてのプロパティでは、定義済みのプロパティ型のセットを使用する必要があります。 新しいプロパティ型を追加できず、既存の型を変更または削除することはできません。 単一文字または 16 ビット整数プロパティなどの単純な小さなプロパティは、任意の適切な型に格納できます。 たとえば、整数は ULONG として格納でき、文字列は PT_STRING8として格納できます。
カウントされたバイト配列を示すには、 PT_BINARY 型を使用します。 このプロパティ型は、オブジェクトに格納できるデータの型を拡張する場合に便利です。 バイトは順番に送信され、データの意味に関する想定は行われません。 クライアント アプリケーションがこのようなプロパティからデータを読み取ると、データは格納方法とは変わりません。 クライアントは、CPU 間でデータを移動するときに必要なバイト スワップを実行する必要があります。