Share via


Création d’un travail

Pour créer un travail de transfert, appelez la méthode IBackgroundCopyManager::CreateJob . Une fois que BITS a créé le travail, ajoutez des fichiers au travail et modifiez les propriétés du travail en fonction de votre application. Pour activer le travail dans la file d’attente, appelez la méthode IBackgroundCopyJob::Resume .

La méthode CreateJob crée un GUID qui identifie de manière unique le travail. Vous utilisez le GUID pour récupérer le travail à partir de la file d’attente de transfert. Le nom d’affichage que vous fournissez lorsque vous créez le travail n’est pas unique ; plusieurs travaux peuvent utiliser le même nom.

BITS limite le nombre de travaux dans la file d’attente à 300 travaux et le nombre de travaux qu’un utilisateur peut créer à 60 travaux. Ces limites ne s’appliquent pas aux administrateurs ou aux services. Pour modifier ces limites par défaut, consultez Stratégies de groupe.

L’exemple suivant montre comment créer un travail de téléchargement. L’exemple suppose que la variable g_pbcm est un pointeur d’interface IBackgroundCopyManager valide. Pour plus d’informations sur la création du pointeur d’interface IBackgroundCopyManager , consultez Connexion au service 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.
}

Pour obtenir la dernière interface IBackgroundCopyJob , appelez la méthode IBackgroundCopyJob::QueryInterface . L’exemple suivant montre comment obtenir l’interface 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;
  }