Bagikan melalui


Menghitung Pekerjaan dalam Antrean Transfer

Untuk menghitung pekerjaan dari antrean transfer, panggil metode IBackgroundCopyManager::EnumJobs. Metode ini mengembalikan penunjuk antarmuka IEnumBackgroundCopyJobs yang Anda gunakan untuk menghitung pekerjaan dalam antrean.

Untuk mengambil pekerjaan pengguna, atur parameter pertama metode EnumJobs ke 0. Untuk mengambil semua pekerjaan dalam antrean, atur parameter pertama metode EnumJobs ke BG_JOB_ENUM_ALL_USERS. Hanya pengguna dengan hak istimewa administrator yang dapat mengambil semua pekerjaan dalam antrean transfer.

Perhatikan bahwa daftar enumerasi adalah rekam jepret pekerjaan dalam antrean transfer pada saat Anda memanggil metode EnumJobs. Namun, nilai properti dari pekerjaan tersebut mencerminkan nilai pekerjaan saat ini.

Jika Anda ingin mengambil pekerjaan transfer individual, hubungi metode IBackgroundCopyManager::GetJob.

Untuk menghitung file dalam pekerjaan, lihat Menghitung File dalam Pekerjaan.

Contoh berikut menunjukkan cara menghitung pekerjaan dalam antrean transfer. Variabel g_XferManager dalam contoh adalah penunjuk antarmuka IBackgroundCopyManager. Untuk detail tentang cara membuat penunjuk antarmuka IBackgroundCopyManager, lihat Koneksi ke Layanan 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;
}