다음을 통해 공유


BITS 서비스에 연결

BITS 시스템 서비스에 연결하려면 다음 예제와 같이 BackgroundCopyManager 개체의 instance 만듭니다. BITS 시스템 서비스는 백그라운드 전송 기능을 구현하는 클라이언트 컴퓨터에서 실행되는 Windows 시스템 서비스입니다.

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

특정 버전의 BITS를 테스트하려면 검사 버전에 따라 BackgroundCopyManager에 대한 기호 클래스 식별자를 사용합니다. 예를 들어 BITS 10.2를 테스트하려면 CLSID_BackgroundCopyManager10_2 사용합니다.

다음 예제에서는 기호 클래스 식별자 중 하나를 사용하는 방법을 보여줍니다.

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

IBackgroundCopyManager 인터페이스의 메서드를 사용하여 전송 작업을 만들고, 큐에서 작업을 열거하고, 작업을 검색합니다.

BITS를 사용하려면 클라이언트의 인터페이스 프록시가 IDENTIFY 또는 IMPERSONATE 수준의 가장을 사용해야 합니다. 애플리케이션이 CoInitializeSecurity를 호출하지 않는 경우 COM은 기본적으로 IDENTIFY를 사용합니다. 올바른 가장 수준이 설정되지 않은 경우 BITS가 E_ACCESSDENIED 실패합니다. BITS 인터페이스를 연습하는 라이브러리를 제공하고 라이브러리를 호출하는 애플리케이션이 IDENTIFY 아래의 가장 수준을 설정하는 경우 CoSetProxyBlanket 을 호출하여 호출하는 각 BITS 인터페이스에 대해 올바른 가장 수준을 설정해야 합니다.

애플리케이션이 종료되기 전에 다음 예제와 같이 IBackgroundCopyManager 인터페이스 포인터의 복사본을 해제합니다.

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

BITS에 대해 .NET 및 C#에서 BITS로 호출