Ansluta till BITS-tjänsten
Om du vill ansluta till BITS-systemtjänsten skapar du en instans av BackgroundCopyManager-objektet enligt följande exempel. BITS-systemtjänsten är Windows-systemtjänsten som körs på klientdatorn som implementerar funktionen för bakgrundsöverföring.
#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.
}
}
Om du vill testa för en specifik version av BITS använder du en symbolisk klassidentifierare för BackgroundCopyManager baserat på den version som du vill kontrollera. Om du till exempel vill testa för BITS 10.2 använder du CLSID_BackgroundCopyManager10_2.
I följande exempel visas hur du använder en av de symboliska klassidentifierarna.
hr = CoCreateInstance(CLSID_BackgroundCopyManager5_0, NULL,
CLSCTX_LOCAL_SERVER,
IID_IBackgroundCopyManager,
(void**) &g_pbcm);
if (SUCCEEDED(hr))
{
//BITS 5.0 is installed.
}
Använd metoderna i IBackgroundCopyManager--gränssnittet för att skapa överföringsjobb, räkna upp jobb i kön och hämta jobb.
BITS kräver att klientens gränssnittsproxy använder antingen IDENTIFY- eller IMPERSONATE-nivån av imitation. Om programmet inte anropar CoInitializeSecurityanvänder COM IDENTIFY som standard. BITS misslyckas med E_ACCESSDENIED om rätt personifieringsnivå inte har angetts. Om du tillhandahåller ett bibliotek som använder BITS-gränssnitten och ett program som anropar biblioteket anger personifieringsnivån under IDENTIFIERA, måste du anropa CoSetProxyBlanket för att ange rätt personifieringsnivå för varje BITS-gränssnitt som du anropar.
Innan programmet avslutas, frisläpper du din kopia av gränssnittspekaren IBackgroundCopyManager, som du ser i följande exempel.
if (g_pbcm)
{
g_pbcm->Release();
g_pbcm = NULL;
}
CoUninitialize();
Relaterade ämnen
-
Anropa BITS från .NET och C# för BITS