É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, affectez au premier paramètre de la méthode EnumJobs la valeur 0. Pour récupérer tous les travaux de la file d’attente, affectez au premier paramètre de la méthode EnumJobs la valeur BG _ Job _ enum _ All _ users. Seuls les utilisateurs disposant de privilèges d’administrateur peuvent récupérer tous les travaux dans 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 tâches de transfert individuelles, 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 des 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;
}