Share via


建立作業

若要建立傳輸作業,請呼叫 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;
  }