Compartilhar via


Conectando-se ao serviço BITS

Para se conectar ao serviço do sistema BITS, crie uma instância do objeto BackgroundCopyManager, conforme mostrado no exemplo a seguir. O serviço do sistema BITS é o serviço do sistema Windows em execução no computador cliente que implementa o recurso de transferência em 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 testar uma versão específica do BITS, use um identificador de classe simbólica para o BackgroundCopyManager com base na versão que você deseja verificar. Por exemplo, para testar o BITS 10.2, use CLSID_BackgroundCopyManager10_2.

O exemplo a seguir mostra como usar um dos identificadores de classe simbólica.

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

Use os métodos da interface IBackgroundCopyManager para criar trabalhos de transferência, enumerar trabalhos na fila e recuperar trabalhos.

O BITS requer que os proxies de interface do cliente usem o nível IDENTIFY ou IMPERSONATE de representação. Se o aplicativo não chamar CoInitializeSecurity, COM usa IDENTIFY por padrão. O BITS falhará com E_ACCESSDENIED se o nível de representação correto não estiver definido. Se você fornecer uma biblioteca que exercite as interfaces BITS e um aplicativo que chame sua biblioteca definir o nível de representação abaixo de IDENTIFY, será necessário chamar CoSetProxyBlanket para definir o nível de representação correto para cada interface BITS chamada.

Antes que o aplicativo saia, solte sua cópia do ponteiro de interface IBackgroundCopyManager , conforme mostrado no exemplo a seguir.

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

Chamando o BITS do .NET e do C# para BITS