次の方法で共有


IXPLogon::TransportNotify

適用対象: Outlook 2013 | Outlook 2016

トランスポート プロバイダーが通知を要求したイベントの発生を通知します。

HRESULT TransportNotify(
  ULONG FAR * lpulFlags,
  LPVOID FAR * lppvData
);

パラメーター

lpulFlags

[in, out]通知イベントを通知するフラグのビットマスク。 次のフラグは、入力時に MAPI スプーラーによって設定でき、出力時に変更せずに返す必要があります。

NOTIFY_ABORT_DEFERRED

責任を受け入れたメッセージが遅延されていることをトランスポート プロバイダーに通知します。 このフラグは、遅延をサポートするトランスポート プロバイダーのみがサポートする必要があります。 lppvData パラメーターは、取り消されたメッセージのエントリ識別子を指します。 MAPI スプーラーが処理していないメッセージは、 IMsgStore::AbortSubmit メソッドを呼び出すことによって、引き続き遅延させることができます。

NOTIFY_BEGIN_INBOUND

MAPI スプーラーは、このトランスポート プロバイダー セッションの受信メッセージを受け入れることができるようになりました。 MAPI スプーラーは、トランスポート プロバイダーがログオン時に IXPProvider:: TransportLogon 呼び出しで LOGON_SP_POLL フラグを設定した場合、 IXPLogon::P oll メソッドを定期的に呼び出します。 NOTIFY_BEGIN_INBOUND フラグが設定されると、MAPI スプーラーは IMAPISupport::SpoolerNotify メソッドの呼び出しで渡されたNOTIFY_NEWMAIL フラグを受け取ります。 IMAPISupport::ModifyStatusRow メソッドを呼び出して、トランスポート プロバイダー セッションの状態テーブル行を更新してから、返す必要があります。 NOTIFY_BEGIN_INBOUNDフラグとNOTIFY_END_INBOUNDフラグは相互に排他的です。

NOTIFY_BEGIN_INBOUND_FLUSH

トランスポート プロバイダーに対して、受信メッセージをできるだけ早く循環するように通知します。 この通知に準拠するには、トランスポート プロバイダーは、ModifyStatusRow を使用して、状態テーブル行のPR_STATUS_CODE (PidTagStatusCode) プロパティのSTATUS_INBOUND_FLUSH フラグをできるだけ早く設定する必要があります。 受信メッセージング サイクルは、プロバイダーがダウンロードできるすべてをダウンロードしたと判断したとき、または NOTIFY_END_INBOUND_FLUSH フラグが設定された TransportNotify メソッド呼び出しを受信した場合に完了します。 受信メッセージング サイクルが終了するまで、プロバイダーは IMAPISupport::SpoolerYield メソッドを呼び出したり、それ以外の場合はオペレーティング システムにサイクルを放棄して受信メッセージの配信を高速化したりしないでください。 MAPI スプーラーは通常、クライアント アプリケーションを介してユーザーの要求に応じてのみNOTIFY_BEGIN_INBOUND_FLUSHを使用して、すべてのメッセージを今すぐ配信するため、これは許容されます。 受信フラッシュ操作の終了時に、プロバイダーは SpoolerNotify を使用して、その状態行の PR_STATUS_CODE プロパティの STATUS_INBOUND_FLUSH フラグをクリアする必要があります。

NOTIFY_BEGIN_OUTBOUND

このトランスポート プロバイダー セッションに対して送信操作を実行できるようになりました。 このプロバイダーに送信するメッセージがある場合は、 IXPLogon::SubmitMessage メソッドの呼び出しが次のようになります。 このセッションの状態テーブル行は、戻る前に更新する必要があります。 NOTIFY_BEGIN_OUTBOUNDフラグとNOTIFY_END_OUTBOUNDフラグは相互に排他的です。

NOTIFY_BEGIN_OUTBOUND_FLUSH

NOTIFY_BEGIN_INBOUND_FLUSH フラグと同様に機能しますが、送信メッセージを参照します。 適切な状態フラグがSTATUS_OUTBOUND_FLUSH。

NOTIFY_CANCEL_MESSAGE

MAPI スプーラーは、 lppvData パラメーターが IXPLogon::SubmitMessage メソッド呼び出しから 32 ビット値を指すメッセージの転送を取り消す必要があります。 NOTIFY_CANCEL_MESSAGE フラグは、トランスポート プロバイダーがメッセージに関連付けられている SubmitMessageIXPLogon::StartMessage、または IXPLogon::EndMessage メソッド呼び出しから返さずに設定できます。 トランスポート プロバイダーは、取り消されたメッセージを処理しているエントリ ポイントからできるだけ早くを返す必要があります。 現在処理中の受信メッセージの場合、トランスポート プロバイダーは、受信メッセージが現在保存されている場所に保存し、次の便利なタイミングでもう一度配信する必要があります。 受信メッセージ用に既に格納されているメッセージ オブジェクト データは破棄されます。 トランスポート プロバイダーが StartMessage または SubmitMessage 時刻にこの 32 ビット値を更新しなかった場合、値は送信メッセージの場合は 0、受信メッセージの場合は 1 です。

NOTIFY_END_INBOUND

このトランスポート プロバイダー セッションでは、受信操作を停止する必要があります。 MAPI スプーラーは Poll メソッドの使用を停止し、このセッションのNOTIFY_NEWMAILを無視します。 インプロセス メッセージを完了する必要があります。 トランスポート セッションの状態テーブル行は、戻る前に ModifyStatusRow を呼び出して更新する必要があります。 NOTIFY_END_INBOUNDフラグとNOTIFY_BEGIN_INBOUNDフラグは相互に排他的です。

NOTIFY_END_INBOUND_FLUSH

トランスポート プロバイダーに対して、受信フラッシュ モードから抜け出すよう通知します。 トランスポート プロバイダーはダウンロードを停止しないでくださいが、ダウンロードはバックグラウンドで行う必要があります。 トランスポート プロバイダーがこの通知に準拠できる場合は 、ModifyStatusRow を呼び出して、トランスポート セッションの状態テーブル行を更新する必要があります。

NOTIFY_END_OUTBOUND

送信操作は、このトランスポート プロバイダー セッションで停止する必要があります。 MAPI スプーラーは SubmitMessage の呼び出しを停止し、 SpoolerNotify NOTIFY_READYTOSEND フラグを無視します。 現在送信中の送信メッセージがある場合は、停止しないでください。メッセージの配信を停止するには、NOTIFY_CANCEL_MESSAGE フラグを使用します。 このセッションの状態テーブル行は、戻る前に ModifyStatusRow を 呼び出して更新する必要があります。 NOTIFY_END_INBOUNDフラグとNOTIFY_BEGIN_OUTBOUND フラグは相互に排他的です。

NOTIFY_END_OUTBOUND_FLUSH

NOTIFY_END_INBOUND_FLUSHと同様に機能しますが、送信メッセージを参照します。 適切な状態フラグがSTATUS_OUTBOUND_FLUSH。

lppvData

[out]イベント固有のデータへのポインター。 lppvData で指定される内容の詳細については、lpulFlags パラメーターの説明を参照してください。

戻り値

S_OK

呼び出しは成功し、期待される値または値を返しました。

注釈

MAPI スプーラーは IXPLogon::TransportNotify メソッドを呼び出して、通知が要求されたイベントについてトランスポート プロバイダーに通知します。 これらのイベントには、メッセージ転送を取り消す MAPI スプーラー要求、受信または送信トランスポート操作の開始または終了、および受信または送信メッセージ キューをクリアするための操作の開始または終了が含まれます。

ユーザーがトランスポート プロバイダーが以前に延期したメッセージを取り消そうとすると、MAPI スプーラーは TransportNotify を呼び出し、 ulFlags のNOTIFY_ABORT_DEFERREDフラグとNOTIFY_CANCEL_MESSAGE フラグの両方を渡します。 MAPI スプーラーがログオフしてもキューにメッセージがある場合は、TransportNotify を呼び出すときに ulFlags でNOTIFY_ABORT_DEFERREDのみを渡します。

実装に関するメモ

MAPI スプーラーは別の実行スレッドまたは別のウィンドウのプロシージャからこのメソッドを呼び出すことができるため、プロバイダーは、この呼び出しでデータへのアクセスを同期する必要があります。 これは、ほとんどの場合、MAPI スプーラーは、トランスポート プロバイダーが送信を開始したメッセージのキャンセルを通知するときに発生します。

関連項目