IMAPIStatus::FlushQueues
適用対象: Outlook 2013 | Outlook 2016
送信または受信を待機しているすべてのメッセージを、すぐにアップロードまたはダウンロードするように強制します。 MAPI スプーラーの状態オブジェクトとトランスポート プロバイダーが実装する状態オブジェクトは、このメソッドをサポートしています。
HRESULT FlushQueues(
ULONG_PTR ulUIParam,
ULONG cbTargetTransport,
LPENTRYID lpTargetTransport,
ULONG ulFlags
);
パラメーター
ulUIParam
[in]このメソッドが表示するダイアログ ボックスまたはウィンドウの親ウィンドウへのハンドル。
cbTargetTransport
[in] lpTargetTransport パラメーターによって指されるエントリ識別子のバイト数。 cbTargetTransport パラメーターは、MAPI スプーラーの状態オブジェクトの呼び出しでのみ設定されます。 トランスポート プロバイダーの呼び出しの場合、 cbTargetTransport パラメーターは 0 に設定されます。
lpTargetTransport
[in]メッセージ キューをフラッシュするトランスポート プロバイダーのエントリ識別子へのポインター。 lpTargetTransport パラメーターは、MAPI スプーラーの状態オブジェクトの呼び出しでのみ設定されます。 トランスポート プロバイダーの呼び出しの場合、 lpTargetTransport パラメーターは NULL に設定されます。
ulFlags
[in]フラッシュ操作を制御するフラグのビットマスク。 次のフラグを設定できます。
FLUSH_ASYNC_OK
フラッシュ操作は非同期的に実行できます。 このフラグは、MAPI スプーラーの状態オブジェクトにのみ適用されます。
FLUSH_DOWNLOAD
受信メッセージ キューをフラッシュする必要があります。
FLUSH_FORCE
フラッシュ操作は、パフォーマンスが低下する可能性があるにもかかわらず、関係なく実行する必要があります。 このフラグは、非同期トランスポート プロバイダーが対象の場合に設定する必要があります。
FLUSH_NO_UI
status オブジェクトには進行状況インジケーターを表示しないでください。
FLUSH_UPLOAD
送信メッセージ キューをフラッシュする必要があります。
戻り値
S_OK
フラッシュ操作が成功しました。
MAPI_E_BUSY
別の操作が進行中です。この操作を開始する前に、完了を許可するか、停止する必要があります。
MAPI_E_NO_SUPPORT
状態オブジェクトのPR_RESOURCE_METHODS (PidTagResourceMethods) プロパティにSTATUS_FLUSH_QUEUES フラグが存在しないことで示されているように、status オブジェクトはこの操作をサポートしていません。
注釈
IMAPIStatus::FlushQueues メソッドは、MAPI スプーラーまたはトランスポート プロバイダーが送信キュー内のすべてのメッセージを直ちに送信するか、受信キューからすべてのメッセージを受信するよう要求します。 FlushQueues は、MAPI スプーラーの状態オブジェクトと、トランスポート プロバイダーが提供する状態オブジェクトによってのみ実装されます。
クライアントが作業を続行できるように、非同期要求のMAPI_E_BUSYを返す必要があります。
既定では、 FlushQueues は同期操作です。コントロールは、フラッシュが完了するまで呼び出し元に戻りません。 MAPI スプーラーによって実行されるフラッシュ操作のみを非同期にできます。クライアントは、FLUSH_ASYNC_OK フラグを設定して、この動作を要求します。
実装に関するメモ
リモート トランスポート プロバイダーの FlushQueues 実装では、ログオン オブジェクトの状態行の PR_STATUS_CODE (PidTagStatusCode) プロパティのビットを設定して、キューのフラッシュ方法を制御します。 リモート ビューアーが FLUSH_UPLOAD フラグを渡す場合、 FlushQueues メソッドはSTATUS_INBOUND_ENABLEDとSTATUS_INBOUND_ACTIVE ビットを設定する必要があります。 リモート ビューアーが FLUSH_DOWNLOAD フラグを渡す場合、 FlushQueues メソッドはSTATUS_OUTBOUND_ENABLEDとSTATUS_OUTBOUND_ACTIVE ビットを設定する必要があります。 FlushQueues はS_OKを返す必要があります。 MAPI スプーラーは、メッセージをアップロードおよびダウンロードするための適切なアクションを開始します。
呼び出し側への注意
MAPI スプーラー状態オブジェクトの呼び出しは、すべてのメッセージを適切なトランスポート プロバイダー間で転送するためのディレクティブです。 個々のトランスポート プロバイダーの状態オブジェクトを呼び出すと、そのプロバイダーのメッセージのみが影響を受けます。