Share via


Énumération des travaux dans la file d’attente de transfert

Pour énumérer les travaux de la file d’attente de transfert, appelez la méthode IBackgroundCopyManager::EnumJobs . La méthode retourne un pointeur d’interface IEnumBackgroundCopyJobs que vous utilisez pour énumérer les travaux dans la file d’attente.

Pour récupérer les travaux de l’utilisateur, définissez le premier paramètre de la méthode EnumJobs sur 0. Pour récupérer tous les travaux de la file d’attente, définissez le premier paramètre de la méthode EnumJobs sur BG_JOB_ENUM_ALL_USERS. Seuls les utilisateurs disposant de privilèges d’administrateur peuvent récupérer tous les travaux de la file d’attente de transfert.

Notez que la liste énumérée est un instantané des travaux dans la file d’attente de transfert au moment où vous appelez la méthode EnumJobs. Toutefois, les valeurs de propriété de ces travaux reflètent les valeurs actuelles du travail.

Si vous souhaitez récupérer des travaux de transfert individuels, appelez la méthode IBackgroundCopyManager::GetJob .

Pour énumérer des fichiers dans un travail, consultez Énumération de fichiers dans un travail.

L’exemple suivant montre comment énumérer les travaux dans la file d’attente de transfert. La variable g_XferManager dans l’exemple est un pointeur d’interface IBackgroundCopyManager . Pour plus d’informations sur la création du pointeur d’interface IBackgroundCopyManager , consultez Connexion au service BITS.

HRESULT hr = 0;
IEnumBackgroundCopyJobs* pJobs = NULL;
IBackgroundCopyJob* pJob = NULL;
ULONG cJobCount = 0;
ULONG idx = 0;

//This example enumerates all jobs in the transfer queue. This call fails if the 
//current user does not have administrator privileges. To enumerate jobs for only 
//the current user, replace BG_JOB_ENUM_ALL_USERS with 0.
hr = g_XferManager->EnumJobs(BG_JOB_ENUM_ALL_USERS, &pJobs);
if (SUCCEEDED(hr))
{
  //Get the count of jobs in the queue. 
  pJobs->GetCount(&cJobCount);

  //Enumerate the jobs in the queue.
  for (idx=0; idx<cJobCount; idx++)
  {
    hr = pJobs->Next(1, &pJob, NULL);
    if (S_OK == hr)
    {
      //Retrieve or set job properties.

      pJob->Release();
      pJob = NULL;
    }
    else
    {
      //Handle error
      break;
    }
  }

  pJobs->Release();
  pJobs = NULL;
}