ジョブの作成
転送ジョブを作成するには、IBackgroundCopyManager::CreateJob メソッドを呼び出します。 BITS によってジョブが作成されたら、ジョブにファイルを追加し、アプリケーションに合わせてジョブのプロパティを変更します。 キュー内のジョブをアクティブにするには、IBackgroundCopyJob::Resume メソッドを呼び出します。
CreateJob メソッドは、ジョブを一意に識別する GUID を作成します。 GUID を使用して、転送キューからジョブを取得します。 ジョブの作成時に指定する表示名は一意ではありません。複数のジョブで同じ名前を使用できます。
BITS は、キュー内のジョブの数を 300 ジョブに制限し、ユーザーが作成できるジョブの数を 60 ジョブに制限します。 これらの制限は、管理者やサービスには適用されません。 これらの既定の制限を変更するには、「グループ ポリシー」を参照してください。
次の例は、ダウンロード ジョブの作成方法を示しています。 この例では、g_pbcm 変数が、有効な IBackgroundCopyManager インターフェイス ポインターであることを前提としています。 IBackgroundCopyManager インターフェイス ポインターを作成する方法の詳細については、「BITS サービスへの接続」を参照してください。
HRESULT hr;
GUID JobId;
IBackgroundCopyJob* pJob = NULL;
//To create an upload job, replace BG_JOB_TYPE_DOWNLOAD with
//BG_JOB_TYPE_UPLOAD or BG_JOB_TYPE_UPLOAD_REPLY.
hr = g_pbcm->CreateJob(L"MyJobName", BG_JOB_TYPE_DOWNLOAD, &JobId, &pJob);
if (SUCCEEDED(hr))
{
//Save the JobId for later reference.
//Modify the job's property values.
//Add files to the job.
//Activate (resume) the job in the transfer queue.
}
最新の IBackgroundCopyJob インターフェイスを取得するには、IBackgroundCopyJob::QueryInterface メソッドを呼び出します。 次の例で、IBackgroundCopyJob5 インターフェイスを取得する方法を示します。
HRESULT hr = S_OK;
IBackgroundCopyJob* pJob = NULL;
IBackgroundCopyJob5* pJob5 = NULL;
hr = pJob->QueryInterface(__uuidof(IBackgroundCopyJob5), (void**)&pJob5);
pJob->Release();
if (FAILED(hr))
{
wprintf(L"pJob->QueryInterface failed with 0x%x.\n", hr);
goto cleanup;
}