Share via


IBackgroundCopyCallback::JobTransferred メソッド (bits.h)

BITS は、ジョブ内のすべてのファイルが正常に転送されると、 JobTransferred メソッドの実装を呼び出します。 BG_JOB_TYPE_UPLOAD_REPLYジョブの場合、BITS は、アップロード ファイルがサーバーに転送され、応答がクライアントに転送された後に JobTransferred メソッドを呼び出します。

構文

HRESULT JobTransferred(
  [in] IBackgroundCopyJob *pJob
);

パラメーター

[in] pJob

ジョブが完了した時刻、転送されたバイト数、転送されたファイルの数など、ジョブに関連する情報が含まれます。 pJob を解放しないでください。BITS は、 メソッドが戻ったときにインターフェイスを解放します。

戻り値

このメソッドは 、S_OKを返す必要があります。それ以外の場合、BITS はS_OKが返されるまで、このメソッド 呼び出し続けます。 パフォーマンス上の理由から、 S_OK 以外の値を返す回数を数回に制限する必要があります。 エラー コードを返す代わりに、常に S_OK を返し、エラーを内部的に処理することを検討してください。 このメソッドが呼び出される間隔は任意です。

このメソッドが失敗し、 IBackgroundCopyJob2::SetNotifyCmdLine メソッドを呼び出した場合、コマンド ラインが実行され、このメソッドは再度呼び出されないことに注意してください。

注釈

通常、実装では IBackgroundCopyJob::Complete メソッドを呼び出して、BITS がファイルを正常に転送したことを確認する必要があります。 Complete メソッドを呼び出すまで、クライアントではファイルと応答ファイルをダウンロードできません。

Complete メソッドまたは IBackgroundCopyJob::Cancel メソッドを 90 日以内に呼び出さない場合 (既定の JobInactivityTimeout グループ ポリシー)、BITS はジョブを取り消し、ダウンロードしたファイルと応答ファイルを削除します。ジョブの取り消しは、正常にアップロードされたファイルには影響しません。

コールバックで応答データを取得する場合は、IBackgroundCopyJob2 インターフェイスの pJob を照会し、その GetReplyData メソッドを呼び出します。 応答データを含むファイルの名前を取得するには、 GetReplyFileName メソッドを呼び出します。

BITS では、サードパーティの侵入に対する転送されたファイルの整合性は保証されません。 クライアントは、 Complete メソッドを呼び出す前に、転送されたファイルを検証するための整合性チェックを実装できます。 ファイルが転送されたときに通知を受け取るには、 IBackgroundCopyCallback2::FileTransferred メソッドを 実装します。 コールバック内で IBackgroundCopyFile3::GetTemporaryName メソッドを呼び出して、ダウンロードしたコンテンツを含む一時ファイルの名前を取得します。 コンテンツを検証し、 IBackgroundCopyFile3::SetValidationState メソッドを呼び出して、コンテンツが有効かどうかを示します。 コンテンツが無効で、BITS が配信元サーバーからファイルをダウンロードした場合、ジョブはエラー状態になります。 ジョブがピアからダウンロードされた場合、BITS は配信元サーバーからファイルをダウンロードします。

メモ BITS では、ユーザーごとに最大 4 つの同時通知がサポートされます。 1 つ以上のアプリケーションでユーザーの 4 つの通知すべてが返されないようにブロックされている場合、同じユーザーとして実行されているアプリケーションは、1 つ以上のブロック通知が返されるまで通知を受信しません。 コールバックが他の通知をブロックする可能性を減らすには、実装を短くします。
 

IBackgroundCopyCallback インターフェイスのコード例を参照してください。

要件

要件
サポートされている最小のクライアント Windows XP
サポートされている最小のサーバー Windows Server 2003
対象プラットフォーム Windows
ヘッダー bits.h

こちらもご覧ください

IBackgroundCopyCallback

IBackgroundCopyJob

IBackgroundCopyJob::Cancel

IBackgroundCopyJob::Complete