Connexion au service BITS
Pour vous connecter au service du système BITS, créez une instance de l’objet BackgroundCopyManager comme indiqué dans l’exemple suivant. le service système BITS est le service système Windows s’exécutant 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 vérifier. Par exemple, pour tester BITS 10,2, utilisez CLSID _ BackgroundCopyManager10 _ 2.
L’exemple suivant montre comment utiliser l’un des identificateurs de classe symbolique.
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 tâches de transfert, énumérer des travaux dans la file d’attente et récupérer des travaux.
BITS requiert que les proxies d’interface du client utilisent le niveau d’identité ou d’emprunt d’identité. Si l’application n’appelle pas CoInitializeSecurity, com utilise l’identification 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é ci-dessous, vous devrez appeler CoSetProxyBlanket pour définir le niveau d’emprunt d’identité approprié pour chaque interface bits que vous appelez.
Avant de quitter votre application, libérez votre copie du pointeur d’interface IBackgroundCopyManager , comme indiqué dans l’exemple suivant.
if (g_pbcm)
{
g_pbcm->Release();
g_pbcm = NULL;
}
CoUninitialize();
Rubriques connexes
-
Appel de bits à partir de .net et C# pour bits