Condividi tramite


Creazione di un processo

Per creare un processo di trasferimento, chiamare il metodo IBackgroundCopyManager::CreateJob. Dopo che BITS ha creato il processo, aggiungere file al processo e modificare le proprietà del processo in base alle esigenze dell'applicazione. Per attivare il processo nella coda, chiamare il metodo IBackgroundCopyJob::Resume .

Il metodo CreateJob crea un GUID che identifica in modo univoco il processo. Usare il GUID per recuperare il processo 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. Nell'esempio si presuppone che la variabile g_pbcm sia un puntatore all'interfaccia IBackgroundCopyManager valido. 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 IBackgroundCopyJob più recente, chiamare il metodo IBackgroundCopyJob::QueryInterface. L'esempio seguente illustra come ottenere l'interfaccia 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;
  }