다음을 통해 공유


전송 큐에서 작업 열거

전송 큐에서 작업을 열거하려면 IBackgroundCopyManager::EnumJobs 메서드를 호출합니다. 메서드는 큐에서 작업을 열거하는 데 사용하는 IEnumBackgroundCopyJobs 인터페이스 포인터를 반환합니다.

사용자의 작업을 검색하려면 EnumJobs 메서드의 첫 번째 매개 변수를 0으로 설정합니다. 큐의 모든 작업을 검색하려면 EnumJobs 메서드의 첫 번째 매개 변수를 BG_JOB_ENUM_ALL_USERS 설정합니다. 관리자 권한이 있는 사용자만 전송 큐의 모든 작업을 검색할 수 있습니다.

열거된 목록은 EnumJobs 메서드를 호출할 때 전송 큐에 있는 작업의 스냅샷. 그러나 해당 작업의 속성 값은 작업의 현재 값을 반영합니다.

개별 전송 작업을 검색하려면 IBackgroundCopyManager::GetJob 메서드를 호출합니다.

작업의 파일을 열거하려면 작업 에서 파일 열거를 참조하세요.

다음 예제에서는 전송 큐에서 작업을 열거하는 방법을 보여줍니다. 예제의 g_XferManager 변수는 IBackgroundCopyManager 인터페이스 포인터입니다. IBackgroundCopyManager 인터페이스 포인터를 만드는 방법에 대한 자세한 내용은 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;
}