次の方法で共有


転送キュー内のジョブの列挙

転送キューからジョブを列挙するには、IBackgroundCopyManager::EnumJobs メソッドを呼び出します。 このメソッドは、キュー内のジョブを列挙するために使用する IEnumBackgroundCopyJobs インターフェイス ポインターを返します。

ユーザーのジョブを取得するには、EnumJobs メソッドの最初のパラメーターを 0 に設定します。 キュー内のすべてのジョブを取得するには、EnumJobs メソッドの最初のパラメーターを BG_JOB_ENUM_ALL_UStandard Edition RS に設定します。 転送キュー内のすべてのジョブを取得できるのは、管理者特権を持つユーザーだけです。

列挙リストは、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;
}