Creazione di un lavoro
Per creare un processo di trasferimento, chiamare il metodo IBackgroundCopyManager::CreateJob. Dopo che BITS ha creato il processo, aggiungi file al processo e modifica le proprietà del processo come appropriato per la tua applicazione. Per attivare il processo nella coda, utilizzare il metodo IBackgroundCopyJob::Resume.
Il metodoCreateJobcrea un GUID che identifica in modo univoco il processo. Usi il GUID per recuperare il lavoro dalla coda di trasferimento. Il nome visualizzato specificato quando si crea il processo non è univoco; più processi possono usare lo stesso nome.
BITS limita il numero di processi nella coda a 300 processi e il numero di processi che un utente può creare a 60 processi. Questi limiti non si applicano agli amministratori o ai servizi. Per modificare questi limiti predefiniti, vedere Criteri di gruppo.
Nell'esempio seguente viene illustrato come creare un processo di download. L'esempio presuppone che la variabile g_pbcm sia un puntatore a interfaccia valido IBackgroundCopyManager. Per informazioni dettagliate su come creare il puntatore all'interfaccia IBackgroundCopyManager, vedere Connessione al servizio 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.
}
Per ottenere l'interfaccia diIBackgroundCopyJob più recente, chiamare il metodo IBackgroundCopyJob::QueryInterface. Nell'esempio seguente viene illustrato come ottenere l'interfacciaIBackgroundCopyJob5.
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;
}