/*** Autogenerated by WIDL 1.3.20 from bits.idl - Do not edit ***/

#include <rpc.h>
#include <rpcndr.h>

#ifndef __WIDL_BITS_H
#define __WIDL_BITS_H

/* Forward declarations */

#ifndef __IBackgroundCopyFile_FWD_DEFINED__
#define __IBackgroundCopyFile_FWD_DEFINED__
typedef interface IBackgroundCopyFile IBackgroundCopyFile;
#endif

#ifndef __IEnumBackgroundCopyFiles_FWD_DEFINED__
#define __IEnumBackgroundCopyFiles_FWD_DEFINED__
typedef interface IEnumBackgroundCopyFiles IEnumBackgroundCopyFiles;
#endif

#ifndef __IBackgroundCopyError_FWD_DEFINED__
#define __IBackgroundCopyError_FWD_DEFINED__
typedef interface IBackgroundCopyError IBackgroundCopyError;
#endif

#ifndef __IBackgroundCopyJob_FWD_DEFINED__
#define __IBackgroundCopyJob_FWD_DEFINED__
typedef interface IBackgroundCopyJob IBackgroundCopyJob;
#endif

#ifndef __IEnumBackgroundCopyJobs_FWD_DEFINED__
#define __IEnumBackgroundCopyJobs_FWD_DEFINED__
typedef interface IEnumBackgroundCopyJobs IEnumBackgroundCopyJobs;
#endif

#ifndef __IBackgroundCopyCallback_FWD_DEFINED__
#define __IBackgroundCopyCallback_FWD_DEFINED__
typedef interface IBackgroundCopyCallback IBackgroundCopyCallback;
#endif

#ifndef __IBackgroundCopyManager_FWD_DEFINED__
#define __IBackgroundCopyManager_FWD_DEFINED__
typedef interface IBackgroundCopyManager IBackgroundCopyManager;
#endif

#ifndef __BackgroundCopyManager_FWD_DEFINED__
#define __BackgroundCopyManager_FWD_DEFINED__
typedef struct BackgroundCopyManager BackgroundCopyManager;
#endif /* defined __BackgroundCopyManager_FWD_DEFINED__ */

/* Headers for imported files */

#include <unknwn.h>

#ifdef __cplusplus
extern "C" {
#endif

#include "bitsmsg.h"
#define BG_SIZE_UNKNOWN (UINT64)(-1)
#define BG_NOTIFY_JOB_TRANSFERRED 0x0001
#define BG_NOTIFY_JOB_ERROR 0x0002
#define BG_NOTIFY_DISABLE 0x0004
#define BG_NOTIFY_JOB_MODIFICATION 0x0008
#ifdef WINE_NO_UNICODE_MACROS
#undef EnumJobs
#undef GetJob
#endif
/*****************************************************************************
 * IBackgroundCopyFile interface
 */
#ifndef __IBackgroundCopyFile_INTERFACE_DEFINED__
#define __IBackgroundCopyFile_INTERFACE_DEFINED__

typedef struct _BG_FILE_PROGRESS {
    UINT64 BytesTotal;
    UINT64 BytesTransferred;
    BOOL Completed;
} BG_FILE_PROGRESS;
DEFINE_GUID(IID_IBackgroundCopyFile, 0x01b7bd23, 0xfb88, 0x4a77, 0x84,0x90, 0x58,0x91,0xd3,0xe4,0x65,0x3a);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IBackgroundCopyFile : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetRemoteName(
        LPWSTR *pVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetLocalName(
        LPWSTR *pVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetProgress(
        BG_FILE_PROGRESS *pVal) = 0;

};
#else
typedef struct IBackgroundCopyFileVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBackgroundCopyFile* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBackgroundCopyFile* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBackgroundCopyFile* This);

    /*** IBackgroundCopyFile methods ***/
    HRESULT (STDMETHODCALLTYPE *GetRemoteName)(
        IBackgroundCopyFile* This,
        LPWSTR *pVal);

    HRESULT (STDMETHODCALLTYPE *GetLocalName)(
        IBackgroundCopyFile* This,
        LPWSTR *pVal);

    HRESULT (STDMETHODCALLTYPE *GetProgress)(
        IBackgroundCopyFile* This,
        BG_FILE_PROGRESS *pVal);

    END_INTERFACE
} IBackgroundCopyFileVtbl;
interface IBackgroundCopyFile {
    CONST_VTBL IBackgroundCopyFileVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IBackgroundCopyFile_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyFile_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyFile_Release(This) (This)->lpVtbl->Release(This)
/*** IBackgroundCopyFile methods ***/
#define IBackgroundCopyFile_GetRemoteName(This,pVal) (This)->lpVtbl->GetRemoteName(This,pVal)
#define IBackgroundCopyFile_GetLocalName(This,pVal) (This)->lpVtbl->GetLocalName(This,pVal)
#define IBackgroundCopyFile_GetProgress(This,pVal) (This)->lpVtbl->GetProgress(This,pVal)
#endif

#endif

HRESULT STDMETHODCALLTYPE IBackgroundCopyFile_GetRemoteName_Proxy(
    IBackgroundCopyFile* This,
    LPWSTR *pVal);
void __RPC_STUB IBackgroundCopyFile_GetRemoteName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyFile_GetLocalName_Proxy(
    IBackgroundCopyFile* This,
    LPWSTR *pVal);
void __RPC_STUB IBackgroundCopyFile_GetLocalName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyFile_GetProgress_Proxy(
    IBackgroundCopyFile* This,
    BG_FILE_PROGRESS *pVal);
void __RPC_STUB IBackgroundCopyFile_GetProgress_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IBackgroundCopyFile_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IEnumBackgroundCopyFiles interface
 */
#ifndef __IEnumBackgroundCopyFiles_INTERFACE_DEFINED__
#define __IEnumBackgroundCopyFiles_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumBackgroundCopyFiles, 0xca51e165, 0xc365, 0x424c, 0x8d,0x41, 0x24,0xaa,0xa4,0xff,0x3c,0x40);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IEnumBackgroundCopyFiles : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        IBackgroundCopyFile **rgelt,
        ULONG *pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        IEnumBackgroundCopyFiles **ppenum) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCount(
        ULONG *puCount) = 0;

};
#else
typedef struct IEnumBackgroundCopyFilesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IEnumBackgroundCopyFiles* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IEnumBackgroundCopyFiles* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IEnumBackgroundCopyFiles* This);

    /*** IEnumBackgroundCopyFiles methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumBackgroundCopyFiles* This,
        ULONG celt,
        IBackgroundCopyFile **rgelt,
        ULONG *pceltFetched);

    HRESULT (STDMETHODCALLTYPE *Skip)(
        IEnumBackgroundCopyFiles* This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        IEnumBackgroundCopyFiles* This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IEnumBackgroundCopyFiles* This,
        IEnumBackgroundCopyFiles **ppenum);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        IEnumBackgroundCopyFiles* This,
        ULONG *puCount);

    END_INTERFACE
} IEnumBackgroundCopyFilesVtbl;
interface IEnumBackgroundCopyFiles {
    CONST_VTBL IEnumBackgroundCopyFilesVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IEnumBackgroundCopyFiles_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumBackgroundCopyFiles_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumBackgroundCopyFiles_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumBackgroundCopyFiles methods ***/
#define IEnumBackgroundCopyFiles_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IEnumBackgroundCopyFiles_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumBackgroundCopyFiles_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumBackgroundCopyFiles_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
#define IEnumBackgroundCopyFiles_GetCount(This,puCount) (This)->lpVtbl->GetCount(This,puCount)
#endif

#endif

HRESULT STDMETHODCALLTYPE IEnumBackgroundCopyFiles_Next_Proxy(
    IEnumBackgroundCopyFiles* This,
    ULONG celt,
    IBackgroundCopyFile **rgelt,
    ULONG *pceltFetched);
void __RPC_STUB IEnumBackgroundCopyFiles_Next_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumBackgroundCopyFiles_Skip_Proxy(
    IEnumBackgroundCopyFiles* This,
    ULONG celt);
void __RPC_STUB IEnumBackgroundCopyFiles_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumBackgroundCopyFiles_Reset_Proxy(
    IEnumBackgroundCopyFiles* This);
void __RPC_STUB IEnumBackgroundCopyFiles_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumBackgroundCopyFiles_Clone_Proxy(
    IEnumBackgroundCopyFiles* This,
    IEnumBackgroundCopyFiles **ppenum);
void __RPC_STUB IEnumBackgroundCopyFiles_Clone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumBackgroundCopyFiles_GetCount_Proxy(
    IEnumBackgroundCopyFiles* This,
    ULONG *puCount);
void __RPC_STUB IEnumBackgroundCopyFiles_GetCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IEnumBackgroundCopyFiles_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBackgroundCopyError interface
 */
#ifndef __IBackgroundCopyError_INTERFACE_DEFINED__
#define __IBackgroundCopyError_INTERFACE_DEFINED__

typedef enum __WIDL_bits_generated_name_00000000 {
    BG_ERROR_CONTEXT_NONE = 0,
    BG_ERROR_CONTEXT_UNKNOWN = 1,
    BG_ERROR_CONTEXT_GENERAL_QUEUE_MANAGER = 2,
    BG_ERROR_CONTEXT_QUEUE_MANAGER_NOTIFICATION = 3,
    BG_ERROR_CONTEXT_LOCAL_FILE = 4,
    BG_ERROR_CONTEXT_REMOTE_FILE = 5,
    BG_ERROR_CONTEXT_GENERAL_TRANSPORT = 6,
    BG_ERROR_CONTEXT_REMOTE_APPLICATION = 7
} BG_ERROR_CONTEXT;
DEFINE_GUID(IID_IBackgroundCopyError, 0x19c613a0, 0xfcb8, 0x4f28, 0x81,0xae, 0x89,0x7c,0x3d,0x07,0x8f,0x81);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IBackgroundCopyError : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetError(
        BG_ERROR_CONTEXT *pContext,
        HRESULT *pCode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFile(
        IBackgroundCopyFile **pVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetErrorDescription(
        DWORD LanguageId,
        LPWSTR *pErrorDescription) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetErrorContextDescription(
        DWORD LanguageId,
        LPWSTR *pContextDescription) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetProtocol(
        LPWSTR *pProtocol) = 0;

};
#else
typedef struct IBackgroundCopyErrorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBackgroundCopyError* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBackgroundCopyError* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBackgroundCopyError* This);

    /*** IBackgroundCopyError methods ***/
    HRESULT (STDMETHODCALLTYPE *GetError)(
        IBackgroundCopyError* This,
        BG_ERROR_CONTEXT *pContext,
        HRESULT *pCode);

    HRESULT (STDMETHODCALLTYPE *GetFile)(
        IBackgroundCopyError* This,
        IBackgroundCopyFile **pVal);

    HRESULT (STDMETHODCALLTYPE *GetErrorDescription)(
        IBackgroundCopyError* This,
        DWORD LanguageId,
        LPWSTR *pErrorDescription);

    HRESULT (STDMETHODCALLTYPE *GetErrorContextDescription)(
        IBackgroundCopyError* This,
        DWORD LanguageId,
        LPWSTR *pContextDescription);

    HRESULT (STDMETHODCALLTYPE *GetProtocol)(
        IBackgroundCopyError* This,
        LPWSTR *pProtocol);

    END_INTERFACE
} IBackgroundCopyErrorVtbl;
interface IBackgroundCopyError {
    CONST_VTBL IBackgroundCopyErrorVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IBackgroundCopyError_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyError_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyError_Release(This) (This)->lpVtbl->Release(This)
/*** IBackgroundCopyError methods ***/
#define IBackgroundCopyError_GetError(This,pContext,pCode) (This)->lpVtbl->GetError(This,pContext,pCode)
#define IBackgroundCopyError_GetFile(This,pVal) (This)->lpVtbl->GetFile(This,pVal)
#define IBackgroundCopyError_GetErrorDescription(This,LanguageId,pErrorDescription) (This)->lpVtbl->GetErrorDescription(This,LanguageId,pErrorDescription)
#define IBackgroundCopyError_GetErrorContextDescription(This,LanguageId,pContextDescription) (This)->lpVtbl->GetErrorContextDescription(This,LanguageId,pContextDescription)
#define IBackgroundCopyError_GetProtocol(This,pProtocol) (This)->lpVtbl->GetProtocol(This,pProtocol)
#endif

#endif

HRESULT STDMETHODCALLTYPE IBackgroundCopyError_GetError_Proxy(
    IBackgroundCopyError* This,
    BG_ERROR_CONTEXT *pContext,
    HRESULT *pCode);
void __RPC_STUB IBackgroundCopyError_GetError_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyError_GetFile_Proxy(
    IBackgroundCopyError* This,
    IBackgroundCopyFile **pVal);
void __RPC_STUB IBackgroundCopyError_GetFile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyError_GetErrorDescription_Proxy(
    IBackgroundCopyError* This,
    DWORD LanguageId,
    LPWSTR *pErrorDescription);
void __RPC_STUB IBackgroundCopyError_GetErrorDescription_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyError_GetErrorContextDescription_Proxy(
    IBackgroundCopyError* This,
    DWORD LanguageId,
    LPWSTR *pContextDescription);
void __RPC_STUB IBackgroundCopyError_GetErrorContextDescription_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyError_GetProtocol_Proxy(
    IBackgroundCopyError* This,
    LPWSTR *pProtocol);
void __RPC_STUB IBackgroundCopyError_GetProtocol_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IBackgroundCopyError_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBackgroundCopyJob interface
 */
#ifndef __IBackgroundCopyJob_INTERFACE_DEFINED__
#define __IBackgroundCopyJob_INTERFACE_DEFINED__

typedef struct _BG_FILE_INFO {
    LPWSTR RemoteName;
    LPWSTR LocalName;
} BG_FILE_INFO;
typedef struct _BG_JOB_PROGRESS {
    UINT64 BytesTotal;
    UINT64 BytesTransferred;
    ULONG FilesTotal;
    ULONG FilesTransferred;
} BG_JOB_PROGRESS;
typedef struct _BG_JOB_TIMES {
    FILETIME CreationTime;
    FILETIME ModificationTime;
    FILETIME TransferCompletionTime;
} BG_JOB_TIMES;
typedef enum __WIDL_bits_generated_name_00000001 {
    BG_JOB_PRIORITY_FOREGROUND = 0,
    BG_JOB_PRIORITY_HIGH = 1,
    BG_JOB_PRIORITY_NORMAL = 2,
    BG_JOB_PRIORITY_LOW = 3
} BG_JOB_PRIORITY;
typedef enum __WIDL_bits_generated_name_00000002 {
    BG_JOB_STATE_QUEUED = 0,
    BG_JOB_STATE_CONNECTING = 1,
    BG_JOB_STATE_TRANSFERRING = 2,
    BG_JOB_STATE_SUSPENDED = 3,
    BG_JOB_STATE_ERROR = 4,
    BG_JOB_STATE_TRANSIENT_ERROR = 5,
    BG_JOB_STATE_TRANSFERRED = 6,
    BG_JOB_STATE_ACKNOWLEDGED = 7,
    BG_JOB_STATE_CANCELLED = 8
} BG_JOB_STATE;
typedef enum __WIDL_bits_generated_name_00000003 {
    BG_JOB_TYPE_DOWNLOAD = 0,
    BG_JOB_TYPE_UPLOAD = 1,
    BG_JOB_TYPE_UPLOAD_REPLY = 2
} BG_JOB_TYPE;
typedef enum __WIDL_bits_generated_name_00000004 {
    BG_JOB_PROXY_USAGE_PRECONFIG = 0,
    BG_JOB_PROXY_USAGE_NO_PROXY = 1,
    BG_JOB_PROXY_USAGE_OVERRIDE = 2,
    BG_JOB_PROXY_USAGE_AUTODETECT = 3
} BG_JOB_PROXY_USAGE;
DEFINE_GUID(IID_IBackgroundCopyJob, 0x37668d37, 0x507e, 0x4160, 0x93,0x16, 0x26,0x30,0x6d,0x15,0x0b,0x12);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IBackgroundCopyJob : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddFileSet(
        ULONG cFileCount,
        BG_FILE_INFO *pFileSet) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddFile(
        LPCWSTR RemoteUrl,
        LPCWSTR LocalName) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumFiles(
        IEnumBackgroundCopyFiles **pEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE Suspend(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Resume(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Cancel(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Complete(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetId(
        GUID *pVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetType(
        BG_JOB_TYPE *pVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetProgress(
        BG_JOB_PROGRESS *pVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTimes(
        BG_JOB_TIMES *pVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetState(
        BG_JOB_STATE *pVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetError(
        IBackgroundCopyError **ppError) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOwner(
        LPWSTR *pVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDisplayName(
        LPCWSTR Val) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayName(
        LPWSTR *pVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDescription(
        LPCWSTR Val) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDescription(
        LPWSTR *pVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPriority(
        BG_JOB_PRIORITY Val) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPriority(
        BG_JOB_PRIORITY *pVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNotifyFlags(
        ULONG Val) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNotifyFlags(
        ULONG *pVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNotifyInterface(
        IUnknown *Val) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNotifyInterface(
        IUnknown **pVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMinimumRetryDelay(
        ULONG Seconds) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMinimumRetryDelay(
        ULONG *Seconds) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNoProgressTimeout(
        ULONG Seconds) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNoProgressTimeout(
        ULONG *Seconds) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetErrorCount(
        ULONG *Errors) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetProxySettings(
        BG_JOB_PROXY_USAGE ProxyUsage,
        const WCHAR *ProxyList,
        const WCHAR *ProxyBypassList) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetProxySettings(
        BG_JOB_PROXY_USAGE *pProxyUsage,
        LPWSTR *pProxyList,
        LPWSTR *pProxyBypassList) = 0;

    virtual HRESULT STDMETHODCALLTYPE TakeOwnership(
        ) = 0;

};
#else
typedef struct IBackgroundCopyJobVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBackgroundCopyJob* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBackgroundCopyJob* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBackgroundCopyJob* This);

    /*** IBackgroundCopyJob methods ***/
    HRESULT (STDMETHODCALLTYPE *AddFileSet)(
        IBackgroundCopyJob* This,
        ULONG cFileCount,
        BG_FILE_INFO *pFileSet);

    HRESULT (STDMETHODCALLTYPE *AddFile)(
        IBackgroundCopyJob* This,
        LPCWSTR RemoteUrl,
        LPCWSTR LocalName);

    HRESULT (STDMETHODCALLTYPE *EnumFiles)(
        IBackgroundCopyJob* This,
        IEnumBackgroundCopyFiles **pEnum);

    HRESULT (STDMETHODCALLTYPE *Suspend)(
        IBackgroundCopyJob* This);

    HRESULT (STDMETHODCALLTYPE *Resume)(
        IBackgroundCopyJob* This);

    HRESULT (STDMETHODCALLTYPE *Cancel)(
        IBackgroundCopyJob* This);

    HRESULT (STDMETHODCALLTYPE *Complete)(
        IBackgroundCopyJob* This);

    HRESULT (STDMETHODCALLTYPE *GetId)(
        IBackgroundCopyJob* This,
        GUID *pVal);

    HRESULT (STDMETHODCALLTYPE *GetType)(
        IBackgroundCopyJob* This,
        BG_JOB_TYPE *pVal);

    HRESULT (STDMETHODCALLTYPE *GetProgress)(
        IBackgroundCopyJob* This,
        BG_JOB_PROGRESS *pVal);

    HRESULT (STDMETHODCALLTYPE *GetTimes)(
        IBackgroundCopyJob* This,
        BG_JOB_TIMES *pVal);

    HRESULT (STDMETHODCALLTYPE *GetState)(
        IBackgroundCopyJob* This,
        BG_JOB_STATE *pVal);

    HRESULT (STDMETHODCALLTYPE *GetError)(
        IBackgroundCopyJob* This,
        IBackgroundCopyError **ppError);

    HRESULT (STDMETHODCALLTYPE *GetOwner)(
        IBackgroundCopyJob* This,
        LPWSTR *pVal);

    HRESULT (STDMETHODCALLTYPE *SetDisplayName)(
        IBackgroundCopyJob* This,
        LPCWSTR Val);

    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
        IBackgroundCopyJob* This,
        LPWSTR *pVal);

    HRESULT (STDMETHODCALLTYPE *SetDescription)(
        IBackgroundCopyJob* This,
        LPCWSTR Val);

    HRESULT (STDMETHODCALLTYPE *GetDescription)(
        IBackgroundCopyJob* This,
        LPWSTR *pVal);

    HRESULT (STDMETHODCALLTYPE *SetPriority)(
        IBackgroundCopyJob* This,
        BG_JOB_PRIORITY Val);

    HRESULT (STDMETHODCALLTYPE *GetPriority)(
        IBackgroundCopyJob* This,
        BG_JOB_PRIORITY *pVal);

    HRESULT (STDMETHODCALLTYPE *SetNotifyFlags)(
        IBackgroundCopyJob* This,
        ULONG Val);

    HRESULT (STDMETHODCALLTYPE *GetNotifyFlags)(
        IBackgroundCopyJob* This,
        ULONG *pVal);

    HRESULT (STDMETHODCALLTYPE *SetNotifyInterface)(
        IBackgroundCopyJob* This,
        IUnknown *Val);

    HRESULT (STDMETHODCALLTYPE *GetNotifyInterface)(
        IBackgroundCopyJob* This,
        IUnknown **pVal);

    HRESULT (STDMETHODCALLTYPE *SetMinimumRetryDelay)(
        IBackgroundCopyJob* This,
        ULONG Seconds);

    HRESULT (STDMETHODCALLTYPE *GetMinimumRetryDelay)(
        IBackgroundCopyJob* This,
        ULONG *Seconds);

    HRESULT (STDMETHODCALLTYPE *SetNoProgressTimeout)(
        IBackgroundCopyJob* This,
        ULONG Seconds);

    HRESULT (STDMETHODCALLTYPE *GetNoProgressTimeout)(
        IBackgroundCopyJob* This,
        ULONG *Seconds);

    HRESULT (STDMETHODCALLTYPE *GetErrorCount)(
        IBackgroundCopyJob* This,
        ULONG *Errors);

    HRESULT (STDMETHODCALLTYPE *SetProxySettings)(
        IBackgroundCopyJob* This,
        BG_JOB_PROXY_USAGE ProxyUsage,
        const WCHAR *ProxyList,
        const WCHAR *ProxyBypassList);

    HRESULT (STDMETHODCALLTYPE *GetProxySettings)(
        IBackgroundCopyJob* This,
        BG_JOB_PROXY_USAGE *pProxyUsage,
        LPWSTR *pProxyList,
        LPWSTR *pProxyBypassList);

    HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
        IBackgroundCopyJob* This);

    END_INTERFACE
} IBackgroundCopyJobVtbl;
interface IBackgroundCopyJob {
    CONST_VTBL IBackgroundCopyJobVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IBackgroundCopyJob_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyJob_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyJob_Release(This) (This)->lpVtbl->Release(This)
/*** IBackgroundCopyJob methods ***/
#define IBackgroundCopyJob_AddFileSet(This,cFileCount,pFileSet) (This)->lpVtbl->AddFileSet(This,cFileCount,pFileSet)
#define IBackgroundCopyJob_AddFile(This,RemoteUrl,LocalName) (This)->lpVtbl->AddFile(This,RemoteUrl,LocalName)
#define IBackgroundCopyJob_EnumFiles(This,pEnum) (This)->lpVtbl->EnumFiles(This,pEnum)
#define IBackgroundCopyJob_Suspend(This) (This)->lpVtbl->Suspend(This)
#define IBackgroundCopyJob_Resume(This) (This)->lpVtbl->Resume(This)
#define IBackgroundCopyJob_Cancel(This) (This)->lpVtbl->Cancel(This)
#define IBackgroundCopyJob_Complete(This) (This)->lpVtbl->Complete(This)
#define IBackgroundCopyJob_GetId(This,pVal) (This)->lpVtbl->GetId(This,pVal)
#define IBackgroundCopyJob_GetType(This,pVal) (This)->lpVtbl->GetType(This,pVal)
#define IBackgroundCopyJob_GetProgress(This,pVal) (This)->lpVtbl->GetProgress(This,pVal)
#define IBackgroundCopyJob_GetTimes(This,pVal) (This)->lpVtbl->GetTimes(This,pVal)
#define IBackgroundCopyJob_GetState(This,pVal) (This)->lpVtbl->GetState(This,pVal)
#define IBackgroundCopyJob_GetError(This,ppError) (This)->lpVtbl->GetError(This,ppError)
#define IBackgroundCopyJob_GetOwner(This,pVal) (This)->lpVtbl->GetOwner(This,pVal)
#define IBackgroundCopyJob_SetDisplayName(This,Val) (This)->lpVtbl->SetDisplayName(This,Val)
#define IBackgroundCopyJob_GetDisplayName(This,pVal) (This)->lpVtbl->GetDisplayName(This,pVal)
#define IBackgroundCopyJob_SetDescription(This,Val) (This)->lpVtbl->SetDescription(This,Val)
#define IBackgroundCopyJob_GetDescription(This,pVal) (This)->lpVtbl->GetDescription(This,pVal)
#define IBackgroundCopyJob_SetPriority(This,Val) (This)->lpVtbl->SetPriority(This,Val)
#define IBackgroundCopyJob_GetPriority(This,pVal) (This)->lpVtbl->GetPriority(This,pVal)
#define IBackgroundCopyJob_SetNotifyFlags(This,Val) (This)->lpVtbl->SetNotifyFlags(This,Val)
#define IBackgroundCopyJob_GetNotifyFlags(This,pVal) (This)->lpVtbl->GetNotifyFlags(This,pVal)
#define IBackgroundCopyJob_SetNotifyInterface(This,Val) (This)->lpVtbl->SetNotifyInterface(This,Val)
#define IBackgroundCopyJob_GetNotifyInterface(This,pVal) (This)->lpVtbl->GetNotifyInterface(This,pVal)
#define IBackgroundCopyJob_SetMinimumRetryDelay(This,Seconds) (This)->lpVtbl->SetMinimumRetryDelay(This,Seconds)
#define IBackgroundCopyJob_GetMinimumRetryDelay(This,Seconds) (This)->lpVtbl->GetMinimumRetryDelay(This,Seconds)
#define IBackgroundCopyJob_SetNoProgressTimeout(This,Seconds) (This)->lpVtbl->SetNoProgressTimeout(This,Seconds)
#define IBackgroundCopyJob_GetNoProgressTimeout(This,Seconds) (This)->lpVtbl->GetNoProgressTimeout(This,Seconds)
#define IBackgroundCopyJob_GetErrorCount(This,Errors) (This)->lpVtbl->GetErrorCount(This,Errors)
#define IBackgroundCopyJob_SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList) (This)->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList)
#define IBackgroundCopyJob_GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList) (This)->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList)
#define IBackgroundCopyJob_TakeOwnership(This) (This)->lpVtbl->TakeOwnership(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_AddFileSet_Proxy(
    IBackgroundCopyJob* This,
    ULONG cFileCount,
    BG_FILE_INFO *pFileSet);
void __RPC_STUB IBackgroundCopyJob_AddFileSet_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_AddFile_Proxy(
    IBackgroundCopyJob* This,
    LPCWSTR RemoteUrl,
    LPCWSTR LocalName);
void __RPC_STUB IBackgroundCopyJob_AddFile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_EnumFiles_Proxy(
    IBackgroundCopyJob* This,
    IEnumBackgroundCopyFiles **pEnum);
void __RPC_STUB IBackgroundCopyJob_EnumFiles_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_Suspend_Proxy(
    IBackgroundCopyJob* This);
void __RPC_STUB IBackgroundCopyJob_Suspend_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_Resume_Proxy(
    IBackgroundCopyJob* This);
void __RPC_STUB IBackgroundCopyJob_Resume_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_Cancel_Proxy(
    IBackgroundCopyJob* This);
void __RPC_STUB IBackgroundCopyJob_Cancel_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_Complete_Proxy(
    IBackgroundCopyJob* This);
void __RPC_STUB IBackgroundCopyJob_Complete_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_GetId_Proxy(
    IBackgroundCopyJob* This,
    GUID *pVal);
void __RPC_STUB IBackgroundCopyJob_GetId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_GetType_Proxy(
    IBackgroundCopyJob* This,
    BG_JOB_TYPE *pVal);
void __RPC_STUB IBackgroundCopyJob_GetType_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_GetProgress_Proxy(
    IBackgroundCopyJob* This,
    BG_JOB_PROGRESS *pVal);
void __RPC_STUB IBackgroundCopyJob_GetProgress_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_GetTimes_Proxy(
    IBackgroundCopyJob* This,
    BG_JOB_TIMES *pVal);
void __RPC_STUB IBackgroundCopyJob_GetTimes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_GetState_Proxy(
    IBackgroundCopyJob* This,
    BG_JOB_STATE *pVal);
void __RPC_STUB IBackgroundCopyJob_GetState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_GetError_Proxy(
    IBackgroundCopyJob* This,
    IBackgroundCopyError **ppError);
void __RPC_STUB IBackgroundCopyJob_GetError_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_GetOwner_Proxy(
    IBackgroundCopyJob* This,
    LPWSTR *pVal);
void __RPC_STUB IBackgroundCopyJob_GetOwner_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_SetDisplayName_Proxy(
    IBackgroundCopyJob* This,
    LPCWSTR Val);
void __RPC_STUB IBackgroundCopyJob_SetDisplayName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_GetDisplayName_Proxy(
    IBackgroundCopyJob* This,
    LPWSTR *pVal);
void __RPC_STUB IBackgroundCopyJob_GetDisplayName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_SetDescription_Proxy(
    IBackgroundCopyJob* This,
    LPCWSTR Val);
void __RPC_STUB IBackgroundCopyJob_SetDescription_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_GetDescription_Proxy(
    IBackgroundCopyJob* This,
    LPWSTR *pVal);
void __RPC_STUB IBackgroundCopyJob_GetDescription_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_SetPriority_Proxy(
    IBackgroundCopyJob* This,
    BG_JOB_PRIORITY Val);
void __RPC_STUB IBackgroundCopyJob_SetPriority_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_GetPriority_Proxy(
    IBackgroundCopyJob* This,
    BG_JOB_PRIORITY *pVal);
void __RPC_STUB IBackgroundCopyJob_GetPriority_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_SetNotifyFlags_Proxy(
    IBackgroundCopyJob* This,
    ULONG Val);
void __RPC_STUB IBackgroundCopyJob_SetNotifyFlags_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_GetNotifyFlags_Proxy(
    IBackgroundCopyJob* This,
    ULONG *pVal);
void __RPC_STUB IBackgroundCopyJob_GetNotifyFlags_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_SetNotifyInterface_Proxy(
    IBackgroundCopyJob* This,
    IUnknown *Val);
void __RPC_STUB IBackgroundCopyJob_SetNotifyInterface_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_GetNotifyInterface_Proxy(
    IBackgroundCopyJob* This,
    IUnknown **pVal);
void __RPC_STUB IBackgroundCopyJob_GetNotifyInterface_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_SetMinimumRetryDelay_Proxy(
    IBackgroundCopyJob* This,
    ULONG Seconds);
void __RPC_STUB IBackgroundCopyJob_SetMinimumRetryDelay_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_GetMinimumRetryDelay_Proxy(
    IBackgroundCopyJob* This,
    ULONG *Seconds);
void __RPC_STUB IBackgroundCopyJob_GetMinimumRetryDelay_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_SetNoProgressTimeout_Proxy(
    IBackgroundCopyJob* This,
    ULONG Seconds);
void __RPC_STUB IBackgroundCopyJob_SetNoProgressTimeout_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_GetNoProgressTimeout_Proxy(
    IBackgroundCopyJob* This,
    ULONG *Seconds);
void __RPC_STUB IBackgroundCopyJob_GetNoProgressTimeout_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_GetErrorCount_Proxy(
    IBackgroundCopyJob* This,
    ULONG *Errors);
void __RPC_STUB IBackgroundCopyJob_GetErrorCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_SetProxySettings_Proxy(
    IBackgroundCopyJob* This,
    BG_JOB_PROXY_USAGE ProxyUsage,
    const WCHAR *ProxyList,
    const WCHAR *ProxyBypassList);
void __RPC_STUB IBackgroundCopyJob_SetProxySettings_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_GetProxySettings_Proxy(
    IBackgroundCopyJob* This,
    BG_JOB_PROXY_USAGE *pProxyUsage,
    LPWSTR *pProxyList,
    LPWSTR *pProxyBypassList);
void __RPC_STUB IBackgroundCopyJob_GetProxySettings_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyJob_TakeOwnership_Proxy(
    IBackgroundCopyJob* This);
void __RPC_STUB IBackgroundCopyJob_TakeOwnership_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IBackgroundCopyJob_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IEnumBackgroundCopyJobs interface
 */
#ifndef __IEnumBackgroundCopyJobs_INTERFACE_DEFINED__
#define __IEnumBackgroundCopyJobs_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumBackgroundCopyJobs, 0x1af4f612, 0x3b71, 0x466f, 0x8f,0x58, 0x7b,0x6f,0x73,0xac,0x57,0xad);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IEnumBackgroundCopyJobs : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        IBackgroundCopyJob **rgelt,
        ULONG *pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        IEnumBackgroundCopyJobs **ppenum) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCount(
        ULONG *puCount) = 0;

};
#else
typedef struct IEnumBackgroundCopyJobsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IEnumBackgroundCopyJobs* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IEnumBackgroundCopyJobs* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IEnumBackgroundCopyJobs* This);

    /*** IEnumBackgroundCopyJobs methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumBackgroundCopyJobs* This,
        ULONG celt,
        IBackgroundCopyJob **rgelt,
        ULONG *pceltFetched);

    HRESULT (STDMETHODCALLTYPE *Skip)(
        IEnumBackgroundCopyJobs* This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        IEnumBackgroundCopyJobs* This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IEnumBackgroundCopyJobs* This,
        IEnumBackgroundCopyJobs **ppenum);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        IEnumBackgroundCopyJobs* This,
        ULONG *puCount);

    END_INTERFACE
} IEnumBackgroundCopyJobsVtbl;
interface IEnumBackgroundCopyJobs {
    CONST_VTBL IEnumBackgroundCopyJobsVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IEnumBackgroundCopyJobs_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumBackgroundCopyJobs_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumBackgroundCopyJobs_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumBackgroundCopyJobs methods ***/
#define IEnumBackgroundCopyJobs_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IEnumBackgroundCopyJobs_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumBackgroundCopyJobs_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumBackgroundCopyJobs_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
#define IEnumBackgroundCopyJobs_GetCount(This,puCount) (This)->lpVtbl->GetCount(This,puCount)
#endif

#endif

HRESULT STDMETHODCALLTYPE IEnumBackgroundCopyJobs_Next_Proxy(
    IEnumBackgroundCopyJobs* This,
    ULONG celt,
    IBackgroundCopyJob **rgelt,
    ULONG *pceltFetched);
void __RPC_STUB IEnumBackgroundCopyJobs_Next_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumBackgroundCopyJobs_Skip_Proxy(
    IEnumBackgroundCopyJobs* This,
    ULONG celt);
void __RPC_STUB IEnumBackgroundCopyJobs_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumBackgroundCopyJobs_Reset_Proxy(
    IEnumBackgroundCopyJobs* This);
void __RPC_STUB IEnumBackgroundCopyJobs_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumBackgroundCopyJobs_Clone_Proxy(
    IEnumBackgroundCopyJobs* This,
    IEnumBackgroundCopyJobs **ppenum);
void __RPC_STUB IEnumBackgroundCopyJobs_Clone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumBackgroundCopyJobs_GetCount_Proxy(
    IEnumBackgroundCopyJobs* This,
    ULONG *puCount);
void __RPC_STUB IEnumBackgroundCopyJobs_GetCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IEnumBackgroundCopyJobs_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBackgroundCopyCallback interface
 */
#ifndef __IBackgroundCopyCallback_INTERFACE_DEFINED__
#define __IBackgroundCopyCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBackgroundCopyCallback, 0x97ea99c7, 0x0186, 0x4ad4, 0x8d,0xf9, 0xc5,0xb4,0xe0,0xed,0x6b,0x22);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IBackgroundCopyCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE JobTransferred(
        IBackgroundCopyJob *pJob) = 0;

    virtual HRESULT STDMETHODCALLTYPE JobError(
        IBackgroundCopyJob *pJob,
        IBackgroundCopyError *pError) = 0;

    virtual HRESULT STDMETHODCALLTYPE JobModification(
        IBackgroundCopyJob *pJob,
        DWORD dwReserved) = 0;

};
#else
typedef struct IBackgroundCopyCallbackVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBackgroundCopyCallback* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBackgroundCopyCallback* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBackgroundCopyCallback* This);

    /*** IBackgroundCopyCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *JobTransferred)(
        IBackgroundCopyCallback* This,
        IBackgroundCopyJob *pJob);

    HRESULT (STDMETHODCALLTYPE *JobError)(
        IBackgroundCopyCallback* This,
        IBackgroundCopyJob *pJob,
        IBackgroundCopyError *pError);

    HRESULT (STDMETHODCALLTYPE *JobModification)(
        IBackgroundCopyCallback* This,
        IBackgroundCopyJob *pJob,
        DWORD dwReserved);

    END_INTERFACE
} IBackgroundCopyCallbackVtbl;
interface IBackgroundCopyCallback {
    CONST_VTBL IBackgroundCopyCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IBackgroundCopyCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IBackgroundCopyCallback methods ***/
#define IBackgroundCopyCallback_JobTransferred(This,pJob) (This)->lpVtbl->JobTransferred(This,pJob)
#define IBackgroundCopyCallback_JobError(This,pJob,pError) (This)->lpVtbl->JobError(This,pJob,pError)
#define IBackgroundCopyCallback_JobModification(This,pJob,dwReserved) (This)->lpVtbl->JobModification(This,pJob,dwReserved)
#endif

#endif

HRESULT STDMETHODCALLTYPE IBackgroundCopyCallback_JobTransferred_Proxy(
    IBackgroundCopyCallback* This,
    IBackgroundCopyJob *pJob);
void __RPC_STUB IBackgroundCopyCallback_JobTransferred_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyCallback_JobError_Proxy(
    IBackgroundCopyCallback* This,
    IBackgroundCopyJob *pJob,
    IBackgroundCopyError *pError);
void __RPC_STUB IBackgroundCopyCallback_JobError_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyCallback_JobModification_Proxy(
    IBackgroundCopyCallback* This,
    IBackgroundCopyJob *pJob,
    DWORD dwReserved);
void __RPC_STUB IBackgroundCopyCallback_JobModification_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IBackgroundCopyCallback_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBackgroundCopyManager interface
 */
#ifndef __IBackgroundCopyManager_INTERFACE_DEFINED__
#define __IBackgroundCopyManager_INTERFACE_DEFINED__

#define BG_JOB_ENUM_ALL_USERS 0x0001
DEFINE_GUID(IID_IBackgroundCopyManager, 0x5ce34c0d, 0x0dc9, 0x4c1f, 0x89,0x7c, 0xda,0xa1,0xb7,0x8c,0xee,0x7c);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IBackgroundCopyManager : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateJob(
        LPCWSTR DisplayName,
        BG_JOB_TYPE Type,
        GUID *pJobId,
        IBackgroundCopyJob **ppJob) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetJob(
        REFGUID jobID,
        IBackgroundCopyJob **ppJob) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumJobs(
        DWORD dwFlags,
        IEnumBackgroundCopyJobs **ppEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetErrorDescription(
        HRESULT hResult,
        DWORD LanguageId,
        LPWSTR *pErrorDescription) = 0;

};
#else
typedef struct IBackgroundCopyManagerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBackgroundCopyManager* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBackgroundCopyManager* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBackgroundCopyManager* This);

    /*** IBackgroundCopyManager methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateJob)(
        IBackgroundCopyManager* This,
        LPCWSTR DisplayName,
        BG_JOB_TYPE Type,
        GUID *pJobId,
        IBackgroundCopyJob **ppJob);

    HRESULT (STDMETHODCALLTYPE *GetJob)(
        IBackgroundCopyManager* This,
        REFGUID jobID,
        IBackgroundCopyJob **ppJob);

    HRESULT (STDMETHODCALLTYPE *EnumJobs)(
        IBackgroundCopyManager* This,
        DWORD dwFlags,
        IEnumBackgroundCopyJobs **ppEnum);

    HRESULT (STDMETHODCALLTYPE *GetErrorDescription)(
        IBackgroundCopyManager* This,
        HRESULT hResult,
        DWORD LanguageId,
        LPWSTR *pErrorDescription);

    END_INTERFACE
} IBackgroundCopyManagerVtbl;
interface IBackgroundCopyManager {
    CONST_VTBL IBackgroundCopyManagerVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IBackgroundCopyManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyManager_Release(This) (This)->lpVtbl->Release(This)
/*** IBackgroundCopyManager methods ***/
#define IBackgroundCopyManager_CreateJob(This,DisplayName,Type,pJobId,ppJob) (This)->lpVtbl->CreateJob(This,DisplayName,Type,pJobId,ppJob)
#define IBackgroundCopyManager_GetJob(This,jobID,ppJob) (This)->lpVtbl->GetJob(This,jobID,ppJob)
#define IBackgroundCopyManager_EnumJobs(This,dwFlags,ppEnum) (This)->lpVtbl->EnumJobs(This,dwFlags,ppEnum)
#define IBackgroundCopyManager_GetErrorDescription(This,hResult,LanguageId,pErrorDescription) (This)->lpVtbl->GetErrorDescription(This,hResult,LanguageId,pErrorDescription)
#endif

#endif

HRESULT STDMETHODCALLTYPE IBackgroundCopyManager_CreateJob_Proxy(
    IBackgroundCopyManager* This,
    LPCWSTR DisplayName,
    BG_JOB_TYPE Type,
    GUID *pJobId,
    IBackgroundCopyJob **ppJob);
void __RPC_STUB IBackgroundCopyManager_CreateJob_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyManager_GetJob_Proxy(
    IBackgroundCopyManager* This,
    REFGUID jobID,
    IBackgroundCopyJob **ppJob);
void __RPC_STUB IBackgroundCopyManager_GetJob_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyManager_EnumJobs_Proxy(
    IBackgroundCopyManager* This,
    DWORD dwFlags,
    IEnumBackgroundCopyJobs **ppEnum);
void __RPC_STUB IBackgroundCopyManager_EnumJobs_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IBackgroundCopyManager_GetErrorDescription_Proxy(
    IBackgroundCopyManager* This,
    HRESULT hResult,
    DWORD LanguageId,
    LPWSTR *pErrorDescription);
void __RPC_STUB IBackgroundCopyManager_GetErrorDescription_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IBackgroundCopyManager_INTERFACE_DEFINED__ */


DEFINE_GUID(LIBID_BackgroundCopyManager, 0x1deeb74f, 0x7915, 0x4560, 0xb5,0x58, 0x91,0x8c,0x83,0xf1,0x76,0xa6);

/*****************************************************************************
 * BackgroundCopyManager coclass
 */

DEFINE_GUID(CLSID_BackgroundCopyManager, 0x4991d34b, 0x80a1, 0x4291, 0x83,0xb6, 0x33,0x28,0x36,0x6b,0x90,0x97);

#ifndef __IBackgroundCopyCallback_FWD_DEFINED__
#define __IBackgroundCopyCallback_FWD_DEFINED__
typedef interface IBackgroundCopyCallback IBackgroundCopyCallback;
#endif

/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __WIDL_BITS_H */
