Condividi tramite


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 di IBackgroundCopyManager per creare processi di trasferimento, enumerare i processi nella coda e recuperare i processi.

BITS richiede che i proxy dell'interfaccia cliente utilizzino il livello di impersonazione IDENTIFY o IMPERSONATE. Se l'applicazione non chiama CoInitializeSecurity, COM usa IDENTIFY per impostazione predefinita. BITS fallisce con E_ACCESSDENIED se il livello di impersonificazione corretto non è impostato. Se si fornisce una libreria che utilizza le interfacce BITS e un'applicazione che chiama la libreria imposta il livello di impersonificazione sotto IDENTIFY, sarà necessario chiamare CoSetProxyBlanket per impostare il livello di impersonificazione corretto per ogni interfaccia BITS chiamata.

Prima che l'applicazione esca, rilascia la tua copia del puntatore dell'interfaccia IBackgroundCopyManagerdi, come illustrato nell'esempio seguente.

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

Chiamata a BITS da .NET e C# per BITS