/*** Autogenerated by WIDL 5.15 from ../../wine/include/bits2_0.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __bits2_0_h__
#define __bits2_0_h__

/* Forward declarations */

#ifndef __IBackgroundCopyJob3_FWD_DEFINED__
#define __IBackgroundCopyJob3_FWD_DEFINED__
typedef interface IBackgroundCopyJob3 IBackgroundCopyJob3;
#ifdef __cplusplus
interface IBackgroundCopyJob3;
#endif /* __cplusplus */
#endif

#ifndef __IBackgroundCopyFile2_FWD_DEFINED__
#define __IBackgroundCopyFile2_FWD_DEFINED__
typedef interface IBackgroundCopyFile2 IBackgroundCopyFile2;
#ifdef __cplusplus
interface IBackgroundCopyFile2;
#endif /* __cplusplus */
#endif

#ifndef __BackgroundCopyManager2_0_FWD_DEFINED__
#define __BackgroundCopyManager2_0_FWD_DEFINED__
#ifdef __cplusplus
typedef class BackgroundCopyManager2_0 BackgroundCopyManager2_0;
#else
typedef struct BackgroundCopyManager2_0 BackgroundCopyManager2_0;
#endif /* defined __cplusplus */
#endif /* defined __BackgroundCopyManager2_0_FWD_DEFINED__ */

/* Headers for imported files */

#include <bits.h>
#include <bits1_5.h>

#ifdef __cplusplus
extern "C" {
#endif

#define BG_COPY_FILE_OWNER 1
#define BG_COPY_FILE_GROUP 2
#define BG_COPY_FILE_DACL  4
#define BG_COPY_FILE_SACL  8
#define BG_COPY_FILE_ALL   15
#define BG_LENGTH_TO_EOF (UINT64)(-1)
#ifndef _BG_FILE_RANGE_DEFINED
#define _BG_FILE_RANGE_DEFINED
typedef struct _BG_FILE_RANGE {
    UINT64 InitialOffset;
    UINT64 Length;
} BG_FILE_RANGE;
#endif
/*****************************************************************************
 * IBackgroundCopyJob3 interface
 */
#ifndef __IBackgroundCopyJob3_INTERFACE_DEFINED__
#define __IBackgroundCopyJob3_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBackgroundCopyJob3, 0x443c8934, 0x90ff, 0x48ed, 0xbc,0xde, 0x26,0xf5,0xc7,0x45,0x00,0x42);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("443c8934-90ff-48ed-bcde-26f5c7450042")
IBackgroundCopyJob3 : public IBackgroundCopyJob2
{
    virtual HRESULT STDMETHODCALLTYPE ReplaceRemotePrefix(
        LPCWSTR OldPrefix,
        LPCWSTR NewPrefix) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddFileWithRanges(
        LPCWSTR RemoteUrl,
        LPCWSTR LocalName,
        DWORD RangeCount,
        BG_FILE_RANGE Ranges[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFileACLFlags(
        DWORD Flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFileACLFlags(
        DWORD *Flags) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBackgroundCopyJob3, 0x443c8934, 0x90ff, 0x48ed, 0xbc,0xde, 0x26,0xf5,0xc7,0x45,0x00,0x42)
#endif
#else
typedef struct IBackgroundCopyJob3Vtbl {
    BEGIN_INTERFACE

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    /*** IBackgroundCopyJob2 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetNotifyCmdLine)(
        IBackgroundCopyJob3 *This,
        LPCWSTR prog,
        LPCWSTR params);

    HRESULT (STDMETHODCALLTYPE *GetNotifyCmdLine)(
        IBackgroundCopyJob3 *This,
        LPWSTR *prog,
        LPWSTR *params);

    HRESULT (STDMETHODCALLTYPE *GetReplyProgress)(
        IBackgroundCopyJob3 *This,
        BG_JOB_REPLY_PROGRESS *progress);

    HRESULT (STDMETHODCALLTYPE *GetReplyData)(
        IBackgroundCopyJob3 *This,
        byte **pBuffer,
        UINT64 *pLength);

    HRESULT (STDMETHODCALLTYPE *SetReplyFileName)(
        IBackgroundCopyJob3 *This,
        LPCWSTR filename);

    HRESULT (STDMETHODCALLTYPE *GetReplyFileName)(
        IBackgroundCopyJob3 *This,
        LPWSTR *pFilename);

    HRESULT (STDMETHODCALLTYPE *SetCredentials)(
        IBackgroundCopyJob3 *This,
        BG_AUTH_CREDENTIALS *cred);

    HRESULT (STDMETHODCALLTYPE *RemoveCredentials)(
        IBackgroundCopyJob3 *This,
        BG_AUTH_TARGET target,
        BG_AUTH_SCHEME scheme);

    /*** IBackgroundCopyJob3 methods ***/
    HRESULT (STDMETHODCALLTYPE *ReplaceRemotePrefix)(
        IBackgroundCopyJob3 *This,
        LPCWSTR OldPrefix,
        LPCWSTR NewPrefix);

    HRESULT (STDMETHODCALLTYPE *AddFileWithRanges)(
        IBackgroundCopyJob3 *This,
        LPCWSTR RemoteUrl,
        LPCWSTR LocalName,
        DWORD RangeCount,
        BG_FILE_RANGE Ranges[]);

    HRESULT (STDMETHODCALLTYPE *SetFileACLFlags)(
        IBackgroundCopyJob3 *This,
        DWORD Flags);

    HRESULT (STDMETHODCALLTYPE *GetFileACLFlags)(
        IBackgroundCopyJob3 *This,
        DWORD *Flags);

    END_INTERFACE
} IBackgroundCopyJob3Vtbl;

interface IBackgroundCopyJob3 {
    CONST_VTBL IBackgroundCopyJob3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBackgroundCopyJob3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyJob3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyJob3_Release(This) (This)->lpVtbl->Release(This)
/*** IBackgroundCopyJob methods ***/
#define IBackgroundCopyJob3_AddFileSet(This,cFileCount,pFileSet) (This)->lpVtbl->AddFileSet(This,cFileCount,pFileSet)
#define IBackgroundCopyJob3_AddFile(This,RemoteUrl,LocalName) (This)->lpVtbl->AddFile(This,RemoteUrl,LocalName)
#define IBackgroundCopyJob3_EnumFiles(This,pEnum) (This)->lpVtbl->EnumFiles(This,pEnum)
#define IBackgroundCopyJob3_Suspend(This) (This)->lpVtbl->Suspend(This)
#define IBackgroundCopyJob3_Resume(This) (This)->lpVtbl->Resume(This)
#define IBackgroundCopyJob3_Cancel(This) (This)->lpVtbl->Cancel(This)
#define IBackgroundCopyJob3_Complete(This) (This)->lpVtbl->Complete(This)
#define IBackgroundCopyJob3_GetId(This,pVal) (This)->lpVtbl->GetId(This,pVal)
#define IBackgroundCopyJob3_GetType(This,pVal) (This)->lpVtbl->GetType(This,pVal)
#define IBackgroundCopyJob3_GetProgress(This,pVal) (This)->lpVtbl->GetProgress(This,pVal)
#define IBackgroundCopyJob3_GetTimes(This,pVal) (This)->lpVtbl->GetTimes(This,pVal)
#define IBackgroundCopyJob3_GetState(This,pVal) (This)->lpVtbl->GetState(This,pVal)
#define IBackgroundCopyJob3_GetError(This,ppError) (This)->lpVtbl->GetError(This,ppError)
#define IBackgroundCopyJob3_GetOwner(This,pVal) (This)->lpVtbl->GetOwner(This,pVal)
#define IBackgroundCopyJob3_SetDisplayName(This,Val) (This)->lpVtbl->SetDisplayName(This,Val)
#define IBackgroundCopyJob3_GetDisplayName(This,pVal) (This)->lpVtbl->GetDisplayName(This,pVal)
#define IBackgroundCopyJob3_SetDescription(This,Val) (This)->lpVtbl->SetDescription(This,Val)
#define IBackgroundCopyJob3_GetDescription(This,pVal) (This)->lpVtbl->GetDescription(This,pVal)
#define IBackgroundCopyJob3_SetPriority(This,Val) (This)->lpVtbl->SetPriority(This,Val)
#define IBackgroundCopyJob3_GetPriority(This,pVal) (This)->lpVtbl->GetPriority(This,pVal)
#define IBackgroundCopyJob3_SetNotifyFlags(This,Val) (This)->lpVtbl->SetNotifyFlags(This,Val)
#define IBackgroundCopyJob3_GetNotifyFlags(This,pVal) (This)->lpVtbl->GetNotifyFlags(This,pVal)
#define IBackgroundCopyJob3_SetNotifyInterface(This,Val) (This)->lpVtbl->SetNotifyInterface(This,Val)
#define IBackgroundCopyJob3_GetNotifyInterface(This,pVal) (This)->lpVtbl->GetNotifyInterface(This,pVal)
#define IBackgroundCopyJob3_SetMinimumRetryDelay(This,Seconds) (This)->lpVtbl->SetMinimumRetryDelay(This,Seconds)
#define IBackgroundCopyJob3_GetMinimumRetryDelay(This,Seconds) (This)->lpVtbl->GetMinimumRetryDelay(This,Seconds)
#define IBackgroundCopyJob3_SetNoProgressTimeout(This,Seconds) (This)->lpVtbl->SetNoProgressTimeout(This,Seconds)
#define IBackgroundCopyJob3_GetNoProgressTimeout(This,Seconds) (This)->lpVtbl->GetNoProgressTimeout(This,Seconds)
#define IBackgroundCopyJob3_GetErrorCount(This,Errors) (This)->lpVtbl->GetErrorCount(This,Errors)
#define IBackgroundCopyJob3_SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList) (This)->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList)
#define IBackgroundCopyJob3_GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList) (This)->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList)
#define IBackgroundCopyJob3_TakeOwnership(This) (This)->lpVtbl->TakeOwnership(This)
/*** IBackgroundCopyJob2 methods ***/
#define IBackgroundCopyJob3_SetNotifyCmdLine(This,prog,params) (This)->lpVtbl->SetNotifyCmdLine(This,prog,params)
#define IBackgroundCopyJob3_GetNotifyCmdLine(This,prog,params) (This)->lpVtbl->GetNotifyCmdLine(This,prog,params)
#define IBackgroundCopyJob3_GetReplyProgress(This,progress) (This)->lpVtbl->GetReplyProgress(This,progress)
#define IBackgroundCopyJob3_GetReplyData(This,pBuffer,pLength) (This)->lpVtbl->GetReplyData(This,pBuffer,pLength)
#define IBackgroundCopyJob3_SetReplyFileName(This,filename) (This)->lpVtbl->SetReplyFileName(This,filename)
#define IBackgroundCopyJob3_GetReplyFileName(This,pFilename) (This)->lpVtbl->GetReplyFileName(This,pFilename)
#define IBackgroundCopyJob3_SetCredentials(This,cred) (This)->lpVtbl->SetCredentials(This,cred)
#define IBackgroundCopyJob3_RemoveCredentials(This,target,scheme) (This)->lpVtbl->RemoveCredentials(This,target,scheme)
/*** IBackgroundCopyJob3 methods ***/
#define IBackgroundCopyJob3_ReplaceRemotePrefix(This,OldPrefix,NewPrefix) (This)->lpVtbl->ReplaceRemotePrefix(This,OldPrefix,NewPrefix)
#define IBackgroundCopyJob3_AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges) (This)->lpVtbl->AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges)
#define IBackgroundCopyJob3_SetFileACLFlags(This,Flags) (This)->lpVtbl->SetFileACLFlags(This,Flags)
#define IBackgroundCopyJob3_GetFileACLFlags(This,Flags) (This)->lpVtbl->GetFileACLFlags(This,Flags)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBackgroundCopyJob3_QueryInterface(IBackgroundCopyJob3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBackgroundCopyJob3_AddRef(IBackgroundCopyJob3* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBackgroundCopyJob3_Release(IBackgroundCopyJob3* This) {
    return This->lpVtbl->Release(This);
}
/*** IBackgroundCopyJob methods ***/
static FORCEINLINE HRESULT IBackgroundCopyJob3_AddFileSet(IBackgroundCopyJob3* This,ULONG cFileCount,BG_FILE_INFO *pFileSet) {
    return This->lpVtbl->AddFileSet(This,cFileCount,pFileSet);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_AddFile(IBackgroundCopyJob3* This,LPCWSTR RemoteUrl,LPCWSTR LocalName) {
    return This->lpVtbl->AddFile(This,RemoteUrl,LocalName);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_EnumFiles(IBackgroundCopyJob3* This,IEnumBackgroundCopyFiles **pEnum) {
    return This->lpVtbl->EnumFiles(This,pEnum);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_Suspend(IBackgroundCopyJob3* This) {
    return This->lpVtbl->Suspend(This);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_Resume(IBackgroundCopyJob3* This) {
    return This->lpVtbl->Resume(This);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_Cancel(IBackgroundCopyJob3* This) {
    return This->lpVtbl->Cancel(This);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_Complete(IBackgroundCopyJob3* This) {
    return This->lpVtbl->Complete(This);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetId(IBackgroundCopyJob3* This,GUID *pVal) {
    return This->lpVtbl->GetId(This,pVal);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetType(IBackgroundCopyJob3* This,BG_JOB_TYPE *pVal) {
    return This->lpVtbl->GetType(This,pVal);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetProgress(IBackgroundCopyJob3* This,BG_JOB_PROGRESS *pVal) {
    return This->lpVtbl->GetProgress(This,pVal);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetTimes(IBackgroundCopyJob3* This,BG_JOB_TIMES *pVal) {
    return This->lpVtbl->GetTimes(This,pVal);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetState(IBackgroundCopyJob3* This,BG_JOB_STATE *pVal) {
    return This->lpVtbl->GetState(This,pVal);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetError(IBackgroundCopyJob3* This,IBackgroundCopyError **ppError) {
    return This->lpVtbl->GetError(This,ppError);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetOwner(IBackgroundCopyJob3* This,LPWSTR *pVal) {
    return This->lpVtbl->GetOwner(This,pVal);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_SetDisplayName(IBackgroundCopyJob3* This,LPCWSTR Val) {
    return This->lpVtbl->SetDisplayName(This,Val);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetDisplayName(IBackgroundCopyJob3* This,LPWSTR *pVal) {
    return This->lpVtbl->GetDisplayName(This,pVal);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_SetDescription(IBackgroundCopyJob3* This,LPCWSTR Val) {
    return This->lpVtbl->SetDescription(This,Val);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetDescription(IBackgroundCopyJob3* This,LPWSTR *pVal) {
    return This->lpVtbl->GetDescription(This,pVal);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_SetPriority(IBackgroundCopyJob3* This,BG_JOB_PRIORITY Val) {
    return This->lpVtbl->SetPriority(This,Val);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetPriority(IBackgroundCopyJob3* This,BG_JOB_PRIORITY *pVal) {
    return This->lpVtbl->GetPriority(This,pVal);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_SetNotifyFlags(IBackgroundCopyJob3* This,ULONG Val) {
    return This->lpVtbl->SetNotifyFlags(This,Val);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetNotifyFlags(IBackgroundCopyJob3* This,ULONG *pVal) {
    return This->lpVtbl->GetNotifyFlags(This,pVal);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_SetNotifyInterface(IBackgroundCopyJob3* This,IUnknown *Val) {
    return This->lpVtbl->SetNotifyInterface(This,Val);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetNotifyInterface(IBackgroundCopyJob3* This,IUnknown **pVal) {
    return This->lpVtbl->GetNotifyInterface(This,pVal);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_SetMinimumRetryDelay(IBackgroundCopyJob3* This,ULONG Seconds) {
    return This->lpVtbl->SetMinimumRetryDelay(This,Seconds);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetMinimumRetryDelay(IBackgroundCopyJob3* This,ULONG *Seconds) {
    return This->lpVtbl->GetMinimumRetryDelay(This,Seconds);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_SetNoProgressTimeout(IBackgroundCopyJob3* This,ULONG Seconds) {
    return This->lpVtbl->SetNoProgressTimeout(This,Seconds);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetNoProgressTimeout(IBackgroundCopyJob3* This,ULONG *Seconds) {
    return This->lpVtbl->GetNoProgressTimeout(This,Seconds);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetErrorCount(IBackgroundCopyJob3* This,ULONG *Errors) {
    return This->lpVtbl->GetErrorCount(This,Errors);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_SetProxySettings(IBackgroundCopyJob3* This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList) {
    return This->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetProxySettings(IBackgroundCopyJob3* This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList) {
    return This->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_TakeOwnership(IBackgroundCopyJob3* This) {
    return This->lpVtbl->TakeOwnership(This);
}
/*** IBackgroundCopyJob2 methods ***/
static FORCEINLINE HRESULT IBackgroundCopyJob3_SetNotifyCmdLine(IBackgroundCopyJob3* This,LPCWSTR prog,LPCWSTR params) {
    return This->lpVtbl->SetNotifyCmdLine(This,prog,params);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetNotifyCmdLine(IBackgroundCopyJob3* This,LPWSTR *prog,LPWSTR *params) {
    return This->lpVtbl->GetNotifyCmdLine(This,prog,params);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetReplyProgress(IBackgroundCopyJob3* This,BG_JOB_REPLY_PROGRESS *progress) {
    return This->lpVtbl->GetReplyProgress(This,progress);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetReplyData(IBackgroundCopyJob3* This,byte **pBuffer,UINT64 *pLength) {
    return This->lpVtbl->GetReplyData(This,pBuffer,pLength);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_SetReplyFileName(IBackgroundCopyJob3* This,LPCWSTR filename) {
    return This->lpVtbl->SetReplyFileName(This,filename);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetReplyFileName(IBackgroundCopyJob3* This,LPWSTR *pFilename) {
    return This->lpVtbl->GetReplyFileName(This,pFilename);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_SetCredentials(IBackgroundCopyJob3* This,BG_AUTH_CREDENTIALS *cred) {
    return This->lpVtbl->SetCredentials(This,cred);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_RemoveCredentials(IBackgroundCopyJob3* This,BG_AUTH_TARGET target,BG_AUTH_SCHEME scheme) {
    return This->lpVtbl->RemoveCredentials(This,target,scheme);
}
/*** IBackgroundCopyJob3 methods ***/
static FORCEINLINE HRESULT IBackgroundCopyJob3_ReplaceRemotePrefix(IBackgroundCopyJob3* This,LPCWSTR OldPrefix,LPCWSTR NewPrefix) {
    return This->lpVtbl->ReplaceRemotePrefix(This,OldPrefix,NewPrefix);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_AddFileWithRanges(IBackgroundCopyJob3* This,LPCWSTR RemoteUrl,LPCWSTR LocalName,DWORD RangeCount,BG_FILE_RANGE Ranges[]) {
    return This->lpVtbl->AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_SetFileACLFlags(IBackgroundCopyJob3* This,DWORD Flags) {
    return This->lpVtbl->SetFileACLFlags(This,Flags);
}
static FORCEINLINE HRESULT IBackgroundCopyJob3_GetFileACLFlags(IBackgroundCopyJob3* This,DWORD *Flags) {
    return This->lpVtbl->GetFileACLFlags(This,Flags);
}
#endif
#endif

#endif


#endif  /* __IBackgroundCopyJob3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBackgroundCopyFile2 interface
 */
#ifndef __IBackgroundCopyFile2_INTERFACE_DEFINED__
#define __IBackgroundCopyFile2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBackgroundCopyFile2, 0x83e81b93, 0x0873, 0x474d, 0x8a,0x8c, 0xf2,0x01,0x8b,0x1a,0x93,0x9c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("83e81b93-0873-474d-8a8c-f2018b1a939c")
IBackgroundCopyFile2 : public IBackgroundCopyFile
{
    virtual HRESULT STDMETHODCALLTYPE GetFileRanges(
        DWORD *RangeCount,
        BG_FILE_RANGE **Ranges) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRemoteName(
        LPCWSTR Val) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBackgroundCopyFile2, 0x83e81b93, 0x0873, 0x474d, 0x8a,0x8c, 0xf2,0x01,0x8b,0x1a,0x93,0x9c)
#endif
#else
typedef struct IBackgroundCopyFile2Vtbl {
    BEGIN_INTERFACE

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

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

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

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

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

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

    /*** IBackgroundCopyFile2 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetFileRanges)(
        IBackgroundCopyFile2 *This,
        DWORD *RangeCount,
        BG_FILE_RANGE **Ranges);

    HRESULT (STDMETHODCALLTYPE *SetRemoteName)(
        IBackgroundCopyFile2 *This,
        LPCWSTR Val);

    END_INTERFACE
} IBackgroundCopyFile2Vtbl;

interface IBackgroundCopyFile2 {
    CONST_VTBL IBackgroundCopyFile2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBackgroundCopyFile2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyFile2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyFile2_Release(This) (This)->lpVtbl->Release(This)
/*** IBackgroundCopyFile methods ***/
#define IBackgroundCopyFile2_GetRemoteName(This,pVal) (This)->lpVtbl->GetRemoteName(This,pVal)
#define IBackgroundCopyFile2_GetLocalName(This,pVal) (This)->lpVtbl->GetLocalName(This,pVal)
#define IBackgroundCopyFile2_GetProgress(This,pVal) (This)->lpVtbl->GetProgress(This,pVal)
/*** IBackgroundCopyFile2 methods ***/
#define IBackgroundCopyFile2_GetFileRanges(This,RangeCount,Ranges) (This)->lpVtbl->GetFileRanges(This,RangeCount,Ranges)
#define IBackgroundCopyFile2_SetRemoteName(This,Val) (This)->lpVtbl->SetRemoteName(This,Val)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBackgroundCopyFile2_QueryInterface(IBackgroundCopyFile2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBackgroundCopyFile2_AddRef(IBackgroundCopyFile2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBackgroundCopyFile2_Release(IBackgroundCopyFile2* This) {
    return This->lpVtbl->Release(This);
}
/*** IBackgroundCopyFile methods ***/
static FORCEINLINE HRESULT IBackgroundCopyFile2_GetRemoteName(IBackgroundCopyFile2* This,LPWSTR *pVal) {
    return This->lpVtbl->GetRemoteName(This,pVal);
}
static FORCEINLINE HRESULT IBackgroundCopyFile2_GetLocalName(IBackgroundCopyFile2* This,LPWSTR *pVal) {
    return This->lpVtbl->GetLocalName(This,pVal);
}
static FORCEINLINE HRESULT IBackgroundCopyFile2_GetProgress(IBackgroundCopyFile2* This,BG_FILE_PROGRESS *pVal) {
    return This->lpVtbl->GetProgress(This,pVal);
}
/*** IBackgroundCopyFile2 methods ***/
static FORCEINLINE HRESULT IBackgroundCopyFile2_GetFileRanges(IBackgroundCopyFile2* This,DWORD *RangeCount,BG_FILE_RANGE **Ranges) {
    return This->lpVtbl->GetFileRanges(This,RangeCount,Ranges);
}
static FORCEINLINE HRESULT IBackgroundCopyFile2_SetRemoteName(IBackgroundCopyFile2* This,LPCWSTR Val) {
    return This->lpVtbl->SetRemoteName(This,Val);
}
#endif
#endif

#endif


#endif  /* __IBackgroundCopyFile2_INTERFACE_DEFINED__ */


DEFINE_GUID(LIBID_BackgroundCopyManager2_0, 0x2289a9af, 0xdc96, 0x486e, 0xb2,0x68, 0x89,0xc9,0xe3,0x39,0x7c,0x3d);

/*****************************************************************************
 * BackgroundCopyManager2_0 coclass
 */

DEFINE_GUID(CLSID_BackgroundCopyManager2_0, 0x6d18ad12, 0xbde3, 0x4393, 0xb3,0x11, 0x09,0x9c,0x34,0x6e,0x6d,0xf9);

#ifdef __cplusplus
class DECLSPEC_UUID("6d18ad12-bde3-4393-b311-099c346e6df9") BackgroundCopyManager2_0;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(BackgroundCopyManager2_0, 0x6d18ad12, 0xbde3, 0x4393, 0xb3,0x11, 0x09,0x9c,0x34,0x6e,0x6d,0xf9)
#endif
#endif

#ifndef __IBackgroundCopyCallback_FWD_DEFINED__
#define __IBackgroundCopyCallback_FWD_DEFINED__
typedef interface IBackgroundCopyCallback IBackgroundCopyCallback;
#ifdef __cplusplus
interface IBackgroundCopyCallback;
#endif /* __cplusplus */
#endif

#ifndef __IBackgroundCopyJob3_FWD_DEFINED__
#define __IBackgroundCopyJob3_FWD_DEFINED__
typedef interface IBackgroundCopyJob3 IBackgroundCopyJob3;
#ifdef __cplusplus
interface IBackgroundCopyJob3;
#endif /* __cplusplus */
#endif

#ifndef __IBackgroundCopyFile2_FWD_DEFINED__
#define __IBackgroundCopyFile2_FWD_DEFINED__
typedef interface IBackgroundCopyFile2 IBackgroundCopyFile2;
#ifdef __cplusplus
interface IBackgroundCopyFile2;
#endif /* __cplusplus */
#endif

#include "bits2_5.h"
/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __bits2_0_h__ */
