Share via


Connessione al servizio BITS

Per connettersi al servizio di sistema BITS, creare un'istanza dell'oggetto BackgroundCopyManager come illustrato nell'esempio seguente. Il servizio di sistema BITS è il servizio di sistema Windows in esecuzione nel computer client che implementa la funzionalità di trasferimento in background.

#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <windows.h>
#include <bits.h>

//Global variable that several of the code examples in this document reference.
IBackgroundCopyManager* g_pbcm = NULL;  
HRESULT hr;

//Specify the appropriate COM threading model for your application.
hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if (SUCCEEDED(hr))
{
  hr = CoCreateInstance(__uuidof(BackgroundCopyManager), NULL,
                        CLSCTX_LOCAL_SERVER,
                        __uuidof(IBackgroundCopyManager),
                        (void**) &g_pbcm);
  if (SUCCEEDED(hr))
  {
    //Use g_pbcm to create, enumerate, or retrieve jobs from the queue.
  }
}

Per testare una versione specifica di BITS, usare un identificatore di classe simbolico per BackgroundCopyManager in base alla versione che si vuole controllare. Ad esempio, per eseguire il test per BITS 10.2, usare CLSID_BackgroundCopyManager10_2.

Nell'esempio seguente viene illustrato come usare uno degli identificatori di classe simbolici.

  hr = CoCreateInstance(CLSID_BackgroundCopyManager5_0, NULL,
                        CLSCTX_LOCAL_SERVER,
                        IID_IBackgroundCopyManager,
                        (void**) &g_pbcm);
  if (SUCCEEDED(hr))
  {
    //BITS 5.0 is installed.
  }

Usare i metodi dell'interfaccia IBackgroundCopyManager per creare processi di trasferimento, enumerare i processi nella coda e recuperare i processi.

BITS richiede che i proxy dell'interfaccia del client usino il livello di rappresentazione IDENTIFY o IMPERSONATE. Se l'applicazione non chiama CoInitializeSecurity, COM usa IDENTIFY per impostazione predefinita. BITS ha esito negativo con E_ACCESSDENIED se il livello di rappresentazione corretto non è impostato. Se si fornisce una libreria che esegue l'esercizio delle interfacce BITS e un'applicazione che chiama la libreria imposta il livello di rappresentazione al di sotto di IDENTIFY, sarà necessario chiamare CoSetProxyBlanket per impostare il livello di rappresentazione corretto per ogni interfaccia BITS chiamata.

Prima che l'applicazione venga chiusa, rilasciare la copia del puntatore all'interfaccia IBackgroundCopyManager , come illustrato nell'esempio seguente.

if (g_pbcm)
{
  g_pbcm->Release();
  g_pbcm = NULL;
}
CoUninitialize();

Chiamata a BITS da .NET e C# per BITS