ファイル転送の整合性
BITS は、転送するファイルのバージョンがコンテンツではなくファイル サイズとタイムスタンプに基づいて一貫していることを保証します (BITS は中間者攻撃から保護しません)。 コンテンツを自分で確認するには、IBackgroundCopyFile3::GetTemporaryName メソッドを使用して、ダウンロードしたコンテンツを含むファイルの名前を取得し、独自のメカニズムを使用して内容を確認してから、IBackgroundCopyFile3::SetValidationState メソッドを呼び出して、ファイルの内容が有効かどうかを BITS に示します。 検証状態を FALSE に設定して、コンテンツが配信元サーバーから送信された場合、ジョブはエラー状態になります。 コンテンツがピアからの場合、BITS は配信元サーバーからファイルをダウンロードします。
ダウンロードの場合、BITS がファイルの転送中にファイル サイズまたはタイム スタンプが変更された場合、BITS はそのファイルの転送のみを再開します。 たとえば、ダウンロード ジョブに 2 つのファイルが含まれており、BITS が 2 番目のファイルを転送している間にサーバー上でファイルが更新された場合、BITS は 2 番目のファイルの転送のみを再開します。 既に正常に転送された最初のファイルは、新しい変更を反映するように更新されません。
サーバーからダウンロードされるファイルを所有している場合は、ファイルの新しいバージョンごとに新しい URL を作成する必要があることに注意してください。 ファイルの新しいバージョンに同じ URL を使用すると、一部のプロキシ サーバーは、ファイルが古いかどうかを元のサーバーで確認しないため、キャッシュから古いデータを提供する可能性があります。
アップロードの場合、ファイル転送中にファイル サイズまたはタイムスタンプが変更されると、BITS によってエラーが生成され、ジョブは BG_JOB_STATE_ERROR 状態になります。
1 人以上のユーザーが同じファイルを同じ場所に転送することを要求した場合、BITS は転送要求を同期しません。 BITS は、要求ごとにファイルを個別に転送します。