IXPLogon::AddressTypes

適用対象: Outlook 2013 | Outlook 2016

トランスポート プロバイダーが処理する受信者の種類を返します。

HRESULT AddressTypes(
  ULONG FAR * lpulFlags,
  ULONG FAR * lpcAdrType,
  LPSTR FAR * FAR * lpppszAdrTypeArray,
  ULONG FAR * lpcMAPIUID,
  LPUID FAR * FAR * lpppUIDArray
);

パラメーター

lpulFlags

[out]返される文字列の種類を制御するフラグのビットマスク。 次のフラグを設定できます。

MAPI_UNICODE

返される文字列は Unicode 形式です。 MAPI_UNICODE フラグが設定されていない場合、文字列は ANSI 形式です。

lpcAdrType

[out] lpppszAdrTypeArray パラメーターによって指される配列内のエントリの数へのポインター。

lpppszAdrTypeArray

[out]受信者の種類を識別する文字列の配列へのポインターへのポインター。

lpcMAPIUID

[out] lpppUIDArray パラメーターによって指される配列内のエントリの数へのポインター。

lpppUIDArray

[out]受信者の種類を識別する MAPIUID 構造体へのポインターの配列へのポインターへのポインター。

戻り値

S_OK

トランスポート プロバイダーは、処理できる受信者の種類を正常に示しました。

実装に関するメモ

MAPI スプーラーは、トランスポート プロバイダーが IXPProvider::TransportLogon メソッドの呼び出しから戻った直後に IXPLogon::AddressTypes メソッドを呼び出して、トランスポート プロバイダーが処理する受信者の種類を示すことができます。 これを示すために、トランスポート プロバイダーは lpppszAdrTypeArray パラメーターに文字列へのポインターの配列へのポインターを渡すか、 lpppUIDArray パラメーターに MAPIUID 構造体へのポインターの配列へのポインターを渡すか、両方のパラメーターで値を渡す必要があります。

これら 2 つの配列は、異なる識別プロセスに使用されます。 MAPI と MAPI スプーラーは、lpppUIDArray 配列の MAPIUID 構造体を使用して、トランスポート プロバイダーまたはトランスポート プロバイダーが接続するメッセージング システムによって直接処理される受信者エントリ識別子を識別します。 MAPI スプーラーも MAPI スプーラーは、これらの MAPIUID 構造体のいずれかに含まれるエントリ識別子を使用してアドレスを展開しません。これらの構造体は、受信者の種類の識別にのみ使用されます。

MAPI スプーラーは、送信メッセージの受信者を処理するトランスポート プロバイダーを決定するときに、比較テストに lpppszAdrTypeArray パラメーター内の各文字列を使用します。 メッセージ受信者の PR_ADDRTYPE (PidTagAddressType) プロパティが、トランスポート プロバイダーが提供するメッセージング アドレスの種類の 1 つを識別する文字列と正確に一致する場合、プロバイダーはその受信者にメッセージを配信できます。

複数のトランスポート プロバイダーが同じ種類の受信者を処理できる場合、MAPI は、クライアント アプリケーションのプロファイルに示されているトランスポートの優先順位に基づいてトランスポート プロバイダーを選択します。 使用するトランスポート プロバイダーを決定するために、MAPI スプーラーは、プロバイダーが指定したすべての MAPIUID 構造体を優先順位順でスキャンし、プロバイダーが指定したすべてのアドレスの種類の値を優先順位でスキャンします。 このスキャンで特定の受信者と一致する最初のトランスポート プロバイダーは、この受信者を処理する最初の機会を取得します。 そのプロバイダーが受信者を処理しない場合、MAPI スプーラーはスキャンを続行して、まだ処理されていない受信者のトランスポート プロバイダーを検索します。 スキャンは、それ以上一致が見つからないまで続行されます。この時点で、処理されなかった受信者に対して非送信レポートが生成されます。

プロバイダーが常に特定の受信者の種類のセットをサポートしている場合は、トランスポート プロバイダーが渡したアドレスの種類と MAPIUID 配列を静的にすることができます。 トランスポート プロバイダーがこれらの配列を動的に構築する場合は、 TransportLogon の呼び出しで以前に渡されたサポート オブジェクトを使用してメモリを割り当てることができますが、これは必要ありません。

アドレスの種類と MAPIUID 配列に使用されるメモリは、 IXPLogon::TransportLogoff メソッドを最後に呼び出すまで割り当てられたままになります。この時点で、トランスポート プロバイダーは必要に応じてメモリを解放できます。 トランスポート プロバイダーは、 TransportLogoff 呼び出しから返された後、これらの配列の内容を変更しないでください。

任意の種類の受信者を処理できるトランスポート プロバイダーは、 lpppszAdrTypeArray パラメーターで NULL を返すことができます。 中央サーバーを使用してさまざまな外部メッセージ システムに送信メッセージを配信する LAN ベースのメッセージング システムのトランスポート プロバイダーは、一般的にこれを行います。 この種類のトランスポート プロバイダーは、プロファイル内のトランスポート プロバイダーの MAPI および MAPI スプーラーの優先順位に最後にインストールする必要があります。

アドレスの種類に基づいてディスパッチされる送信メッセージをサポートしないトランスポート プロバイダーは、 lpppszAdrTypeArray で 1 つの長さ 0 の文字列を返す必要があります。 トランスポート プロバイダーが受信者の種類をサポートしていない場合は、 MAPIUID 構造体に NULL を渡し、アドレス型の空の文字列を渡す必要があります。 この種類のトランスポート プロバイダーは、メッセージ プリプロセッサのインストールに最も一般的に使用されます。

関連項目

IXPLogon::TransportLogoff

IXPProvider::TransportLogon

MAPIUID

IXPLogon : IUnknown