전송 큐에서 작업 열거
전송 큐에서 작업을 열거하려면 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;
}