状態テーブルと状態オブジェクト

適用対象: Outlook 2013 | Outlook 2016

MAPI は、MAPI サブシステム、MAPI スプーラー、アドレス帳、または特定のサービス プロバイダーの状態に関する情報を含むテーブルを提供します。 このテーブルにアクセスするには、 IMAPISession::GetStatusTable を呼び出します。

状態テーブルの各行は、MAPI またはサービス プロバイダーによって実装された状態オブジェクトを表します。 状態オブジェクトを使用すると、プロバイダーの構成プロパティ シートを表示したり、プロバイダー のパスワードを変更したり、メッセージをアップロードまたはダウンロードしたり、特定のトランスポート プロバイダーと通信したりできます。

状態オブジェクトにアクセスするには、次の 2 つの方法があります。

  • 状態テーブルを使用する

  • ログオン オブジェクトの OpenStatusEntry メソッドを使用する

ログオン オブジェクトはクライアントでは使用できないため、状態テーブルを使用して状態オブジェクトにアクセスする必要があります。 状態テーブルのアプローチは間接的であり、状態オブジェクトを開く前にいくつかの呼び出しが必要であり、 IMAPIStatus 実装へのポインターが返されます。

状態テーブルを使用して状態オブジェクトを開くには

  1. IMAPIStatus::GetStatusTable を呼び出して、IMAPITable ポインターを取得します。

  2. 状態テーブルの IMAPITable::SetColumns メソッドを呼び出して、列セットを PR_ENTRYID (PidTagEntryId)、 PR_RESOURCE_TYPE (PidTagResourceType)、 PR_DISPLAY_NAME (PidTagDisplayName) に制限します。

  3. テーブル ビューを特定の状態オブジェクトに制限します。 MAPI 実装の場合、クライアントは 、PR_RESOURCE_TYPEを使用してプロパティの制限を定義できます。 サービス プロバイダーの実装の場合、クライアントは 、PR_PROVIDER_DISPLAY (PidTagProviderDisplay)、プロバイダーの名前、またはプロバイダー DLL ファイルの名前 である PR_PROVIDER_DLL_NAME (PidTagProviderDllName) を制限できます。

  4. IMAPITable::Restrict を呼び出して制限を設定します。

  5. プロバイダーの状態を表す行を取得するには、SPropertyRestriction 構造体を渡して HrQueryAllRows を呼び出します。

  6. 状態テーブル行からエントリ識別子を指定して IMAPISession::OpenEntry を呼び出して、状態オブジェクトを開き、 IMAPIStatus ポインターを取得します。

プロパティ シートを表示するには、ターゲット プロバイダーの status オブジェクトの IMAPIStatus::SettingsDialog メソッドを呼び出します。 SettingsDialog は、表示用のプロパティ シートを表示し、場合によってはプロバイダーの構成プロパティを変更します。

トランスポート プロバイダーと通信するには、その状態オブジェクトの IMAPIStatus::ValidateState メソッドを 呼び出します。 ValidateState は、トランスポート プロバイダーを再構成し、プロバイダーがユーザー インターフェイスを表示できないようにし、渡すフラグに応じてリモート サーバーからメッセージ ヘッダーをダウンロードするセッションを制御できます。 たとえば、リモート ヘッダーのダウンロードを取り消すには、ABORT_XP_HEADER_OPERATION フラグを ValidateState に渡します。 リモート サーバーに接続または切断するには、FORCE_XP_CONNECTまたはFORCE_XP_DISCONNECTを渡します。 プロバイダーを再構成するには、CONFIG_CHANGED渡します。

要求時にメッセージの送受信を実装するクライアントは、トランスポート プロバイダーまたは MAPI スプーラーの IMAPIStatus::FlushQueues メソッドを 呼び出します。 メソッドには、FLUSH_UPLOAD、FLUSH_DOWNLOAD、FLUSH_FORCEの 3 つのフラグを渡すことができます。 FLUSH_UPLOADは、プロバイダーまたは MAPI スプーラーに対して、出力キューで待機しているメッセージを送信するように指示し、FLUSH_DOWNLOADはプロバイダーまたは MAPI スプーラーに受信メッセージを受信するように指示します。 FLUSH_FORCEは、タイミングに関係なく、状態オブジェクトがフラッシュを実行するように、他のフラグのいずれかを使用して設定できます。

MAPI サブシステム、MAPI スプーラー、またはアドレス帳の状態オブジェクトのいずれかで SettingsDialog または ChangePassword を呼び出すことができるとは思わないでください。 サブシステムとアドレス帳の状態オブジェクトの両方が ValidateState のみをサポートします。MAPI スプーラーの状態オブジェクトは、ValidateState に加えて FlushQueues をサポートします。

関連項目

状態テーブル

MAPI 状態オブジェクト