IXPLogon::StartMessage
適用対象: Outlook 2013 | Outlook 2016
トランスポート プロバイダーから MAPI スプーラーへの受信メッセージの転送を開始します。
HRESULT StartMessage(
ULONG ulFlags,
LPMESSAGE lpMessage,
ULONG FAR * lpulMsgRef
);
パラメーター
ulFlags
[����]�\��Ă��܂��B0 �ɂ���K�v������܂��B
lpMessage
[in]読み取り/書き込みアクセス許可を持つメッセージ オブジェクト (受信メッセージを表す) へのポインター。これは、トランスポート プロバイダーがそのメッセージにアクセスして操作するために使用します。 このオブジェクトは、トランスポート プロバイダーが IXPLogon::StartMessage の呼び出しから戻るまで有効なままになります。
lpulMsgRef
[out]メッセージに割り当てられた参照値へのポインター。 MAPI スプーラーは、トランスポート プロバイダーへのポインターを返す前に、この値を 1 に初期化します。
戻り値
S_OK
�ʘb���������A�\�������l�܂��͒l���Ԃ���܂��B
注釈
MAPI スプーラーは IXPLogon::StartMessage メソッドを呼び出して、トランスポート プロバイダーから MAPI スプーラーへの受信メッセージの転送を開始します。 トランスポート プロバイダーは、lpMessage が指すメッセージの使用を開始する前に、IXPLogon::TransportNotify メソッドの呼び出しによって使用される可能性のあるメッセージ参照を lpulMsgRef パラメーターに格納する必要があります。
StartMessage 呼び出し中に、MAPI スプーラーは、メッセージの転送中に開かれたオブジェクトのメソッドを処理し、添付ファイルも処理します。 この処理には長い時間がかかる場合があります。 トランスポート プロバイダーは、この処理中に MAPI スプーラーの IMAPISupport::SpoolerYield コールバック関数を頻繁に呼び出して、他のシステム タスクの CPU 時間を解放できます。
トランスポート プロバイダーがメッセージ用に作成する受信者テーブル内のすべての受信者には、必要なすべてのアドレス指定プロパティが含まれている必要があります。 必要に応じて、プロバイダーは、特定の受信者を表すカスタム受信者を構築できます。 ただし、プロバイダーが、より多くの情報を含む受信者エントリを生成できる場合は、それを行う必要があります。 たとえば、トランスポート プロバイダーにアドレス帳プロバイダーの受信者形式に関する十分な情報があり、その形式の受信者の有効なエントリ識別子を作成できる場合は、エントリ識別子を構築する必要があります。
転送不可能なプロパティを受信した場合、トランスポート プロバイダーは新しいメッセージに格納しないでください。 ただし、トランスポート プロバイダーは、受信したすべての送信可能なプロパティを新しいメッセージに格納する必要があります。
受信メッセージが配信レポートまたは配信不能レポートであり、トランスポート プロバイダーが IMAPISupport::StatusRecips メソッドを使用して元のメッセージからレポートを生成できない場合、プロバイダー自体がメッセージに適切なプロパティを設定する必要があります。 ただし、トランスポート プロバイダーは、メッセージの PR_ENTRYID (PidTagEntryId) プロパティを設定できません。
処理後に受信メッセージを適切な MAPI メッセージ ストアに保存するために、トランスポート プロバイダーは IMAPIProp::SaveChanges メソッドを 呼び出します。 トランスポート プロバイダーに MAPI スプーラーに渡すメッセージがない場合は、SaveChanges を呼び出さずに StartMessage 呼び出しから戻ることで、受信メッセージを停止できます。
StartMessage 呼び出し中にトランスポート プロバイダーが開くすべてのオブジェクトは、戻る前に解放する必要があります。 ただし、プロバイダーは、MAPI スプーラーが lpMessage パラメーターで最初に渡したメッセージ オブジェクトを解放しないでください。
StartMessage からエラーが返された場合、処理中のメッセージは変更を保存せずに解放され、失われます。 この場合、トランスポート プロバイダーは IMAPISupport::SpoolerNotify メソッドを呼び出してNOTIFY_CRITICAL_ERROR フラグを渡し、 IXPLogon::P oll メソッドを呼び出して、MAPI スプーラーに重大なエラー状態であることを通知する必要があります。
詳細については、「 MAPI スプーラーとの対話」を参照してください。