Conexión al servicio BITS

Para conectarse al servicio del sistema BITS, cree una instancia del objeto BackgroundCopyManager como se muestra en el ejemplo siguiente. El servicio del sistema BITS es el servicio del sistema windows que se ejecuta en el equipo cliente que implementa la funcionalidad de transferencia en segundo plano.

#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.
  }
}

Para probar una versión específica de BITS, use un identificador de clase simbólico para BackgroundCopyManager en función de la versión que desee comprobar. Por ejemplo, para probar bits 10.2, use CLSID_BackgroundCopyManager10_2.

En el ejemplo siguiente se muestra cómo usar uno de los identificadores de clase simbólicos.

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

Use los métodos de la interfaz IBackgroundCopyManager para crear trabajos de transferencia, enumerar trabajos en la cola y recuperar trabajos.

BITS requiere que los servidores proxy de interfaz del cliente usen el nivel IDENTIFY o IMPERSONATE de suplantación. Si la aplicación no llama a CoInitializeSecurity, COM usa IDENTIFY de forma predeterminada. BITS produce un error E_ACCESSDENIED si no se establece el nivel de suplantación correcto. Si proporciona una biblioteca que ejerce las interfaces bits y una aplicación que llama a la biblioteca establece el nivel de suplantación inferior a IDENTIFY, deberá llamar a CoSetProxyBlanket para establecer el nivel de suplantación correcto para cada interfaz de BITS a la que llame.

Antes de que se cierre la aplicación, libere la copia del puntero de interfaz IBackgroundCopyManager , como se muestra en el ejemplo siguiente.

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

Llamar a BITS desde .NET y C# para BITS