Share via


Connexion au service BITS

Pour vous connecter au service système BITS, créez un instance de l’objet BackgroundCopyManager, comme illustré dans l’exemple suivant. Le service système BITS est le service système Windows qui s’exécute sur l’ordinateur client qui implémente la fonctionnalité de transfert en arrière-plan.

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

Pour tester une version spécifique de BITS, utilisez un identificateur de classe symbolique pour BackgroundCopyManager en fonction de la version que vous souhaitez case activée. Par exemple, pour tester BITS 10.2, utilisez CLSID_BackgroundCopyManager10_2.

L’exemple suivant montre comment utiliser l’un des identificateurs de classe symboliques.

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

Utilisez les méthodes de l’interface IBackgroundCopyManager pour créer des travaux de transfert, énumérer des travaux dans la file d’attente et récupérer des travaux.

BITS exige que les proxys d’interface du client utilisent le niveau d’emprunt d’identité IDENTIFIER ou IMPERSONATE. Si l’application n’appelle pas CoInitializeSecurity, COM utilise IDENTIFIER par défaut. BITS échoue avec E_ACCESSDENIED si le niveau d’emprunt d’identité correct n’est pas défini. Si vous fournissez une bibliothèque qui exerce les interfaces BITS et qu’une application qui appelle votre bibliothèque définit le niveau d’emprunt d’identité sous IDENTIFIER, vous devez appeler CoSetProxyBlanket pour définir le niveau d’emprunt d’identité correct pour chaque interface BITS que vous appelez.

Avant la sortie de votre application, relâchez votre copie du pointeur d’interface IBackgroundCopyManager , comme illustré dans l’exemple suivant.

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

Appel à BITS à partir de .NET et C# pour BITS