Creación de un trabajo

Para crear un trabajo de transferencia, llame al método IBackgroundCopyManager::CreateJob . Una vez que BITS crea el trabajo, agregue archivos al trabajo y modifique las propiedades del trabajo según corresponda para la aplicación. Para activar el trabajo en la cola, llame al método IBackgroundCopyJob::Resume .

El método CreateJob crea un GUID que identifica de forma única el trabajo. Use el GUID para recuperar el trabajo de la cola de transferencia. El nombre para mostrar que proporcione al crear el trabajo no es único; más de un trabajo puede usar el mismo nombre.

BITS limita el número de trabajos de la cola a 300 trabajos y el número de trabajos que un usuario puede crear en 60 trabajos. Estos límites no se aplican a los administradores o servicios. Para cambiar estos límites predeterminados, consulte Directivas de grupo.

En el ejemplo siguiente se muestra cómo crear un trabajo de descarga. En el ejemplo se supone que la variable g_pbcm es un puntero de interfaz IBackgroundCopyManager válido. Para obtener más información sobre cómo crear el puntero de interfaz IBackgroundCopyManager , consulte Conexión al servicio 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.
}

Para obtener la interfaz IBackgroundCopyJob más reciente, llame al método IBackgroundCopyJob::QueryInterface . En el ejemplo siguiente se muestra cómo obtener la interfaz 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;
  }