Создание задания

Чтобы создать задание передачи, вызовите метод 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;
  }