サービス プロバイダー ログオンの実装
適用対象: Outlook 2013 | Outlook 2016
MAPI は、プロバイダー オブジェクト内のメソッドを呼び出して、エントリ ポイント関数から返すポインターを使用してログオン プロセスを開始します。 方法は、サービス プロバイダーの種類に応じて、次のように異なります。
IABProvider:: アドレス帳プロバイダーのログオン
IMSProvider:: メッセージ ストア プロバイダーのログオン
トランスポート プロバイダーの IXPProvider::TransportLogon
実装するログオン 方法で、次のタスクを実行します。
IUnknown::AddRef メソッドを呼び出して、入力パラメーターとして渡されるサポート オブジェクトの参照カウントをインクリメントします。
サポート オブジェクトの IMAPISupport::OpenProfileSection メソッドを 呼び出して、プロファイル セクションにアクセスします。
プロファイル セクションの IMAPIProp::SetProps メソッドを 呼び出して、次のプロパティを設定します。
PR_DISPLAY_NAME (PidTagDisplayName)
PR_ENTRYID (PidTagEntryId)
PR_PROVIDER_DISPLAY (PidTagProviderDisplay)
PR_RECORD_KEY (PidTagRecordKey)
注:
プロファイル セクションのPR_RESOURCE_FLAGSまたはPR_PROVIDER_DLL_NAMEプロパティの設定を試みないでください。 ログオン時に、これらのプロパティは読み取り専用です。
構成に必要なプロパティがプロファイルに格納されているか、ユーザーから使用できるかどうかを確認します。 構成の確認の詳細については、「 サービス プロバイダーの構成の確認」を参照してください。
プロバイダーがアドレス帳またはメッセージ ストア プロバイダーの場合は、サポート オブジェクトの IMAPISupport::SetProviderUID メソッドを呼び出して、一意の識別子または MAPIUID を登録します。 トランスポート プロバイダーは、MAPI が IXPLogon::AddressTypes メソッドを呼び出すときに MAPIUID 構造体を登録します。 MAPIUID の登録の詳細については、「サービス プロバイダーの一意識別子の登録」を参照してください。
ログオン オブジェクトをインスタンス化し、次のいずれかの値を使用してを返します。
ログオンが成功したことを示すS_OK。
MAPI_E_UNCONFIGURED、1 つ以上の構成プロパティが使用できなかったことを示します。
MAPI_E_USER_CANCEL、ユーザーが構成ダイアログ ボックスを取り消し、構成プロパティが使用できなくなったことを示します。
プロバイダーを構成できなかったが、MAPI は関係なく使用できるようにする必要があることを示すMAPI_E_FAILONEPROVIDER。 ログオン メソッドは、この値を返して、プロバイダーがパスワードを必要とし、ユーザー インターフェイスが無効になっているためユーザーにプロンプトを表示できない場合など、致命的でないエラーを報告する必要があります。
上記のタスクの一覧では、サービス プロバイダー ログオン メソッドの最小実装について説明します。 必要に応じて、追加の機能を含めることができます。 たとえば、一部のプロバイダーは IMAPISupport::ModifyStatusRow を呼び出して、ログオン メソッドの状態テーブルを更新します。
注:
ログオン時に最適なパフォーマンスを実現するには、 IMAPISupport::P repareSubmit または IMAPISupport::SpoolerNotify を呼び出さないようにします。 これらの呼び出しを完了し、ログオン メソッドに制御を返す前に、MAPI スプーラーを開始する必要があります。