Auflisten von Aufträgen in der Übertragungswarteschlange

Um Aufträge aus der Übertragungswarteschlange aufzulisten, rufen Sie die IBackgroundCopyManager::EnumJobs-Methode auf. Die -Methode gibt einen IEnumBackgroundCopyJobs-Schnittstellenzeiger zurück, den Sie zum Auflisten der Aufträge in der Warteschlange verwenden.

Um die Aufträge des Benutzers abzurufen, legen Sie den ersten Parameter der EnumJobs-Methode auf 0 fest. Um alle Aufträge in der Warteschlange abzurufen, legen Sie den ersten Parameter der EnumJobs-Methode auf BG_JOB_ENUM_ALL_USERS fest. Nur Benutzer mit Administratorrechten können alle Aufträge in der Übertragungswarteschlange abrufen.

Beachten Sie, dass die aufgezählte Liste ein Momentaufnahme der Aufträge in der Übertragungswarteschlange ist, wenn Sie die EnumJobs-Methode aufrufen. Die Eigenschaftswerte dieser Aufträge spiegeln jedoch die aktuellen Werte des Auftrags wider.

Wenn Sie einzelne Übertragungsaufträge abrufen möchten, rufen Sie die IBackgroundCopyManager::GetJob-Methode auf.

Informationen zum Auflisten von Dateien in einem Auftrag finden Sie unter Aufzählen von Dateien in einem Auftrag.

Das folgende Beispiel zeigt, wie Aufträge in der Übertragungswarteschlange aufgelistet werden. Die g_XferManager Variable im Beispiel ist ein IBackgroundCopyManager-Schnittstellenzeiger . Ausführliche Informationen zum Erstellen des IBackgroundCopyManager-Schnittstellenzeigers finden Sie unter Herstellen einer Verbindung mit dem BITS-Dienst.

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;
}