创建作业

若要创建传输作业,请调用 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;
  }