ジョブの作成

転送ジョブを作成するには、IBackgroundCopyManager::CreateJob メソッドを呼び出します。 BITS によってジョブが作成されたら、ジョブにファイルを追加し、アプリケーションに合わせてジョブのプロパティを変更します。 キュー内のジョブをアクティブにするには、IBackgroundCopyJob::Resume メソッドを呼び出します。

CreateJob メソッドは、ジョブを一意に識別する GUID を作成します。 GUID を使用して、転送キューからジョブを取得します。 ジョブの作成時に指定する表示名は一意ではありません。複数のジョブで同じ名前を使用できます。

BITS は、キュー内のジョブの数を 300 ジョブに制限し、ユーザーが作成できるジョブの数を 60 ジョブに制限します。 これらの制限は、管理者やサービスには適用されません。 これらの既定の制限を変更するには、「グループ ポリシー」を参照してください。

次の例は、ダウンロード ジョブの作成方法を示しています。 この例では、g_pbcm 変数が、有効な IBackgroundCopyManager インターフェイス ポインターであることを前提としています。 IBackgroundCopyManager インターフェイス ポインターを作成する方法の詳細については、「BITS サービスへの接続」を参照してください。

HRESULT hr;
GUID JobId;
IBackgroundCopyJob* pJob = NULL;

//To create an upload job, replace BG_JOB_TYPE_DOWNLOAD with 
//BG_JOB_TYPE_UPLOAD or BG_JOB_TYPE_UPLOAD_REPLY.
hr = g_pbcm->CreateJob(L"MyJobName", BG_JOB_TYPE_DOWNLOAD, &JobId, &pJob);
if (SUCCEEDED(hr))
{
  //Save the JobId for later reference. 
  //Modify the job's property values.
  //Add files to the job.
  //Activate (resume) the job in the transfer queue.
}

最新の IBackgroundCopyJob インターフェイスを取得するには、IBackgroundCopyJob::QueryInterface メソッドを呼び出します。 次の例で、IBackgroundCopyJob5 インターフェイスを取得する方法を示します。

  HRESULT hr = S_OK;
  IBackgroundCopyJob* pJob = NULL;
  IBackgroundCopyJob5* pJob5 = NULL;

  hr = pJob->QueryInterface(__uuidof(IBackgroundCopyJob5), (void**)&pJob5);
  pJob->Release();
  if (FAILED(hr))
  {
    wprintf(L"pJob->QueryInterface failed with 0x%x.\n", hr);
    goto cleanup;
  }