headers: Update to Wine master

'include/windows.foundation.collections.idl' contains an error at the
moment, so I have restored it by hand.

Signed-off-by: LIU Hao <lh_mouse@126.com>
diff --git a/mingw-w64-headers/Makefile.in b/mingw-w64-headers/Makefile.in
index 9584b94..0866f5d 100644
--- a/mingw-w64-headers/Makefile.in
+++ b/mingw-w64-headers/Makefile.in
@@ -383,6 +383,12 @@
 @HAVE_WIDL_TRUE@  include/audiopolicy.idl \
 @HAVE_WIDL_TRUE@  include/austream.idl \
 @HAVE_WIDL_TRUE@  include/bdaiface.idl \
+@HAVE_WIDL_TRUE@  include/bits.idl \
+@HAVE_WIDL_TRUE@  include/bits1_5.idl \
+@HAVE_WIDL_TRUE@  include/bits2_0.idl \
+@HAVE_WIDL_TRUE@  include/bits2_5.idl \
+@HAVE_WIDL_TRUE@  include/bits3_0.idl \
+@HAVE_WIDL_TRUE@  include/bits5_0.idl \
 @HAVE_WIDL_TRUE@  include/comadmin.idl \
 @HAVE_WIDL_TRUE@  include/commoncontrols.idl \
 @HAVE_WIDL_TRUE@  include/control.idl \
diff --git a/mingw-w64-headers/include/bits.h b/mingw-w64-headers/include/bits.h
index 6f971ee..6c6a87e 100644
--- a/mingw-w64-headers/include/bits.h
+++ b/mingw-w64-headers/include/bits.h
@@ -1,379 +1,792 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
+/*** Autogenerated by WIDL 6.12 from include/bits.idl - Do not edit ***/
+
+#ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
 #endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
+#include <rpc.h>
+#include <rpcndr.h>
 #endif
 
 #ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
+#include <windows.h>
+#include <ole2.h>
 #endif
 
 #ifndef __bits_h__
 #define __bits_h__
 
+/* Forward declarations */
+
 #ifndef __IBackgroundCopyFile_FWD_DEFINED__
 #define __IBackgroundCopyFile_FWD_DEFINED__
-typedef struct IBackgroundCopyFile IBackgroundCopyFile;
+typedef interface IBackgroundCopyFile IBackgroundCopyFile;
+#ifdef __cplusplus
+interface IBackgroundCopyFile;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumBackgroundCopyFiles_FWD_DEFINED__
 #define __IEnumBackgroundCopyFiles_FWD_DEFINED__
-typedef struct IEnumBackgroundCopyFiles IEnumBackgroundCopyFiles;
+typedef interface IEnumBackgroundCopyFiles IEnumBackgroundCopyFiles;
+#ifdef __cplusplus
+interface IEnumBackgroundCopyFiles;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBackgroundCopyError_FWD_DEFINED__
 #define __IBackgroundCopyError_FWD_DEFINED__
-typedef struct IBackgroundCopyError IBackgroundCopyError;
+typedef interface IBackgroundCopyError IBackgroundCopyError;
+#ifdef __cplusplus
+interface IBackgroundCopyError;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBackgroundCopyJob_FWD_DEFINED__
 #define __IBackgroundCopyJob_FWD_DEFINED__
-typedef struct IBackgroundCopyJob IBackgroundCopyJob;
+typedef interface IBackgroundCopyJob IBackgroundCopyJob;
+#ifdef __cplusplus
+interface IBackgroundCopyJob;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IEnumBackgroundCopyJobs_FWD_DEFINED__
 #define __IEnumBackgroundCopyJobs_FWD_DEFINED__
-typedef struct IEnumBackgroundCopyJobs IEnumBackgroundCopyJobs;
+typedef interface IEnumBackgroundCopyJobs IEnumBackgroundCopyJobs;
+#ifdef __cplusplus
+interface IEnumBackgroundCopyJobs;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBackgroundCopyCallback_FWD_DEFINED__
 #define __IBackgroundCopyCallback_FWD_DEFINED__
-typedef struct IBackgroundCopyCallback IBackgroundCopyCallback;
-#endif
-
-#ifndef __AsyncIBackgroundCopyCallback_FWD_DEFINED__
-#define __AsyncIBackgroundCopyCallback_FWD_DEFINED__
-typedef struct AsyncIBackgroundCopyCallback AsyncIBackgroundCopyCallback;
+typedef interface IBackgroundCopyCallback IBackgroundCopyCallback;
+#ifdef __cplusplus
+interface IBackgroundCopyCallback;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBackgroundCopyManager_FWD_DEFINED__
 #define __IBackgroundCopyManager_FWD_DEFINED__
-typedef struct IBackgroundCopyManager IBackgroundCopyManager;
+typedef interface IBackgroundCopyManager IBackgroundCopyManager;
+#ifdef __cplusplus
+interface IBackgroundCopyManager;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __BackgroundCopyManager_FWD_DEFINED__
 #define __BackgroundCopyManager_FWD_DEFINED__
-
 #ifdef __cplusplus
 typedef class BackgroundCopyManager BackgroundCopyManager;
 #else
 typedef struct BackgroundCopyManager BackgroundCopyManager;
-#endif
-#endif
+#endif /* defined __cplusplus */
+#endif /* defined __BackgroundCopyManager_FWD_DEFINED__ */
 
-#ifndef __IBackgroundCopyCallback_FWD_DEFINED__
-#define __IBackgroundCopyCallback_FWD_DEFINED__
-typedef struct IBackgroundCopyCallback IBackgroundCopyCallback;
-#endif
+/* Headers for imported files */
 
-#include "unknwn.h"
+#include <unknwn.h>
 
 #ifdef __cplusplus
-extern "C"{
-#endif
-
-#ifndef __MIDL_user_allocate_free_DEFINED__
-#define __MIDL_user_allocate_free_DEFINED__
-  void *__RPC_API MIDL_user_allocate(size_t);
-  void __RPC_API MIDL_user_free(void *);
+extern "C" {
 #endif
 
 #include "bitsmsg.h"
 #define BG_SIZE_UNKNOWN (UINT64)(-1)
-
-  extern RPC_IF_HANDLE __MIDL_itf_bits_0000_v0_0_c_ifspec;
-  extern RPC_IF_HANDLE __MIDL_itf_bits_0000_v0_0_s_ifspec;
-
+#define BG_NOTIFY_JOB_TRANSFERRED 0x0001
+#define BG_NOTIFY_JOB_ERROR 0x0002
+#define BG_NOTIFY_DISABLE 0x0004
+#define BG_NOTIFY_JOB_MODIFICATION 0x0008
+#define BG_NOTIFY_FILE_TRANSFERRED 0x0010
+#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 {
+typedef struct _BG_FILE_PROGRESS {
     UINT64 BytesTotal;
     UINT64 BytesTransferred;
     WINBOOL Completed;
-  } BG_FILE_PROGRESS;
-
-  EXTERN_C const IID IID_IBackgroundCopyFile;
+} BG_FILE_PROGRESS;
+DEFINE_GUID(IID_IBackgroundCopyFile, 0x01b7bd23, 0xfb88, 0x4a77, 0x84,0x90, 0x58,0x91,0xd3,0xe4,0x65,0x3a);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IBackgroundCopyFile : public IUnknown {
-  public:
-    virtual HRESULT WINAPI GetRemoteName(LPWSTR *pVal) = 0;
-    virtual HRESULT WINAPI GetLocalName(LPWSTR *pVal) = 0;
-    virtual HRESULT WINAPI GetProgress(BG_FILE_PROGRESS *pVal) = 0;
-  };
+MIDL_INTERFACE("01b7bd23-fb88-4a77-8490-5891d3e4653a")
+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;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyFile, 0x01b7bd23, 0xfb88, 0x4a77, 0x84,0x90, 0x58,0x91,0xd3,0xe4,0x65,0x3a)
+#endif
 #else
-  typedef struct IBackgroundCopyFileVtbl {
+typedef struct IBackgroundCopyFileVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IBackgroundCopyFile *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IBackgroundCopyFile *This);
-      ULONG (WINAPI *Release)(IBackgroundCopyFile *This);
-      HRESULT (WINAPI *GetRemoteName)(IBackgroundCopyFile *This,LPWSTR *pVal);
-      HRESULT (WINAPI *GetLocalName)(IBackgroundCopyFile *This,LPWSTR *pVal);
-      HRESULT (WINAPI *GetProgress)(IBackgroundCopyFile *This,BG_FILE_PROGRESS *pVal);
+
+    /*** 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;
-  struct IBackgroundCopyFile {
-    CONST_VTBL struct IBackgroundCopyFileVtbl *lpVtbl;
-  };
+} IBackgroundCopyFileVtbl;
+
+interface IBackgroundCopyFile {
+    CONST_VTBL IBackgroundCopyFileVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** 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)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyFile_QueryInterface(IBackgroundCopyFile* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyFile_AddRef(IBackgroundCopyFile* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyFile_Release(IBackgroundCopyFile* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyFile methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyFile_GetRemoteName(IBackgroundCopyFile* This,LPWSTR *pVal) {
+    return This->lpVtbl->GetRemoteName(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyFile_GetLocalName(IBackgroundCopyFile* This,LPWSTR *pVal) {
+    return This->lpVtbl->GetLocalName(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyFile_GetProgress(IBackgroundCopyFile* This,BG_FILE_PROGRESS *pVal) {
+    return This->lpVtbl->GetProgress(This,pVal);
+}
 #endif
 #endif
-  HRESULT WINAPI IBackgroundCopyFile_GetRemoteName_Proxy(IBackgroundCopyFile *This,LPWSTR *pVal);
-  void __RPC_STUB IBackgroundCopyFile_GetRemoteName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyFile_GetLocalName_Proxy(IBackgroundCopyFile *This,LPWSTR *pVal);
-  void __RPC_STUB IBackgroundCopyFile_GetLocalName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI 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
 
+#endif
+
+
+#endif  /* __IBackgroundCopyFile_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IEnumBackgroundCopyFiles interface
+ */
 #ifndef __IEnumBackgroundCopyFiles_INTERFACE_DEFINED__
 #define __IEnumBackgroundCopyFiles_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_IEnumBackgroundCopyFiles;
+
+DEFINE_GUID(IID_IEnumBackgroundCopyFiles, 0xca51e165, 0xc365, 0x424c, 0x8d,0x41, 0x24,0xaa,0xa4,0xff,0x3c,0x40);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IEnumBackgroundCopyFiles : public IUnknown {
-  public:
-    virtual HRESULT WINAPI Next(ULONG celt,IBackgroundCopyFile **rgelt,ULONG *pceltFetched) = 0;
-    virtual HRESULT WINAPI Skip(ULONG celt) = 0;
-    virtual HRESULT WINAPI Reset(void) = 0;
-    virtual HRESULT WINAPI Clone(IEnumBackgroundCopyFiles **ppenum) = 0;
-    virtual HRESULT WINAPI GetCount(ULONG *puCount) = 0;
-  };
+MIDL_INTERFACE("ca51e165-c365-424c-8d41-24aaa4ff3c40")
+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;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IEnumBackgroundCopyFiles, 0xca51e165, 0xc365, 0x424c, 0x8d,0x41, 0x24,0xaa,0xa4,0xff,0x3c,0x40)
+#endif
 #else
-  typedef struct IEnumBackgroundCopyFilesVtbl {
+typedef struct IEnumBackgroundCopyFilesVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IEnumBackgroundCopyFiles *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IEnumBackgroundCopyFiles *This);
-      ULONG (WINAPI *Release)(IEnumBackgroundCopyFiles *This);
-      HRESULT (WINAPI *Next)(IEnumBackgroundCopyFiles *This,ULONG celt,IBackgroundCopyFile **rgelt,ULONG *pceltFetched);
-      HRESULT (WINAPI *Skip)(IEnumBackgroundCopyFiles *This,ULONG celt);
-      HRESULT (WINAPI *Reset)(IEnumBackgroundCopyFiles *This);
-      HRESULT (WINAPI *Clone)(IEnumBackgroundCopyFiles *This,IEnumBackgroundCopyFiles **ppenum);
-      HRESULT (WINAPI *GetCount)(IEnumBackgroundCopyFiles *This,ULONG *puCount);
+
+    /*** 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;
-  struct IEnumBackgroundCopyFiles {
-    CONST_VTBL struct IEnumBackgroundCopyFilesVtbl *lpVtbl;
-  };
+} IEnumBackgroundCopyFilesVtbl;
+
+interface IEnumBackgroundCopyFiles {
+    CONST_VTBL IEnumBackgroundCopyFilesVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** 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)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IEnumBackgroundCopyFiles_QueryInterface(IEnumBackgroundCopyFiles* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IEnumBackgroundCopyFiles_AddRef(IEnumBackgroundCopyFiles* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IEnumBackgroundCopyFiles_Release(IEnumBackgroundCopyFiles* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IEnumBackgroundCopyFiles methods ***/
+static FORCEINLINE HRESULT IEnumBackgroundCopyFiles_Next(IEnumBackgroundCopyFiles* This,ULONG celt,IBackgroundCopyFile **rgelt,ULONG *pceltFetched) {
+    return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
+}
+static FORCEINLINE HRESULT IEnumBackgroundCopyFiles_Skip(IEnumBackgroundCopyFiles* This,ULONG celt) {
+    return This->lpVtbl->Skip(This,celt);
+}
+static FORCEINLINE HRESULT IEnumBackgroundCopyFiles_Reset(IEnumBackgroundCopyFiles* This) {
+    return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IEnumBackgroundCopyFiles_Clone(IEnumBackgroundCopyFiles* This,IEnumBackgroundCopyFiles **ppenum) {
+    return This->lpVtbl->Clone(This,ppenum);
+}
+static FORCEINLINE HRESULT IEnumBackgroundCopyFiles_GetCount(IEnumBackgroundCopyFiles* This,ULONG *puCount) {
+    return This->lpVtbl->GetCount(This,puCount);
+}
 #endif
 #endif
-  HRESULT WINAPI 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 WINAPI IEnumBackgroundCopyFiles_Skip_Proxy(IEnumBackgroundCopyFiles *This,ULONG celt);
-  void __RPC_STUB IEnumBackgroundCopyFiles_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IEnumBackgroundCopyFiles_Reset_Proxy(IEnumBackgroundCopyFiles *This);
-  void __RPC_STUB IEnumBackgroundCopyFiles_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IEnumBackgroundCopyFiles_Clone_Proxy(IEnumBackgroundCopyFiles *This,IEnumBackgroundCopyFiles **ppenum);
-  void __RPC_STUB IEnumBackgroundCopyFiles_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IEnumBackgroundCopyFiles_GetCount_Proxy(IEnumBackgroundCopyFiles *This,ULONG *puCount);
-  void __RPC_STUB IEnumBackgroundCopyFiles_GetCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
+#endif
+
+
+#endif  /* __IEnumBackgroundCopyFiles_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBackgroundCopyError interface
+ */
 #ifndef __IBackgroundCopyError_INTERFACE_DEFINED__
 #define __IBackgroundCopyError_INTERFACE_DEFINED__
-  typedef enum __MIDL_IBackgroundCopyError_0001 {
-    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;
 
-  EXTERN_C const IID IID_IBackgroundCopyError;
+typedef enum __WIDL_bits_generated_name_0000000C {
+    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)
-  struct IBackgroundCopyError : public IUnknown {
-  public:
-    virtual HRESULT WINAPI GetError(BG_ERROR_CONTEXT *pContext,HRESULT *pCode) = 0;
-    virtual HRESULT WINAPI GetFile(IBackgroundCopyFile **pVal) = 0;
-    virtual HRESULT WINAPI GetErrorDescription(DWORD LanguageId,LPWSTR *pErrorDescription) = 0;
-    virtual HRESULT WINAPI GetErrorContextDescription(DWORD LanguageId,LPWSTR *pContextDescription) = 0;
-    virtual HRESULT WINAPI GetProtocol(LPWSTR *pProtocol) = 0;
-  };
+MIDL_INTERFACE("19c613a0-fcb8-4f28-81ae-897c3d078f81")
+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;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyError, 0x19c613a0, 0xfcb8, 0x4f28, 0x81,0xae, 0x89,0x7c,0x3d,0x07,0x8f,0x81)
+#endif
 #else
-  typedef struct IBackgroundCopyErrorVtbl {
+typedef struct IBackgroundCopyErrorVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IBackgroundCopyError *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IBackgroundCopyError *This);
-      ULONG (WINAPI *Release)(IBackgroundCopyError *This);
-      HRESULT (WINAPI *GetError)(IBackgroundCopyError *This,BG_ERROR_CONTEXT *pContext,HRESULT *pCode);
-      HRESULT (WINAPI *GetFile)(IBackgroundCopyError *This,IBackgroundCopyFile **pVal);
-      HRESULT (WINAPI *GetErrorDescription)(IBackgroundCopyError *This,DWORD LanguageId,LPWSTR *pErrorDescription);
-      HRESULT (WINAPI *GetErrorContextDescription)(IBackgroundCopyError *This,DWORD LanguageId,LPWSTR *pContextDescription);
-      HRESULT (WINAPI *GetProtocol)(IBackgroundCopyError *This,LPWSTR *pProtocol);
+
+    /*** 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;
-  struct IBackgroundCopyError {
-    CONST_VTBL struct IBackgroundCopyErrorVtbl *lpVtbl;
-  };
+} IBackgroundCopyErrorVtbl;
+
+interface IBackgroundCopyError {
+    CONST_VTBL IBackgroundCopyErrorVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** 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)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyError_QueryInterface(IBackgroundCopyError* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyError_AddRef(IBackgroundCopyError* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyError_Release(IBackgroundCopyError* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyError methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyError_GetError(IBackgroundCopyError* This,BG_ERROR_CONTEXT *pContext,HRESULT *pCode) {
+    return This->lpVtbl->GetError(This,pContext,pCode);
+}
+static FORCEINLINE HRESULT IBackgroundCopyError_GetFile(IBackgroundCopyError* This,IBackgroundCopyFile **pVal) {
+    return This->lpVtbl->GetFile(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyError_GetErrorDescription(IBackgroundCopyError* This,DWORD LanguageId,LPWSTR *pErrorDescription) {
+    return This->lpVtbl->GetErrorDescription(This,LanguageId,pErrorDescription);
+}
+static FORCEINLINE HRESULT IBackgroundCopyError_GetErrorContextDescription(IBackgroundCopyError* This,DWORD LanguageId,LPWSTR *pContextDescription) {
+    return This->lpVtbl->GetErrorContextDescription(This,LanguageId,pContextDescription);
+}
+static FORCEINLINE HRESULT IBackgroundCopyError_GetProtocol(IBackgroundCopyError* This,LPWSTR *pProtocol) {
+    return This->lpVtbl->GetProtocol(This,pProtocol);
+}
 #endif
 #endif
-  HRESULT WINAPI 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 WINAPI IBackgroundCopyError_GetFile_Proxy(IBackgroundCopyError *This,IBackgroundCopyFile **pVal);
-  void __RPC_STUB IBackgroundCopyError_GetFile_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI 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 WINAPI 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 WINAPI IBackgroundCopyError_GetProtocol_Proxy(IBackgroundCopyError *This,LPWSTR *pProtocol);
-  void __RPC_STUB IBackgroundCopyError_GetProtocol_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
+#endif
+
+
+#endif  /* __IBackgroundCopyError_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBackgroundCopyJob interface
+ */
 #ifndef __IBackgroundCopyJob_INTERFACE_DEFINED__
 #define __IBackgroundCopyJob_INTERFACE_DEFINED__
-  typedef struct _BG_FILE_INFO {
+
+typedef struct _BG_FILE_INFO {
     LPWSTR RemoteName;
     LPWSTR LocalName;
-  } BG_FILE_INFO;
-
-  typedef struct _BG_JOB_PROGRESS {
+} BG_FILE_INFO;
+typedef struct _BG_JOB_PROGRESS {
     UINT64 BytesTotal;
     UINT64 BytesTransferred;
     ULONG FilesTotal;
     ULONG FilesTransferred;
-  } BG_JOB_PROGRESS;
-
-  typedef struct _BG_JOB_TIMES {
+} BG_JOB_PROGRESS;
+typedef struct _BG_JOB_TIMES {
     FILETIME CreationTime;
     FILETIME ModificationTime;
     FILETIME TransferCompletionTime;
-  } BG_JOB_TIMES;
-
-  typedef enum __MIDL_IBackgroundCopyJob_0001 {
+} BG_JOB_TIMES;
+typedef enum __WIDL_bits_generated_name_0000000D {
     BG_JOB_PRIORITY_FOREGROUND = 0,
-    BG_JOB_PRIORITY_HIGH,BG_JOB_PRIORITY_NORMAL,BG_JOB_PRIORITY_LOW
-  } BG_JOB_PRIORITY;
-
-  typedef enum __MIDL_IBackgroundCopyJob_0002 {
-    BG_JOB_STATE_QUEUED = 0,BG_JOB_STATE_CONNECTING,BG_JOB_STATE_TRANSFERRING,
-    BG_JOB_STATE_SUSPENDED,BG_JOB_STATE_ERROR,BG_JOB_STATE_TRANSIENT_ERROR,
-    BG_JOB_STATE_TRANSFERRED,BG_JOB_STATE_ACKNOWLEDGED,BG_JOB_STATE_CANCELLED
-  } BG_JOB_STATE;
-
-  typedef enum __MIDL_IBackgroundCopyJob_0003 {
-    BG_JOB_TYPE_DOWNLOAD = 0,BG_JOB_TYPE_UPLOAD,BG_JOB_TYPE_UPLOAD_REPLY
-  } BG_JOB_TYPE;
-
-  typedef enum __MIDL_IBackgroundCopyJob_0004 {
-    BG_JOB_PROXY_USAGE_PRECONFIG = 0,BG_JOB_PROXY_USAGE_NO_PROXY,
-    BG_JOB_PROXY_USAGE_OVERRIDE,BG_JOB_PROXY_USAGE_AUTODETECT
-  } BG_JOB_PROXY_USAGE;
-
-  EXTERN_C const IID IID_IBackgroundCopyJob;
+    BG_JOB_PRIORITY_HIGH = 1,
+    BG_JOB_PRIORITY_NORMAL = 2,
+    BG_JOB_PRIORITY_LOW = 3
+} BG_JOB_PRIORITY;
+typedef enum __WIDL_bits_generated_name_0000000E {
+    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_0000000F {
+    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_00000010 {
+    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)
-  struct IBackgroundCopyJob : public IUnknown {
-  public:
-    virtual HRESULT WINAPI AddFileSet(ULONG cFileCount,BG_FILE_INFO *pFileSet) = 0;
-    virtual HRESULT WINAPI AddFile(LPCWSTR RemoteUrl,LPCWSTR LocalName) = 0;
-    virtual HRESULT WINAPI EnumFiles(IEnumBackgroundCopyFiles **pEnum) = 0;
-    virtual HRESULT WINAPI Suspend(void) = 0;
-    virtual HRESULT WINAPI Resume(void) = 0;
-    virtual HRESULT WINAPI Cancel(void) = 0;
-    virtual HRESULT WINAPI Complete(void) = 0;
-    virtual HRESULT WINAPI GetId(GUID *pVal) = 0;
-    virtual HRESULT WINAPI GetType(BG_JOB_TYPE *pVal) = 0;
-    virtual HRESULT WINAPI GetProgress(BG_JOB_PROGRESS *pVal) = 0;
-    virtual HRESULT WINAPI GetTimes(BG_JOB_TIMES *pVal) = 0;
-    virtual HRESULT WINAPI GetState(BG_JOB_STATE *pVal) = 0;
-    virtual HRESULT WINAPI GetError(IBackgroundCopyError **ppError) = 0;
-    virtual HRESULT WINAPI GetOwner(LPWSTR *pVal) = 0;
-    virtual HRESULT WINAPI SetDisplayName(LPCWSTR Val) = 0;
-    virtual HRESULT WINAPI GetDisplayName(LPWSTR *pVal) = 0;
-    virtual HRESULT WINAPI SetDescription(LPCWSTR Val) = 0;
-    virtual HRESULT WINAPI GetDescription(LPWSTR *pVal) = 0;
-    virtual HRESULT WINAPI SetPriority(BG_JOB_PRIORITY Val) = 0;
-    virtual HRESULT WINAPI GetPriority(BG_JOB_PRIORITY *pVal) = 0;
-    virtual HRESULT WINAPI SetNotifyFlags(ULONG Val) = 0;
-    virtual HRESULT WINAPI GetNotifyFlags(ULONG *pVal) = 0;
-    virtual HRESULT WINAPI SetNotifyInterface(IUnknown *Val) = 0;
-    virtual HRESULT WINAPI GetNotifyInterface(IUnknown **pVal) = 0;
-    virtual HRESULT WINAPI SetMinimumRetryDelay(ULONG Seconds) = 0;
-    virtual HRESULT WINAPI GetMinimumRetryDelay(ULONG *Seconds) = 0;
-    virtual HRESULT WINAPI SetNoProgressTimeout(ULONG Seconds) = 0;
-    virtual HRESULT WINAPI GetNoProgressTimeout(ULONG *Seconds) = 0;
-    virtual HRESULT WINAPI GetErrorCount(ULONG *Errors) = 0;
-    virtual HRESULT WINAPI SetProxySettings(BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList) = 0;
-    virtual HRESULT WINAPI GetProxySettings(BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList) = 0;
-    virtual HRESULT WINAPI TakeOwnership(void) = 0;
-  };
+MIDL_INTERFACE("37668d37-507e-4160-9316-26306d150b12")
+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;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyJob, 0x37668d37, 0x507e, 0x4160, 0x93,0x16, 0x26,0x30,0x6d,0x15,0x0b,0x12)
+#endif
 #else
-  typedef struct IBackgroundCopyJobVtbl {
+typedef struct IBackgroundCopyJobVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IBackgroundCopyJob *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IBackgroundCopyJob *This);
-      ULONG (WINAPI *Release)(IBackgroundCopyJob *This);
-      HRESULT (WINAPI *AddFileSet)(IBackgroundCopyJob *This,ULONG cFileCount,BG_FILE_INFO *pFileSet);
-      HRESULT (WINAPI *AddFile)(IBackgroundCopyJob *This,LPCWSTR RemoteUrl,LPCWSTR LocalName);
-      HRESULT (WINAPI *EnumFiles)(IBackgroundCopyJob *This,IEnumBackgroundCopyFiles **pEnum);
-      HRESULT (WINAPI *Suspend)(IBackgroundCopyJob *This);
-      HRESULT (WINAPI *Resume)(IBackgroundCopyJob *This);
-      HRESULT (WINAPI *Cancel)(IBackgroundCopyJob *This);
-      HRESULT (WINAPI *Complete)(IBackgroundCopyJob *This);
-      HRESULT (WINAPI *GetId)(IBackgroundCopyJob *This,GUID *pVal);
-      HRESULT (WINAPI *GetType)(IBackgroundCopyJob *This,BG_JOB_TYPE *pVal);
-      HRESULT (WINAPI *GetProgress)(IBackgroundCopyJob *This,BG_JOB_PROGRESS *pVal);
-      HRESULT (WINAPI *GetTimes)(IBackgroundCopyJob *This,BG_JOB_TIMES *pVal);
-      HRESULT (WINAPI *GetState)(IBackgroundCopyJob *This,BG_JOB_STATE *pVal);
-      HRESULT (WINAPI *GetError)(IBackgroundCopyJob *This,IBackgroundCopyError **ppError);
-      HRESULT (WINAPI *GetOwner)(IBackgroundCopyJob *This,LPWSTR *pVal);
-      HRESULT (WINAPI *SetDisplayName)(IBackgroundCopyJob *This,LPCWSTR Val);
-      HRESULT (WINAPI *GetDisplayName)(IBackgroundCopyJob *This,LPWSTR *pVal);
-      HRESULT (WINAPI *SetDescription)(IBackgroundCopyJob *This,LPCWSTR Val);
-      HRESULT (WINAPI *GetDescription)(IBackgroundCopyJob *This,LPWSTR *pVal);
-      HRESULT (WINAPI *SetPriority)(IBackgroundCopyJob *This,BG_JOB_PRIORITY Val);
-      HRESULT (WINAPI *GetPriority)(IBackgroundCopyJob *This,BG_JOB_PRIORITY *pVal);
-      HRESULT (WINAPI *SetNotifyFlags)(IBackgroundCopyJob *This,ULONG Val);
-      HRESULT (WINAPI *GetNotifyFlags)(IBackgroundCopyJob *This,ULONG *pVal);
-      HRESULT (WINAPI *SetNotifyInterface)(IBackgroundCopyJob *This,IUnknown *Val);
-      HRESULT (WINAPI *GetNotifyInterface)(IBackgroundCopyJob *This,IUnknown **pVal);
-      HRESULT (WINAPI *SetMinimumRetryDelay)(IBackgroundCopyJob *This,ULONG Seconds);
-      HRESULT (WINAPI *GetMinimumRetryDelay)(IBackgroundCopyJob *This,ULONG *Seconds);
-      HRESULT (WINAPI *SetNoProgressTimeout)(IBackgroundCopyJob *This,ULONG Seconds);
-      HRESULT (WINAPI *GetNoProgressTimeout)(IBackgroundCopyJob *This,ULONG *Seconds);
-      HRESULT (WINAPI *GetErrorCount)(IBackgroundCopyJob *This,ULONG *Errors);
-      HRESULT (WINAPI *SetProxySettings)(IBackgroundCopyJob *This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList);
-      HRESULT (WINAPI *GetProxySettings)(IBackgroundCopyJob *This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList);
-      HRESULT (WINAPI *TakeOwnership)(IBackgroundCopyJob *This);
+
+    /*** 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;
-  struct IBackgroundCopyJob {
-    CONST_VTBL struct IBackgroundCopyJobVtbl *lpVtbl;
-  };
+} IBackgroundCopyJobVtbl;
+
+interface IBackgroundCopyJob {
+    CONST_VTBL IBackgroundCopyJobVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** 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)
@@ -406,294 +819,509 @@
 #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)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob_QueryInterface(IBackgroundCopyJob* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob_AddRef(IBackgroundCopyJob* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob_Release(IBackgroundCopyJob* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyJob methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob_AddFileSet(IBackgroundCopyJob* This,ULONG cFileCount,BG_FILE_INFO *pFileSet) {
+    return This->lpVtbl->AddFileSet(This,cFileCount,pFileSet);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_AddFile(IBackgroundCopyJob* This,LPCWSTR RemoteUrl,LPCWSTR LocalName) {
+    return This->lpVtbl->AddFile(This,RemoteUrl,LocalName);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_EnumFiles(IBackgroundCopyJob* This,IEnumBackgroundCopyFiles **pEnum) {
+    return This->lpVtbl->EnumFiles(This,pEnum);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_Suspend(IBackgroundCopyJob* This) {
+    return This->lpVtbl->Suspend(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_Resume(IBackgroundCopyJob* This) {
+    return This->lpVtbl->Resume(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_Cancel(IBackgroundCopyJob* This) {
+    return This->lpVtbl->Cancel(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_Complete(IBackgroundCopyJob* This) {
+    return This->lpVtbl->Complete(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetId(IBackgroundCopyJob* This,GUID *pVal) {
+    return This->lpVtbl->GetId(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetType(IBackgroundCopyJob* This,BG_JOB_TYPE *pVal) {
+    return This->lpVtbl->GetType(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetProgress(IBackgroundCopyJob* This,BG_JOB_PROGRESS *pVal) {
+    return This->lpVtbl->GetProgress(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetTimes(IBackgroundCopyJob* This,BG_JOB_TIMES *pVal) {
+    return This->lpVtbl->GetTimes(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetState(IBackgroundCopyJob* This,BG_JOB_STATE *pVal) {
+    return This->lpVtbl->GetState(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetError(IBackgroundCopyJob* This,IBackgroundCopyError **ppError) {
+    return This->lpVtbl->GetError(This,ppError);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetOwner(IBackgroundCopyJob* This,LPWSTR *pVal) {
+    return This->lpVtbl->GetOwner(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_SetDisplayName(IBackgroundCopyJob* This,LPCWSTR Val) {
+    return This->lpVtbl->SetDisplayName(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetDisplayName(IBackgroundCopyJob* This,LPWSTR *pVal) {
+    return This->lpVtbl->GetDisplayName(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_SetDescription(IBackgroundCopyJob* This,LPCWSTR Val) {
+    return This->lpVtbl->SetDescription(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetDescription(IBackgroundCopyJob* This,LPWSTR *pVal) {
+    return This->lpVtbl->GetDescription(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_SetPriority(IBackgroundCopyJob* This,BG_JOB_PRIORITY Val) {
+    return This->lpVtbl->SetPriority(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetPriority(IBackgroundCopyJob* This,BG_JOB_PRIORITY *pVal) {
+    return This->lpVtbl->GetPriority(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_SetNotifyFlags(IBackgroundCopyJob* This,ULONG Val) {
+    return This->lpVtbl->SetNotifyFlags(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetNotifyFlags(IBackgroundCopyJob* This,ULONG *pVal) {
+    return This->lpVtbl->GetNotifyFlags(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_SetNotifyInterface(IBackgroundCopyJob* This,IUnknown *Val) {
+    return This->lpVtbl->SetNotifyInterface(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetNotifyInterface(IBackgroundCopyJob* This,IUnknown **pVal) {
+    return This->lpVtbl->GetNotifyInterface(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_SetMinimumRetryDelay(IBackgroundCopyJob* This,ULONG Seconds) {
+    return This->lpVtbl->SetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetMinimumRetryDelay(IBackgroundCopyJob* This,ULONG *Seconds) {
+    return This->lpVtbl->GetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_SetNoProgressTimeout(IBackgroundCopyJob* This,ULONG Seconds) {
+    return This->lpVtbl->SetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetNoProgressTimeout(IBackgroundCopyJob* This,ULONG *Seconds) {
+    return This->lpVtbl->GetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetErrorCount(IBackgroundCopyJob* This,ULONG *Errors) {
+    return This->lpVtbl->GetErrorCount(This,Errors);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_SetProxySettings(IBackgroundCopyJob* This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList) {
+    return This->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetProxySettings(IBackgroundCopyJob* This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList) {
+    return This->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_TakeOwnership(IBackgroundCopyJob* This) {
+    return This->lpVtbl->TakeOwnership(This);
+}
 #endif
 #endif
-  HRESULT WINAPI 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 WINAPI 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 WINAPI IBackgroundCopyJob_EnumFiles_Proxy(IBackgroundCopyJob *This,IEnumBackgroundCopyFiles **pEnum);
-  void __RPC_STUB IBackgroundCopyJob_EnumFiles_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_Suspend_Proxy(IBackgroundCopyJob *This);
-  void __RPC_STUB IBackgroundCopyJob_Suspend_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_Resume_Proxy(IBackgroundCopyJob *This);
-  void __RPC_STUB IBackgroundCopyJob_Resume_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_Cancel_Proxy(IBackgroundCopyJob *This);
-  void __RPC_STUB IBackgroundCopyJob_Cancel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_Complete_Proxy(IBackgroundCopyJob *This);
-  void __RPC_STUB IBackgroundCopyJob_Complete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_GetId_Proxy(IBackgroundCopyJob *This,GUID *pVal);
-  void __RPC_STUB IBackgroundCopyJob_GetId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI 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 WINAPI 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 WINAPI 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 WINAPI 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 WINAPI IBackgroundCopyJob_GetError_Proxy(IBackgroundCopyJob *This,IBackgroundCopyError **ppError);
-  void __RPC_STUB IBackgroundCopyJob_GetError_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_GetOwner_Proxy(IBackgroundCopyJob *This,LPWSTR *pVal);
-  void __RPC_STUB IBackgroundCopyJob_GetOwner_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_SetDisplayName_Proxy(IBackgroundCopyJob *This,LPCWSTR Val);
-  void __RPC_STUB IBackgroundCopyJob_SetDisplayName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_GetDisplayName_Proxy(IBackgroundCopyJob *This,LPWSTR *pVal);
-  void __RPC_STUB IBackgroundCopyJob_GetDisplayName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_SetDescription_Proxy(IBackgroundCopyJob *This,LPCWSTR Val);
-  void __RPC_STUB IBackgroundCopyJob_SetDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_GetDescription_Proxy(IBackgroundCopyJob *This,LPWSTR *pVal);
-  void __RPC_STUB IBackgroundCopyJob_GetDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI 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 WINAPI 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 WINAPI IBackgroundCopyJob_SetNotifyFlags_Proxy(IBackgroundCopyJob *This,ULONG Val);
-  void __RPC_STUB IBackgroundCopyJob_SetNotifyFlags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_GetNotifyFlags_Proxy(IBackgroundCopyJob *This,ULONG *pVal);
-  void __RPC_STUB IBackgroundCopyJob_GetNotifyFlags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_SetNotifyInterface_Proxy(IBackgroundCopyJob *This,IUnknown *Val);
-  void __RPC_STUB IBackgroundCopyJob_SetNotifyInterface_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_GetNotifyInterface_Proxy(IBackgroundCopyJob *This,IUnknown **pVal);
-  void __RPC_STUB IBackgroundCopyJob_GetNotifyInterface_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_SetMinimumRetryDelay_Proxy(IBackgroundCopyJob *This,ULONG Seconds);
-  void __RPC_STUB IBackgroundCopyJob_SetMinimumRetryDelay_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_GetMinimumRetryDelay_Proxy(IBackgroundCopyJob *This,ULONG *Seconds);
-  void __RPC_STUB IBackgroundCopyJob_GetMinimumRetryDelay_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_SetNoProgressTimeout_Proxy(IBackgroundCopyJob *This,ULONG Seconds);
-  void __RPC_STUB IBackgroundCopyJob_SetNoProgressTimeout_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_GetNoProgressTimeout_Proxy(IBackgroundCopyJob *This,ULONG *Seconds);
-  void __RPC_STUB IBackgroundCopyJob_GetNoProgressTimeout_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob_GetErrorCount_Proxy(IBackgroundCopyJob *This,ULONG *Errors);
-  void __RPC_STUB IBackgroundCopyJob_GetErrorCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI 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 WINAPI 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 WINAPI IBackgroundCopyJob_TakeOwnership_Proxy(IBackgroundCopyJob *This);
-  void __RPC_STUB IBackgroundCopyJob_TakeOwnership_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
+#endif
+
+
+#endif  /* __IBackgroundCopyJob_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IEnumBackgroundCopyJobs interface
+ */
 #ifndef __IEnumBackgroundCopyJobs_INTERFACE_DEFINED__
 #define __IEnumBackgroundCopyJobs_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_IEnumBackgroundCopyJobs;
+
+DEFINE_GUID(IID_IEnumBackgroundCopyJobs, 0x1af4f612, 0x3b71, 0x466f, 0x8f,0x58, 0x7b,0x6f,0x73,0xac,0x57,0xad);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IEnumBackgroundCopyJobs : public IUnknown {
-  public:
-    virtual HRESULT WINAPI Next(ULONG celt,IBackgroundCopyJob **rgelt,ULONG *pceltFetched) = 0;
-    virtual HRESULT WINAPI Skip(ULONG celt) = 0;
-    virtual HRESULT WINAPI Reset(void) = 0;
-    virtual HRESULT WINAPI Clone(IEnumBackgroundCopyJobs **ppenum) = 0;
-    virtual HRESULT WINAPI GetCount(ULONG *puCount) = 0;
-  };
+MIDL_INTERFACE("1af4f612-3b71-466f-8f58-7b6f73ac57ad")
+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;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IEnumBackgroundCopyJobs, 0x1af4f612, 0x3b71, 0x466f, 0x8f,0x58, 0x7b,0x6f,0x73,0xac,0x57,0xad)
+#endif
 #else
-  typedef struct IEnumBackgroundCopyJobsVtbl {
+typedef struct IEnumBackgroundCopyJobsVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IEnumBackgroundCopyJobs *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IEnumBackgroundCopyJobs *This);
-      ULONG (WINAPI *Release)(IEnumBackgroundCopyJobs *This);
-      HRESULT (WINAPI *Next)(IEnumBackgroundCopyJobs *This,ULONG celt,IBackgroundCopyJob **rgelt,ULONG *pceltFetched);
-      HRESULT (WINAPI *Skip)(IEnumBackgroundCopyJobs *This,ULONG celt);
-      HRESULT (WINAPI *Reset)(IEnumBackgroundCopyJobs *This);
-      HRESULT (WINAPI *Clone)(IEnumBackgroundCopyJobs *This,IEnumBackgroundCopyJobs **ppenum);
-      HRESULT (WINAPI *GetCount)(IEnumBackgroundCopyJobs *This,ULONG *puCount);
+
+    /*** 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;
-  struct IEnumBackgroundCopyJobs {
-    CONST_VTBL struct IEnumBackgroundCopyJobsVtbl *lpVtbl;
-  };
+} IEnumBackgroundCopyJobsVtbl;
+
+interface IEnumBackgroundCopyJobs {
+    CONST_VTBL IEnumBackgroundCopyJobsVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** 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)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IEnumBackgroundCopyJobs_QueryInterface(IEnumBackgroundCopyJobs* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IEnumBackgroundCopyJobs_AddRef(IEnumBackgroundCopyJobs* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IEnumBackgroundCopyJobs_Release(IEnumBackgroundCopyJobs* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IEnumBackgroundCopyJobs methods ***/
+static FORCEINLINE HRESULT IEnumBackgroundCopyJobs_Next(IEnumBackgroundCopyJobs* This,ULONG celt,IBackgroundCopyJob **rgelt,ULONG *pceltFetched) {
+    return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
+}
+static FORCEINLINE HRESULT IEnumBackgroundCopyJobs_Skip(IEnumBackgroundCopyJobs* This,ULONG celt) {
+    return This->lpVtbl->Skip(This,celt);
+}
+static FORCEINLINE HRESULT IEnumBackgroundCopyJobs_Reset(IEnumBackgroundCopyJobs* This) {
+    return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IEnumBackgroundCopyJobs_Clone(IEnumBackgroundCopyJobs* This,IEnumBackgroundCopyJobs **ppenum) {
+    return This->lpVtbl->Clone(This,ppenum);
+}
+static FORCEINLINE HRESULT IEnumBackgroundCopyJobs_GetCount(IEnumBackgroundCopyJobs* This,ULONG *puCount) {
+    return This->lpVtbl->GetCount(This,puCount);
+}
 #endif
 #endif
-  HRESULT WINAPI 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 WINAPI IEnumBackgroundCopyJobs_Skip_Proxy(IEnumBackgroundCopyJobs *This,ULONG celt);
-  void __RPC_STUB IEnumBackgroundCopyJobs_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IEnumBackgroundCopyJobs_Reset_Proxy(IEnumBackgroundCopyJobs *This);
-  void __RPC_STUB IEnumBackgroundCopyJobs_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IEnumBackgroundCopyJobs_Clone_Proxy(IEnumBackgroundCopyJobs *This,IEnumBackgroundCopyJobs **ppenum);
-  void __RPC_STUB IEnumBackgroundCopyJobs_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IEnumBackgroundCopyJobs_GetCount_Proxy(IEnumBackgroundCopyJobs *This,ULONG *puCount);
-  void __RPC_STUB IEnumBackgroundCopyJobs_GetCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+
 #endif
 
-#define BG_NOTIFY_JOB_TRANSFERRED 0x0001
-#define BG_NOTIFY_JOB_ERROR 0x0002
-#define BG_NOTIFY_DISABLE 0x0004
-#define BG_NOTIFY_JOB_MODIFICATION 0x0008
 
-  extern RPC_IF_HANDLE __MIDL_itf_bits_0013_v0_0_c_ifspec;
-  extern RPC_IF_HANDLE __MIDL_itf_bits_0013_v0_0_s_ifspec;
+#endif  /* __IEnumBackgroundCopyJobs_INTERFACE_DEFINED__ */
 
+/*****************************************************************************
+ * IBackgroundCopyCallback interface
+ */
 #ifndef __IBackgroundCopyCallback_INTERFACE_DEFINED__
 #define __IBackgroundCopyCallback_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_IBackgroundCopyCallback;
+
+DEFINE_GUID(IID_IBackgroundCopyCallback, 0x97ea99c7, 0x0186, 0x4ad4, 0x8d,0xf9, 0xc5,0xb4,0xe0,0xed,0x6b,0x22);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IBackgroundCopyCallback : public IUnknown {
-  public:
-    virtual HRESULT WINAPI JobTransferred(IBackgroundCopyJob *pJob) = 0;
-    virtual HRESULT WINAPI JobError(IBackgroundCopyJob *pJob,IBackgroundCopyError *pError) = 0;
-    virtual HRESULT WINAPI JobModification(IBackgroundCopyJob *pJob,DWORD dwReserved) = 0;
-  };
+MIDL_INTERFACE("97ea99c7-0186-4ad4-8df9-c5b4e0ed6b22")
+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;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyCallback, 0x97ea99c7, 0x0186, 0x4ad4, 0x8d,0xf9, 0xc5,0xb4,0xe0,0xed,0x6b,0x22)
+#endif
 #else
-  typedef struct IBackgroundCopyCallbackVtbl {
+typedef struct IBackgroundCopyCallbackVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IBackgroundCopyCallback *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IBackgroundCopyCallback *This);
-      ULONG (WINAPI *Release)(IBackgroundCopyCallback *This);
-      HRESULT (WINAPI *JobTransferred)(IBackgroundCopyCallback *This,IBackgroundCopyJob *pJob);
-      HRESULT (WINAPI *JobError)(IBackgroundCopyCallback *This,IBackgroundCopyJob *pJob,IBackgroundCopyError *pError);
-      HRESULT (WINAPI *JobModification)(IBackgroundCopyCallback *This,IBackgroundCopyJob *pJob,DWORD dwReserved);
+
+    /*** 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;
-  struct IBackgroundCopyCallback {
-    CONST_VTBL struct IBackgroundCopyCallbackVtbl *lpVtbl;
-  };
+} IBackgroundCopyCallbackVtbl;
+
+interface IBackgroundCopyCallback {
+    CONST_VTBL IBackgroundCopyCallbackVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** 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 WINAPI IBackgroundCopyCallback_JobTransferred_Proxy(IBackgroundCopyCallback *This,IBackgroundCopyJob *pJob);
-  void __RPC_STUB IBackgroundCopyCallback_JobTransferred_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI 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 WINAPI 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
-
-#ifndef __AsyncIBackgroundCopyCallback_INTERFACE_DEFINED__
-#define __AsyncIBackgroundCopyCallback_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_AsyncIBackgroundCopyCallback;
-#if defined(__cplusplus) && !defined(CINTERFACE)
-  struct AsyncIBackgroundCopyCallback : public IUnknown {
-  public:
-    virtual HRESULT WINAPI Begin_JobTransferred(IBackgroundCopyJob *pJob) = 0;
-    virtual HRESULT WINAPI Finish_JobTransferred(void) = 0;
-    virtual HRESULT WINAPI Begin_JobError(IBackgroundCopyJob *pJob,IBackgroundCopyError *pError) = 0;
-    virtual HRESULT WINAPI Finish_JobError(void) = 0;
-    virtual HRESULT WINAPI Begin_JobModification(IBackgroundCopyJob *pJob,DWORD dwReserved) = 0;
-    virtual HRESULT WINAPI Finish_JobModification(void) = 0;
-  };
 #else
-  typedef struct AsyncIBackgroundCopyCallbackVtbl {
-    BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(AsyncIBackgroundCopyCallback *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(AsyncIBackgroundCopyCallback *This);
-      ULONG (WINAPI *Release)(AsyncIBackgroundCopyCallback *This);
-      HRESULT (WINAPI *Begin_JobTransferred)(AsyncIBackgroundCopyCallback *This,IBackgroundCopyJob *pJob);
-      HRESULT (WINAPI *Finish_JobTransferred)(AsyncIBackgroundCopyCallback *This);
-      HRESULT (WINAPI *Begin_JobError)(AsyncIBackgroundCopyCallback *This,IBackgroundCopyJob *pJob,IBackgroundCopyError *pError);
-      HRESULT (WINAPI *Finish_JobError)(AsyncIBackgroundCopyCallback *This);
-      HRESULT (WINAPI *Begin_JobModification)(AsyncIBackgroundCopyCallback *This,IBackgroundCopyJob *pJob,DWORD dwReserved);
-      HRESULT (WINAPI *Finish_JobModification)(AsyncIBackgroundCopyCallback *This);
-    END_INTERFACE
-  } AsyncIBackgroundCopyCallbackVtbl;
-  struct AsyncIBackgroundCopyCallback {
-    CONST_VTBL struct AsyncIBackgroundCopyCallbackVtbl *lpVtbl;
-  };
-#ifdef COBJMACROS
-#define AsyncIBackgroundCopyCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define AsyncIBackgroundCopyCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define AsyncIBackgroundCopyCallback_Release(This) (This)->lpVtbl->Release(This)
-#define AsyncIBackgroundCopyCallback_Begin_JobTransferred(This,pJob) (This)->lpVtbl->Begin_JobTransferred(This,pJob)
-#define AsyncIBackgroundCopyCallback_Finish_JobTransferred(This) (This)->lpVtbl->Finish_JobTransferred(This)
-#define AsyncIBackgroundCopyCallback_Begin_JobError(This,pJob,pError) (This)->lpVtbl->Begin_JobError(This,pJob,pError)
-#define AsyncIBackgroundCopyCallback_Finish_JobError(This) (This)->lpVtbl->Finish_JobError(This)
-#define AsyncIBackgroundCopyCallback_Begin_JobModification(This,pJob,dwReserved) (This)->lpVtbl->Begin_JobModification(This,pJob,dwReserved)
-#define AsyncIBackgroundCopyCallback_Finish_JobModification(This) (This)->lpVtbl->Finish_JobModification(This)
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyCallback_QueryInterface(IBackgroundCopyCallback* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyCallback_AddRef(IBackgroundCopyCallback* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyCallback_Release(IBackgroundCopyCallback* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyCallback methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyCallback_JobTransferred(IBackgroundCopyCallback* This,IBackgroundCopyJob *pJob) {
+    return This->lpVtbl->JobTransferred(This,pJob);
+}
+static FORCEINLINE HRESULT IBackgroundCopyCallback_JobError(IBackgroundCopyCallback* This,IBackgroundCopyJob *pJob,IBackgroundCopyError *pError) {
+    return This->lpVtbl->JobError(This,pJob,pError);
+}
+static FORCEINLINE HRESULT IBackgroundCopyCallback_JobModification(IBackgroundCopyCallback* This,IBackgroundCopyJob *pJob,DWORD dwReserved) {
+    return This->lpVtbl->JobModification(This,pJob,dwReserved);
+}
 #endif
 #endif
-  HRESULT WINAPI AsyncIBackgroundCopyCallback_Begin_JobTransferred_Proxy(AsyncIBackgroundCopyCallback *This,IBackgroundCopyJob *pJob);
-  void __RPC_STUB AsyncIBackgroundCopyCallback_Begin_JobTransferred_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI AsyncIBackgroundCopyCallback_Finish_JobTransferred_Proxy(AsyncIBackgroundCopyCallback *This);
-  void __RPC_STUB AsyncIBackgroundCopyCallback_Finish_JobTransferred_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI AsyncIBackgroundCopyCallback_Begin_JobError_Proxy(AsyncIBackgroundCopyCallback *This,IBackgroundCopyJob *pJob,IBackgroundCopyError *pError);
-  void __RPC_STUB AsyncIBackgroundCopyCallback_Begin_JobError_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI AsyncIBackgroundCopyCallback_Finish_JobError_Proxy(AsyncIBackgroundCopyCallback *This);
-  void __RPC_STUB AsyncIBackgroundCopyCallback_Finish_JobError_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI AsyncIBackgroundCopyCallback_Begin_JobModification_Proxy(AsyncIBackgroundCopyCallback *This,IBackgroundCopyJob *pJob,DWORD dwReserved);
-  void __RPC_STUB AsyncIBackgroundCopyCallback_Begin_JobModification_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI AsyncIBackgroundCopyCallback_Finish_JobModification_Proxy(AsyncIBackgroundCopyCallback *This);
-  void __RPC_STUB AsyncIBackgroundCopyCallback_Finish_JobModification_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
 
+#endif
+
+
+#endif  /* __IBackgroundCopyCallback_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBackgroundCopyManager interface
+ */
 #ifndef __IBackgroundCopyManager_INTERFACE_DEFINED__
 #define __IBackgroundCopyManager_INTERFACE_DEFINED__
 
 #define BG_JOB_ENUM_ALL_USERS 0x0001
-
-  EXTERN_C const IID IID_IBackgroundCopyManager;
+DEFINE_GUID(IID_IBackgroundCopyManager, 0x5ce34c0d, 0x0dc9, 0x4c1f, 0x89,0x7c, 0xda,0xa1,0xb7,0x8c,0xee,0x7c);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IBackgroundCopyManager : public IUnknown {
-  public:
-    virtual HRESULT WINAPI CreateJob(LPCWSTR DisplayName,BG_JOB_TYPE Type,GUID *pJobId,IBackgroundCopyJob **ppJob) = 0;
-    virtual HRESULT WINAPI GetJob(REFGUID jobID,IBackgroundCopyJob **ppJob) = 0;
-    virtual HRESULT WINAPI EnumJobs(DWORD dwFlags,IEnumBackgroundCopyJobs **ppEnum) = 0;
-    virtual HRESULT WINAPI GetErrorDescription(HRESULT hResult,DWORD LanguageId,LPWSTR *pErrorDescription) = 0;
-  };
+MIDL_INTERFACE("5ce34c0d-0dc9-4c1f-897c-daa1b78cee7c")
+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;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyManager, 0x5ce34c0d, 0x0dc9, 0x4c1f, 0x89,0x7c, 0xda,0xa1,0xb7,0x8c,0xee,0x7c)
+#endif
 #else
-  typedef struct IBackgroundCopyManagerVtbl {
+typedef struct IBackgroundCopyManagerVtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IBackgroundCopyManager *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IBackgroundCopyManager *This);
-      ULONG (WINAPI *Release)(IBackgroundCopyManager *This);
-      HRESULT (WINAPI *CreateJob)(IBackgroundCopyManager *This,LPCWSTR DisplayName,BG_JOB_TYPE Type,GUID *pJobId,IBackgroundCopyJob **ppJob);
-      HRESULT (WINAPI *GetJob)(IBackgroundCopyManager *This,REFGUID jobID,IBackgroundCopyJob **ppJob);
-      HRESULT (WINAPI *EnumJobs)(IBackgroundCopyManager *This,DWORD dwFlags,IEnumBackgroundCopyJobs **ppEnum);
-      HRESULT (WINAPI *GetErrorDescription)(IBackgroundCopyManager *This,HRESULT hResult,DWORD LanguageId,LPWSTR *pErrorDescription);
+
+    /*** 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;
-  struct IBackgroundCopyManager {
-    CONST_VTBL struct IBackgroundCopyManagerVtbl *lpVtbl;
-  };
+} IBackgroundCopyManagerVtbl;
+
+interface IBackgroundCopyManager {
+    CONST_VTBL IBackgroundCopyManagerVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** 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)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyManager_QueryInterface(IBackgroundCopyManager* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyManager_AddRef(IBackgroundCopyManager* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyManager_Release(IBackgroundCopyManager* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyManager methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyManager_CreateJob(IBackgroundCopyManager* This,LPCWSTR DisplayName,BG_JOB_TYPE Type,GUID *pJobId,IBackgroundCopyJob **ppJob) {
+    return This->lpVtbl->CreateJob(This,DisplayName,Type,pJobId,ppJob);
+}
+static FORCEINLINE HRESULT IBackgroundCopyManager_GetJob(IBackgroundCopyManager* This,REFGUID jobID,IBackgroundCopyJob **ppJob) {
+    return This->lpVtbl->GetJob(This,jobID,ppJob);
+}
+static FORCEINLINE HRESULT IBackgroundCopyManager_EnumJobs(IBackgroundCopyManager* This,DWORD dwFlags,IEnumBackgroundCopyJobs **ppEnum) {
+    return This->lpVtbl->EnumJobs(This,dwFlags,ppEnum);
+}
+static FORCEINLINE HRESULT IBackgroundCopyManager_GetErrorDescription(IBackgroundCopyManager* This,HRESULT hResult,DWORD LanguageId,LPWSTR *pErrorDescription) {
+    return This->lpVtbl->GetErrorDescription(This,hResult,LanguageId,pErrorDescription);
+}
 #endif
 #endif
-  HRESULT WINAPI 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 WINAPI 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 WINAPI 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 WINAPI 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
 
+
+#endif  /* __IBackgroundCopyManager_INTERFACE_DEFINED__ */
+
 #ifndef __BackgroundCopyManager_LIBRARY_DEFINED__
 #define __BackgroundCopyManager_LIBRARY_DEFINED__
-  EXTERN_C const IID LIBID_BackgroundCopyManager;
-  EXTERN_C const CLSID CLSID_BackgroundCopyManager;
+
+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);
+
 #ifdef __cplusplus
-  class BackgroundCopyManager;
+class DECLSPEC_UUID("4991d34b-80a1-4291-83b6-3328366b9097") BackgroundCopyManager;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(BackgroundCopyManager, 0x4991d34b, 0x80a1, 0x4291, 0x83,0xb6, 0x33,0x28,0x36,0x6b,0x90,0x97)
 #endif
 #endif
 
+#ifndef __IBackgroundCopyCallback_FWD_DEFINED__
+#define __IBackgroundCopyCallback_FWD_DEFINED__
+typedef interface IBackgroundCopyCallback IBackgroundCopyCallback;
+#ifdef __cplusplus
+interface IBackgroundCopyCallback;
+#endif /* __cplusplus */
+#endif
+
+#endif /* __BackgroundCopyManager_LIBRARY_DEFINED__ */
 #include "bits1_5.h"
+/* Begin additional prototypes for all interfaces */
 
-  extern RPC_IF_HANDLE __MIDL_itf_bits_0015_v0_0_c_ifspec;
-  extern RPC_IF_HANDLE __MIDL_itf_bits_0015_v0_0_s_ifspec;
+
+/* End additional prototypes */
 
 #ifdef __cplusplus
 }
 #endif
-#endif
+
+#endif /* __bits_h__ */
diff --git a/mingw-w64-headers/include/bits.idl b/mingw-w64-headers/include/bits.idl
new file mode 100644
index 0000000..0e3362c
--- /dev/null
+++ b/mingw-w64-headers/include/bits.idl
@@ -0,0 +1,418 @@
+/*
+ * Background Intelligent Transfer Service (BITS) interface
+ *
+ * Copyright 2007 Google (Roy Shea)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifndef DO_NO_IMPORTS
+import "unknwn.idl";
+#endif
+
+cpp_quote("#include \"bitsmsg.h\"")
+cpp_quote("#define BG_SIZE_UNKNOWN (UINT64)(-1)")
+cpp_quote("#define BG_NOTIFY_JOB_TRANSFERRED 0x0001")
+cpp_quote("#define BG_NOTIFY_JOB_ERROR 0x0002")
+cpp_quote("#define BG_NOTIFY_DISABLE 0x0004")
+cpp_quote("#define BG_NOTIFY_JOB_MODIFICATION 0x0008")
+cpp_quote("#define BG_NOTIFY_FILE_TRANSFERRED 0x0010")
+
+cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
+cpp_quote("#undef EnumJobs")
+cpp_quote("#undef GetJob")
+cpp_quote("#endif")
+
+#define BG_ENUM_SIZEIS(maxcount) maxcount
+#define BG_ENUM_LENGTHIS(maxcount,lengthptr) lengthptr ? *lengthptr : maxcount
+
+[
+    uuid(01b7bd23-fb88-4a77-8490-5891d3e4653a),
+    odl
+]
+interface IBackgroundCopyFile : IUnknown
+{
+    typedef struct _BG_FILE_PROGRESS {
+        UINT64 BytesTotal;
+        UINT64 BytesTransferred;
+        BOOL Completed;
+    } BG_FILE_PROGRESS;
+
+    HRESULT GetRemoteName(
+            [out] LPWSTR *pVal
+    );
+
+    HRESULT GetLocalName(
+            [out] LPWSTR *pVal
+    );
+
+    HRESULT GetProgress(
+            [out] BG_FILE_PROGRESS *pVal
+    );
+}
+
+
+[
+    uuid(ca51e165-c365-424c-8d41-24aaa4ff3c40),
+    odl
+]
+interface IEnumBackgroundCopyFiles: IUnknown
+{
+    HRESULT Next(
+            [in] ULONG celt,
+            [out,size_is(BG_ENUM_SIZEIS(celt)),length_is(BG_ENUM_LENGTHIS(celt,pceltFetched))] IBackgroundCopyFile **rgelt,
+            [in,out,unique] ULONG *pceltFetched
+    );
+
+    HRESULT Skip(
+            [in] ULONG celt
+    );
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+            [out] IEnumBackgroundCopyFiles **ppenum
+    );
+
+    HRESULT GetCount(
+            [out] ULONG *puCount
+    );
+}
+
+
+[
+    uuid(19c613a0-fcb8-4f28-81ae-897c3d078f81),
+    odl
+]
+interface IBackgroundCopyError : IUnknown
+{
+    typedef enum {
+        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;
+
+    HRESULT GetError(
+            [out,ref] BG_ERROR_CONTEXT *pContext,
+            [out,ref] HRESULT *pCode
+    );
+
+    HRESULT GetFile(
+            [out] IBackgroundCopyFile **pVal
+    );
+
+    HRESULT GetErrorDescription(
+            [in] DWORD LanguageId,
+            [out,ref] LPWSTR *pErrorDescription
+    );
+
+    HRESULT GetErrorContextDescription(
+            [in] DWORD LanguageId,
+            [out,ref] LPWSTR *pContextDescription
+    );
+
+    HRESULT GetProtocol(
+            [out,ref] LPWSTR *pProtocol
+    );
+}
+
+
+
+[
+    uuid(37668d37-507e-4160-9316-26306d150b12),
+    odl
+]
+interface IBackgroundCopyJob : IUnknown
+{
+    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 {
+        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 {
+        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 {
+       BG_JOB_TYPE_DOWNLOAD = 0,
+       BG_JOB_TYPE_UPLOAD = 1,
+       BG_JOB_TYPE_UPLOAD_REPLY = 2
+    } BG_JOB_TYPE;
+
+    typedef enum {
+        BG_JOB_PROXY_USAGE_PRECONFIG,
+        BG_JOB_PROXY_USAGE_NO_PROXY,
+        BG_JOB_PROXY_USAGE_OVERRIDE,
+        BG_JOB_PROXY_USAGE_AUTODETECT
+    } BG_JOB_PROXY_USAGE;
+
+
+    HRESULT AddFileSet(
+            [in] ULONG cFileCount,
+            [in,size_is(cFileCount)] BG_FILE_INFO *pFileSet
+    );
+
+    HRESULT AddFile(
+            [in] LPCWSTR RemoteUrl,
+            [in] LPCWSTR LocalName
+    );
+
+    HRESULT EnumFiles(
+            [out] IEnumBackgroundCopyFiles **pEnum
+    );
+
+    HRESULT Suspend();
+
+    HRESULT Resume();
+
+    HRESULT Cancel();
+
+    HRESULT Complete();
+
+    HRESULT GetId(
+            [out] GUID *pVal
+    );
+
+    HRESULT GetType(
+            [out] BG_JOB_TYPE *pVal
+    );
+
+    HRESULT GetProgress(
+            [out] BG_JOB_PROGRESS *pVal
+    );
+
+    HRESULT GetTimes(
+            [out] BG_JOB_TIMES *pVal
+    );
+
+    HRESULT GetState(
+            [out] BG_JOB_STATE *pVal
+    );
+
+    HRESULT GetError(
+            [out] IBackgroundCopyError **ppError
+    );
+
+    HRESULT GetOwner(
+            [out] LPWSTR *pVal
+    );
+
+    HRESULT SetDisplayName(
+            [in] LPCWSTR Val
+    );
+
+    HRESULT GetDisplayName(
+            [out] LPWSTR *pVal
+    );
+
+    HRESULT SetDescription(
+            [in] LPCWSTR Val
+    );
+
+    HRESULT GetDescription(
+            [out] LPWSTR *pVal
+    );
+
+    HRESULT SetPriority(
+            [in] BG_JOB_PRIORITY Val
+    );
+
+    HRESULT GetPriority(
+            [out] BG_JOB_PRIORITY *pVal
+    );
+
+    HRESULT SetNotifyFlags(
+            [in] ULONG Val
+    );
+
+    HRESULT GetNotifyFlags(
+            [out] ULONG *pVal
+    );
+
+    HRESULT SetNotifyInterface(
+            [in] IUnknown *Val
+    );
+
+    HRESULT GetNotifyInterface(
+            [out] IUnknown ** pVal
+    );
+
+    HRESULT SetMinimumRetryDelay(
+            [in] ULONG Seconds
+    );
+
+    HRESULT GetMinimumRetryDelay(
+            [out] ULONG *Seconds
+    );
+
+    HRESULT SetNoProgressTimeout(
+            [in] ULONG Seconds
+    );
+
+    HRESULT GetNoProgressTimeout(
+            [out] ULONG *Seconds
+    );
+
+    HRESULT GetErrorCount(
+            [out] ULONG *Errors
+    );
+
+    HRESULT SetProxySettings(
+            [in] BG_JOB_PROXY_USAGE ProxyUsage,
+            [in,string,unique] const WCHAR *ProxyList,
+            [in,string,unique] const WCHAR *ProxyBypassList
+    );
+
+    HRESULT GetProxySettings(
+            [out] BG_JOB_PROXY_USAGE *pProxyUsage,
+            [out] LPWSTR *pProxyList,
+            [out] LPWSTR *pProxyBypassList
+    );
+
+    HRESULT TakeOwnership();
+}
+
+[
+    uuid(1af4f612-3b71-466f-8f58-7b6f73ac57ad),
+    odl
+]
+interface IEnumBackgroundCopyJobs : IUnknown
+{
+    HRESULT Next(
+            [in] ULONG celt,
+            [out,size_is(BG_ENUM_SIZEIS(celt)),length_is(BG_ENUM_LENGTHIS(celt,pceltFetched))] IBackgroundCopyJob **rgelt,
+            [in,out,unique] ULONG *pceltFetched
+    );
+
+    HRESULT Skip(
+            [in] ULONG celt
+    );
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+            [out] IEnumBackgroundCopyJobs **ppenum
+    );
+
+    HRESULT GetCount(
+            [out] ULONG *puCount
+    );
+}
+
+
+[
+    uuid(97ea99c7-0186-4ad4-8df9-c5b4e0ed6b22),
+    odl
+]
+interface IBackgroundCopyCallback : IUnknown
+{
+    HRESULT JobTransferred(
+            [in] IBackgroundCopyJob *pJob
+    );
+
+    HRESULT JobError(
+            [in] IBackgroundCopyJob *pJob,
+            [in] IBackgroundCopyError *pError
+    );
+
+    HRESULT JobModification(
+            [in] IBackgroundCopyJob *pJob,
+            [in] DWORD dwReserved
+    );
+}
+
+[
+    uuid(5ce34c0d-0dc9-4c1f-897c-daa1b78cee7c),
+    odl
+]
+interface IBackgroundCopyManager : IUnknown
+{
+    cpp_quote("#define BG_JOB_ENUM_ALL_USERS 0x0001")
+
+    HRESULT CreateJob(
+            [in] LPCWSTR DisplayName,
+            [in] BG_JOB_TYPE Type,
+            [out] GUID *pJobId,
+            [out] IBackgroundCopyJob **ppJob
+    );
+
+    HRESULT GetJob(
+            [in] REFGUID jobID,
+            [out] IBackgroundCopyJob **ppJob
+    );
+
+    HRESULT EnumJobs(
+            [in] DWORD dwFlags,
+            [out] IEnumBackgroundCopyJobs **ppEnum
+    );
+    HRESULT GetErrorDescription(
+            [in] HRESULT hResult,
+            [in] DWORD LanguageId,
+            [out] LPWSTR *pErrorDescription);
+}
+
+
+[
+    uuid(1deeb74f-7915-4560-b558-918c83f176a6),
+    version(1.0)
+]
+library BackgroundCopyManager
+{
+    [
+        uuid(4991d34b-80a1-4291-83b6-3328366b9097),
+    ]
+    coclass BackgroundCopyManager
+    {
+        [default] interface IBackgroundCopyManager;
+    };
+
+    interface IBackgroundCopyCallback;
+}
+
+cpp_quote("#include \"bits1_5.h\"")
diff --git a/mingw-w64-headers/include/bits1_5.h b/mingw-w64-headers/include/bits1_5.h
index 9824c0f..623ce31 100644
--- a/mingw-w64-headers/include/bits1_5.h
+++ b/mingw-w64-headers/include/bits1_5.h
@@ -1,30 +1,29 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
+/*** Autogenerated by WIDL 6.12 from include/bits1_5.idl - Do not edit ***/
+
+#ifdef _WIN32
 #ifndef __REQUIRED_RPCNDR_H_VERSION__
 #define __REQUIRED_RPCNDR_H_VERSION__ 475
 #endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
+#include <rpc.h>
+#include <rpcndr.h>
 #endif
 
 #ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
+#include <windows.h>
+#include <ole2.h>
 #endif
 
 #ifndef __bits1_5_h__
 #define __bits1_5_h__
 
+/* Forward declarations */
+
 #ifndef __IBackgroundCopyJob2_FWD_DEFINED__
 #define __IBackgroundCopyJob2_FWD_DEFINED__
-typedef struct IBackgroundCopyJob2 IBackgroundCopyJob2;
+typedef interface IBackgroundCopyJob2 IBackgroundCopyJob2;
+#ifdef __cplusplus
+interface IBackgroundCopyJob2;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __BackgroundCopyManager1_5_FWD_DEFINED__
@@ -33,130 +32,286 @@
 typedef class BackgroundCopyManager1_5 BackgroundCopyManager1_5;
 #else
 typedef struct BackgroundCopyManager1_5 BackgroundCopyManager1_5;
-#endif
-#endif
+#endif /* defined __cplusplus */
+#endif /* defined __BackgroundCopyManager1_5_FWD_DEFINED__ */
 
-#ifndef __IBackgroundCopyJob2_FWD_DEFINED__
-#define __IBackgroundCopyJob2_FWD_DEFINED__
-typedef struct IBackgroundCopyJob2 IBackgroundCopyJob2;
-#endif
+/* Headers for imported files */
 
-#include "bits.h"
+#include <bits.h>
 
 #ifdef __cplusplus
-extern "C"{
+extern "C" {
 #endif
 
-#ifndef __MIDL_user_allocate_free_DEFINED__
-#define __MIDL_user_allocate_free_DEFINED__
-  void *__RPC_API MIDL_user_allocate(size_t);
-  void __RPC_API MIDL_user_free(void *);
-#endif
-
+/*****************************************************************************
+ * IBackgroundCopyJob2 interface
+ */
 #ifndef __IBackgroundCopyJob2_INTERFACE_DEFINED__
 #define __IBackgroundCopyJob2_INTERFACE_DEFINED__
 
-  typedef struct _BG_JOB_REPLY_PROGRESS {
+typedef struct _BG_JOB_REPLY_PROGRESS {
     UINT64 BytesTotal;
     UINT64 BytesTransferred;
-  } BG_JOB_REPLY_PROGRESS;
-
-  typedef enum __MIDL_IBackgroundCopyJob2_0001 {
-    BG_AUTH_TARGET_SERVER = 1,BG_AUTH_TARGET_PROXY = BG_AUTH_TARGET_SERVER + 1
-  } BG_AUTH_TARGET;
-
-  typedef enum __MIDL_IBackgroundCopyJob2_0002 {
-    BG_AUTH_SCHEME_BASIC = 1,BG_AUTH_SCHEME_DIGEST,BG_AUTH_SCHEME_NTLM,
-    BG_AUTH_SCHEME_NEGOTIATE,BG_AUTH_SCHEME_PASSPORT
-  } BG_AUTH_SCHEME;
-
-  typedef struct __MIDL_IBackgroundCopyJob2_0003 {
+} BG_JOB_REPLY_PROGRESS;
+typedef enum __WIDL_bits1_5_generated_name_00000011 {
+    BG_AUTH_TARGET_SERVER = 1,
+    BG_AUTH_TARGET_PROXY = 2
+} BG_AUTH_TARGET;
+typedef enum __WIDL_bits1_5_generated_name_00000012 {
+    BG_AUTH_SCHEME_BASIC = 1,
+    BG_AUTH_SCHEME_DIGEST = 2,
+    BG_AUTH_SCHEME_NTLM = 3,
+    BG_AUTH_SCHEME_NEGOTIATE = 4,
+    BG_AUTH_SCHEME_PASSPORT = 5
+} BG_AUTH_SCHEME;
+typedef struct __WIDL_bits1_5_generated_name_00000013 {
     LPWSTR UserName;
     LPWSTR Password;
-  } BG_BASIC_CREDENTIALS;
-
-  typedef BG_BASIC_CREDENTIALS *PBG_BASIC_CREDENTIALS;
-
-  typedef union __MIDL_IBackgroundCopyJob2_0004 {
+} BG_BASIC_CREDENTIALS;
+typedef BG_BASIC_CREDENTIALS *PBG_BASIC_CREDENTIALS;
+typedef union __WIDL_bits1_5_generated_name_00000014 {
     BG_BASIC_CREDENTIALS Basic;
-  } BG_AUTH_CREDENTIALS_UNION;
-
-  typedef struct __MIDL_IBackgroundCopyJob2_0005 {
+} BG_AUTH_CREDENTIALS_UNION;
+typedef struct __WIDL_bits1_5_generated_name_00000015 {
     BG_AUTH_TARGET Target;
     BG_AUTH_SCHEME Scheme;
     BG_AUTH_CREDENTIALS_UNION Credentials;
-  } BG_AUTH_CREDENTIALS;
-
-  typedef BG_AUTH_CREDENTIALS *PBG_AUTH_CREDENTIALS;
-
-  EXTERN_C const IID IID_IBackgroundCopyJob2;
+} BG_AUTH_CREDENTIALS;
+typedef BG_AUTH_CREDENTIALS *PBG_AUTH_CREDENTIALS;
+DEFINE_GUID(IID_IBackgroundCopyJob2, 0x54b50739, 0x686f, 0x45eb, 0x9d,0xff, 0xd6,0xa9,0xa0,0xfa,0xa9,0xaf);
 #if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IBackgroundCopyJob2 : public IBackgroundCopyJob {
-  public:
-    virtual HRESULT WINAPI SetNotifyCmdLine(LPCWSTR Program,LPCWSTR Parameters) = 0;
-    virtual HRESULT WINAPI GetNotifyCmdLine(LPWSTR *pProgram,LPWSTR *pParameters) = 0;
-    virtual HRESULT WINAPI GetReplyProgress(BG_JOB_REPLY_PROGRESS *pProgress) = 0;
-    virtual HRESULT WINAPI GetReplyData(byte **ppBuffer,UINT64 *pLength) = 0;
-    virtual HRESULT WINAPI SetReplyFileName(LPCWSTR ReplyFileName) = 0;
-    virtual HRESULT WINAPI GetReplyFileName(LPWSTR *pReplyFileName) = 0;
-    virtual HRESULT WINAPI SetCredentials(BG_AUTH_CREDENTIALS *credentials) = 0;
-    virtual HRESULT WINAPI RemoveCredentials(BG_AUTH_TARGET Target,BG_AUTH_SCHEME Scheme) = 0;
-  };
+MIDL_INTERFACE("54b50739-686f-45eb-9dff-d6a9a0faa9af")
+IBackgroundCopyJob2 : public IBackgroundCopyJob
+{
+    virtual HRESULT STDMETHODCALLTYPE SetNotifyCmdLine(
+        LPCWSTR prog,
+        LPCWSTR params) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetNotifyCmdLine(
+        LPWSTR *prog,
+        LPWSTR *params) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetReplyProgress(
+        BG_JOB_REPLY_PROGRESS *progress) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetReplyData(
+        byte **pBuffer,
+        UINT64 *pLength) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetReplyFileName(
+        LPCWSTR filename) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetReplyFileName(
+        LPWSTR *pFilename) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetCredentials(
+        BG_AUTH_CREDENTIALS *cred) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveCredentials(
+        BG_AUTH_TARGET target,
+        BG_AUTH_SCHEME scheme) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyJob2, 0x54b50739, 0x686f, 0x45eb, 0x9d,0xff, 0xd6,0xa9,0xa0,0xfa,0xa9,0xaf)
+#endif
 #else
-  typedef struct IBackgroundCopyJob2Vtbl {
+typedef struct IBackgroundCopyJob2Vtbl {
     BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IBackgroundCopyJob2 *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IBackgroundCopyJob2 *This);
-      ULONG (WINAPI *Release)(IBackgroundCopyJob2 *This);
-      HRESULT (WINAPI *AddFileSet)(IBackgroundCopyJob2 *This,ULONG cFileCount,BG_FILE_INFO *pFileSet);
-      HRESULT (WINAPI *AddFile)(IBackgroundCopyJob2 *This,LPCWSTR RemoteUrl,LPCWSTR LocalName);
-      HRESULT (WINAPI *EnumFiles)(IBackgroundCopyJob2 *This,IEnumBackgroundCopyFiles **pEnum);
-      HRESULT (WINAPI *Suspend)(IBackgroundCopyJob2 *This);
-      HRESULT (WINAPI *Resume)(IBackgroundCopyJob2 *This);
-      HRESULT (WINAPI *Cancel)(IBackgroundCopyJob2 *This);
-      HRESULT (WINAPI *Complete)(IBackgroundCopyJob2 *This);
-      HRESULT (WINAPI *GetId)(IBackgroundCopyJob2 *This,GUID *pVal);
-      HRESULT (WINAPI *GetType)(IBackgroundCopyJob2 *This,BG_JOB_TYPE *pVal);
-      HRESULT (WINAPI *GetProgress)(IBackgroundCopyJob2 *This,BG_JOB_PROGRESS *pVal);
-      HRESULT (WINAPI *GetTimes)(IBackgroundCopyJob2 *This,BG_JOB_TIMES *pVal);
-      HRESULT (WINAPI *GetState)(IBackgroundCopyJob2 *This,BG_JOB_STATE *pVal);
-      HRESULT (WINAPI *GetError)(IBackgroundCopyJob2 *This,IBackgroundCopyError **ppError);
-      HRESULT (WINAPI *GetOwner)(IBackgroundCopyJob2 *This,LPWSTR *pVal);
-      HRESULT (WINAPI *SetDisplayName)(IBackgroundCopyJob2 *This,LPCWSTR Val);
-      HRESULT (WINAPI *GetDisplayName)(IBackgroundCopyJob2 *This,LPWSTR *pVal);
-      HRESULT (WINAPI *SetDescription)(IBackgroundCopyJob2 *This,LPCWSTR Val);
-      HRESULT (WINAPI *GetDescription)(IBackgroundCopyJob2 *This,LPWSTR *pVal);
-      HRESULT (WINAPI *SetPriority)(IBackgroundCopyJob2 *This,BG_JOB_PRIORITY Val);
-      HRESULT (WINAPI *GetPriority)(IBackgroundCopyJob2 *This,BG_JOB_PRIORITY *pVal);
-      HRESULT (WINAPI *SetNotifyFlags)(IBackgroundCopyJob2 *This,ULONG Val);
-      HRESULT (WINAPI *GetNotifyFlags)(IBackgroundCopyJob2 *This,ULONG *pVal);
-      HRESULT (WINAPI *SetNotifyInterface)(IBackgroundCopyJob2 *This,IUnknown *Val);
-      HRESULT (WINAPI *GetNotifyInterface)(IBackgroundCopyJob2 *This,IUnknown **pVal);
-      HRESULT (WINAPI *SetMinimumRetryDelay)(IBackgroundCopyJob2 *This,ULONG Seconds);
-      HRESULT (WINAPI *GetMinimumRetryDelay)(IBackgroundCopyJob2 *This,ULONG *Seconds);
-      HRESULT (WINAPI *SetNoProgressTimeout)(IBackgroundCopyJob2 *This,ULONG Seconds);
-      HRESULT (WINAPI *GetNoProgressTimeout)(IBackgroundCopyJob2 *This,ULONG *Seconds);
-      HRESULT (WINAPI *GetErrorCount)(IBackgroundCopyJob2 *This,ULONG *Errors);
-      HRESULT (WINAPI *SetProxySettings)(IBackgroundCopyJob2 *This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList);
-      HRESULT (WINAPI *GetProxySettings)(IBackgroundCopyJob2 *This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList);
-      HRESULT (WINAPI *TakeOwnership)(IBackgroundCopyJob2 *This);
-      HRESULT (WINAPI *SetNotifyCmdLine)(IBackgroundCopyJob2 *This,LPCWSTR Program,LPCWSTR Parameters);
-      HRESULT (WINAPI *GetNotifyCmdLine)(IBackgroundCopyJob2 *This,LPWSTR *pProgram,LPWSTR *pParameters);
-      HRESULT (WINAPI *GetReplyProgress)(IBackgroundCopyJob2 *This,BG_JOB_REPLY_PROGRESS *pProgress);
-      HRESULT (WINAPI *GetReplyData)(IBackgroundCopyJob2 *This,byte **ppBuffer,UINT64 *pLength);
-      HRESULT (WINAPI *SetReplyFileName)(IBackgroundCopyJob2 *This,LPCWSTR ReplyFileName);
-      HRESULT (WINAPI *GetReplyFileName)(IBackgroundCopyJob2 *This,LPWSTR *pReplyFileName);
-      HRESULT (WINAPI *SetCredentials)(IBackgroundCopyJob2 *This,BG_AUTH_CREDENTIALS *credentials);
-      HRESULT (WINAPI *RemoveCredentials)(IBackgroundCopyJob2 *This,BG_AUTH_TARGET Target,BG_AUTH_SCHEME Scheme);
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBackgroundCopyJob2 *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBackgroundCopyJob2 *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBackgroundCopyJob2 *This);
+
+    /*** IBackgroundCopyJob methods ***/
+    HRESULT (STDMETHODCALLTYPE *AddFileSet)(
+        IBackgroundCopyJob2 *This,
+        ULONG cFileCount,
+        BG_FILE_INFO *pFileSet);
+
+    HRESULT (STDMETHODCALLTYPE *AddFile)(
+        IBackgroundCopyJob2 *This,
+        LPCWSTR RemoteUrl,
+        LPCWSTR LocalName);
+
+    HRESULT (STDMETHODCALLTYPE *EnumFiles)(
+        IBackgroundCopyJob2 *This,
+        IEnumBackgroundCopyFiles **pEnum);
+
+    HRESULT (STDMETHODCALLTYPE *Suspend)(
+        IBackgroundCopyJob2 *This);
+
+    HRESULT (STDMETHODCALLTYPE *Resume)(
+        IBackgroundCopyJob2 *This);
+
+    HRESULT (STDMETHODCALLTYPE *Cancel)(
+        IBackgroundCopyJob2 *This);
+
+    HRESULT (STDMETHODCALLTYPE *Complete)(
+        IBackgroundCopyJob2 *This);
+
+    HRESULT (STDMETHODCALLTYPE *GetId)(
+        IBackgroundCopyJob2 *This,
+        GUID *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetType)(
+        IBackgroundCopyJob2 *This,
+        BG_JOB_TYPE *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetProgress)(
+        IBackgroundCopyJob2 *This,
+        BG_JOB_PROGRESS *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetTimes)(
+        IBackgroundCopyJob2 *This,
+        BG_JOB_TIMES *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetState)(
+        IBackgroundCopyJob2 *This,
+        BG_JOB_STATE *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetError)(
+        IBackgroundCopyJob2 *This,
+        IBackgroundCopyError **ppError);
+
+    HRESULT (STDMETHODCALLTYPE *GetOwner)(
+        IBackgroundCopyJob2 *This,
+        LPWSTR *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetDisplayName)(
+        IBackgroundCopyJob2 *This,
+        LPCWSTR Val);
+
+    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
+        IBackgroundCopyJob2 *This,
+        LPWSTR *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetDescription)(
+        IBackgroundCopyJob2 *This,
+        LPCWSTR Val);
+
+    HRESULT (STDMETHODCALLTYPE *GetDescription)(
+        IBackgroundCopyJob2 *This,
+        LPWSTR *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetPriority)(
+        IBackgroundCopyJob2 *This,
+        BG_JOB_PRIORITY Val);
+
+    HRESULT (STDMETHODCALLTYPE *GetPriority)(
+        IBackgroundCopyJob2 *This,
+        BG_JOB_PRIORITY *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetNotifyFlags)(
+        IBackgroundCopyJob2 *This,
+        ULONG Val);
+
+    HRESULT (STDMETHODCALLTYPE *GetNotifyFlags)(
+        IBackgroundCopyJob2 *This,
+        ULONG *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetNotifyInterface)(
+        IBackgroundCopyJob2 *This,
+        IUnknown *Val);
+
+    HRESULT (STDMETHODCALLTYPE *GetNotifyInterface)(
+        IBackgroundCopyJob2 *This,
+        IUnknown **pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetMinimumRetryDelay)(
+        IBackgroundCopyJob2 *This,
+        ULONG Seconds);
+
+    HRESULT (STDMETHODCALLTYPE *GetMinimumRetryDelay)(
+        IBackgroundCopyJob2 *This,
+        ULONG *Seconds);
+
+    HRESULT (STDMETHODCALLTYPE *SetNoProgressTimeout)(
+        IBackgroundCopyJob2 *This,
+        ULONG Seconds);
+
+    HRESULT (STDMETHODCALLTYPE *GetNoProgressTimeout)(
+        IBackgroundCopyJob2 *This,
+        ULONG *Seconds);
+
+    HRESULT (STDMETHODCALLTYPE *GetErrorCount)(
+        IBackgroundCopyJob2 *This,
+        ULONG *Errors);
+
+    HRESULT (STDMETHODCALLTYPE *SetProxySettings)(
+        IBackgroundCopyJob2 *This,
+        BG_JOB_PROXY_USAGE ProxyUsage,
+        const WCHAR *ProxyList,
+        const WCHAR *ProxyBypassList);
+
+    HRESULT (STDMETHODCALLTYPE *GetProxySettings)(
+        IBackgroundCopyJob2 *This,
+        BG_JOB_PROXY_USAGE *pProxyUsage,
+        LPWSTR *pProxyList,
+        LPWSTR *pProxyBypassList);
+
+    HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
+        IBackgroundCopyJob2 *This);
+
+    /*** IBackgroundCopyJob2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetNotifyCmdLine)(
+        IBackgroundCopyJob2 *This,
+        LPCWSTR prog,
+        LPCWSTR params);
+
+    HRESULT (STDMETHODCALLTYPE *GetNotifyCmdLine)(
+        IBackgroundCopyJob2 *This,
+        LPWSTR *prog,
+        LPWSTR *params);
+
+    HRESULT (STDMETHODCALLTYPE *GetReplyProgress)(
+        IBackgroundCopyJob2 *This,
+        BG_JOB_REPLY_PROGRESS *progress);
+
+    HRESULT (STDMETHODCALLTYPE *GetReplyData)(
+        IBackgroundCopyJob2 *This,
+        byte **pBuffer,
+        UINT64 *pLength);
+
+    HRESULT (STDMETHODCALLTYPE *SetReplyFileName)(
+        IBackgroundCopyJob2 *This,
+        LPCWSTR filename);
+
+    HRESULT (STDMETHODCALLTYPE *GetReplyFileName)(
+        IBackgroundCopyJob2 *This,
+        LPWSTR *pFilename);
+
+    HRESULT (STDMETHODCALLTYPE *SetCredentials)(
+        IBackgroundCopyJob2 *This,
+        BG_AUTH_CREDENTIALS *cred);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveCredentials)(
+        IBackgroundCopyJob2 *This,
+        BG_AUTH_TARGET target,
+        BG_AUTH_SCHEME scheme);
+
     END_INTERFACE
-  } IBackgroundCopyJob2Vtbl;
-  struct IBackgroundCopyJob2 {
-    CONST_VTBL struct IBackgroundCopyJob2Vtbl *lpVtbl;
-  };
+} IBackgroundCopyJob2Vtbl;
+
+interface IBackgroundCopyJob2 {
+    CONST_VTBL IBackgroundCopyJob2Vtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IBackgroundCopyJob2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IBackgroundCopyJob2_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IBackgroundCopyJob2_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyJob methods ***/
 #define IBackgroundCopyJob2_AddFileSet(This,cFileCount,pFileSet) (This)->lpVtbl->AddFileSet(This,cFileCount,pFileSet)
 #define IBackgroundCopyJob2_AddFile(This,RemoteUrl,LocalName) (This)->lpVtbl->AddFile(This,RemoteUrl,LocalName)
 #define IBackgroundCopyJob2_EnumFiles(This,pEnum) (This)->lpVtbl->EnumFiles(This,pEnum)
@@ -189,49 +344,199 @@
 #define IBackgroundCopyJob2_SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList) (This)->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList)
 #define IBackgroundCopyJob2_GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList) (This)->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList)
 #define IBackgroundCopyJob2_TakeOwnership(This) (This)->lpVtbl->TakeOwnership(This)
-#define IBackgroundCopyJob2_SetNotifyCmdLine(This,Program,Parameters) (This)->lpVtbl->SetNotifyCmdLine(This,Program,Parameters)
-#define IBackgroundCopyJob2_GetNotifyCmdLine(This,pProgram,pParameters) (This)->lpVtbl->GetNotifyCmdLine(This,pProgram,pParameters)
-#define IBackgroundCopyJob2_GetReplyProgress(This,pProgress) (This)->lpVtbl->GetReplyProgress(This,pProgress)
-#define IBackgroundCopyJob2_GetReplyData(This,ppBuffer,pLength) (This)->lpVtbl->GetReplyData(This,ppBuffer,pLength)
-#define IBackgroundCopyJob2_SetReplyFileName(This,ReplyFileName) (This)->lpVtbl->SetReplyFileName(This,ReplyFileName)
-#define IBackgroundCopyJob2_GetReplyFileName(This,pReplyFileName) (This)->lpVtbl->GetReplyFileName(This,pReplyFileName)
-#define IBackgroundCopyJob2_SetCredentials(This,credentials) (This)->lpVtbl->SetCredentials(This,credentials)
-#define IBackgroundCopyJob2_RemoveCredentials(This,Target,Scheme) (This)->lpVtbl->RemoveCredentials(This,Target,Scheme)
+/*** IBackgroundCopyJob2 methods ***/
+#define IBackgroundCopyJob2_SetNotifyCmdLine(This,prog,params) (This)->lpVtbl->SetNotifyCmdLine(This,prog,params)
+#define IBackgroundCopyJob2_GetNotifyCmdLine(This,prog,params) (This)->lpVtbl->GetNotifyCmdLine(This,prog,params)
+#define IBackgroundCopyJob2_GetReplyProgress(This,progress) (This)->lpVtbl->GetReplyProgress(This,progress)
+#define IBackgroundCopyJob2_GetReplyData(This,pBuffer,pLength) (This)->lpVtbl->GetReplyData(This,pBuffer,pLength)
+#define IBackgroundCopyJob2_SetReplyFileName(This,filename) (This)->lpVtbl->SetReplyFileName(This,filename)
+#define IBackgroundCopyJob2_GetReplyFileName(This,pFilename) (This)->lpVtbl->GetReplyFileName(This,pFilename)
+#define IBackgroundCopyJob2_SetCredentials(This,cred) (This)->lpVtbl->SetCredentials(This,cred)
+#define IBackgroundCopyJob2_RemoveCredentials(This,target,scheme) (This)->lpVtbl->RemoveCredentials(This,target,scheme)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob2_QueryInterface(IBackgroundCopyJob2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob2_AddRef(IBackgroundCopyJob2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob2_Release(IBackgroundCopyJob2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyJob methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob2_AddFileSet(IBackgroundCopyJob2* This,ULONG cFileCount,BG_FILE_INFO *pFileSet) {
+    return This->lpVtbl->AddFileSet(This,cFileCount,pFileSet);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_AddFile(IBackgroundCopyJob2* This,LPCWSTR RemoteUrl,LPCWSTR LocalName) {
+    return This->lpVtbl->AddFile(This,RemoteUrl,LocalName);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_EnumFiles(IBackgroundCopyJob2* This,IEnumBackgroundCopyFiles **pEnum) {
+    return This->lpVtbl->EnumFiles(This,pEnum);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_Suspend(IBackgroundCopyJob2* This) {
+    return This->lpVtbl->Suspend(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_Resume(IBackgroundCopyJob2* This) {
+    return This->lpVtbl->Resume(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_Cancel(IBackgroundCopyJob2* This) {
+    return This->lpVtbl->Cancel(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_Complete(IBackgroundCopyJob2* This) {
+    return This->lpVtbl->Complete(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetId(IBackgroundCopyJob2* This,GUID *pVal) {
+    return This->lpVtbl->GetId(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetType(IBackgroundCopyJob2* This,BG_JOB_TYPE *pVal) {
+    return This->lpVtbl->GetType(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetProgress(IBackgroundCopyJob2* This,BG_JOB_PROGRESS *pVal) {
+    return This->lpVtbl->GetProgress(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetTimes(IBackgroundCopyJob2* This,BG_JOB_TIMES *pVal) {
+    return This->lpVtbl->GetTimes(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetState(IBackgroundCopyJob2* This,BG_JOB_STATE *pVal) {
+    return This->lpVtbl->GetState(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetError(IBackgroundCopyJob2* This,IBackgroundCopyError **ppError) {
+    return This->lpVtbl->GetError(This,ppError);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetOwner(IBackgroundCopyJob2* This,LPWSTR *pVal) {
+    return This->lpVtbl->GetOwner(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetDisplayName(IBackgroundCopyJob2* This,LPCWSTR Val) {
+    return This->lpVtbl->SetDisplayName(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetDisplayName(IBackgroundCopyJob2* This,LPWSTR *pVal) {
+    return This->lpVtbl->GetDisplayName(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetDescription(IBackgroundCopyJob2* This,LPCWSTR Val) {
+    return This->lpVtbl->SetDescription(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetDescription(IBackgroundCopyJob2* This,LPWSTR *pVal) {
+    return This->lpVtbl->GetDescription(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetPriority(IBackgroundCopyJob2* This,BG_JOB_PRIORITY Val) {
+    return This->lpVtbl->SetPriority(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetPriority(IBackgroundCopyJob2* This,BG_JOB_PRIORITY *pVal) {
+    return This->lpVtbl->GetPriority(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetNotifyFlags(IBackgroundCopyJob2* This,ULONG Val) {
+    return This->lpVtbl->SetNotifyFlags(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetNotifyFlags(IBackgroundCopyJob2* This,ULONG *pVal) {
+    return This->lpVtbl->GetNotifyFlags(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetNotifyInterface(IBackgroundCopyJob2* This,IUnknown *Val) {
+    return This->lpVtbl->SetNotifyInterface(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetNotifyInterface(IBackgroundCopyJob2* This,IUnknown **pVal) {
+    return This->lpVtbl->GetNotifyInterface(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetMinimumRetryDelay(IBackgroundCopyJob2* This,ULONG Seconds) {
+    return This->lpVtbl->SetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetMinimumRetryDelay(IBackgroundCopyJob2* This,ULONG *Seconds) {
+    return This->lpVtbl->GetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetNoProgressTimeout(IBackgroundCopyJob2* This,ULONG Seconds) {
+    return This->lpVtbl->SetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetNoProgressTimeout(IBackgroundCopyJob2* This,ULONG *Seconds) {
+    return This->lpVtbl->GetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetErrorCount(IBackgroundCopyJob2* This,ULONG *Errors) {
+    return This->lpVtbl->GetErrorCount(This,Errors);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetProxySettings(IBackgroundCopyJob2* This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList) {
+    return This->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetProxySettings(IBackgroundCopyJob2* This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList) {
+    return This->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_TakeOwnership(IBackgroundCopyJob2* This) {
+    return This->lpVtbl->TakeOwnership(This);
+}
+/*** IBackgroundCopyJob2 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetNotifyCmdLine(IBackgroundCopyJob2* This,LPCWSTR prog,LPCWSTR params) {
+    return This->lpVtbl->SetNotifyCmdLine(This,prog,params);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetNotifyCmdLine(IBackgroundCopyJob2* This,LPWSTR *prog,LPWSTR *params) {
+    return This->lpVtbl->GetNotifyCmdLine(This,prog,params);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetReplyProgress(IBackgroundCopyJob2* This,BG_JOB_REPLY_PROGRESS *progress) {
+    return This->lpVtbl->GetReplyProgress(This,progress);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetReplyData(IBackgroundCopyJob2* This,byte **pBuffer,UINT64 *pLength) {
+    return This->lpVtbl->GetReplyData(This,pBuffer,pLength);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetReplyFileName(IBackgroundCopyJob2* This,LPCWSTR filename) {
+    return This->lpVtbl->SetReplyFileName(This,filename);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetReplyFileName(IBackgroundCopyJob2* This,LPWSTR *pFilename) {
+    return This->lpVtbl->GetReplyFileName(This,pFilename);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetCredentials(IBackgroundCopyJob2* This,BG_AUTH_CREDENTIALS *cred) {
+    return This->lpVtbl->SetCredentials(This,cred);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_RemoveCredentials(IBackgroundCopyJob2* This,BG_AUTH_TARGET target,BG_AUTH_SCHEME scheme) {
+    return This->lpVtbl->RemoveCredentials(This,target,scheme);
+}
 #endif
 #endif
-  HRESULT WINAPI IBackgroundCopyJob2_SetNotifyCmdLine_Proxy(IBackgroundCopyJob2 *This,LPCWSTR Program,LPCWSTR Parameters);
-  void __RPC_STUB IBackgroundCopyJob2_SetNotifyCmdLine_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob2_GetNotifyCmdLine_Proxy(IBackgroundCopyJob2 *This,LPWSTR *pProgram,LPWSTR *pParameters);
-  void __RPC_STUB IBackgroundCopyJob2_GetNotifyCmdLine_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob2_GetReplyProgress_Proxy(IBackgroundCopyJob2 *This,BG_JOB_REPLY_PROGRESS *pProgress);
-  void __RPC_STUB IBackgroundCopyJob2_GetReplyProgress_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob2_GetReplyData_Proxy(IBackgroundCopyJob2 *This,byte **ppBuffer,UINT64 *pLength);
-  void __RPC_STUB IBackgroundCopyJob2_GetReplyData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob2_SetReplyFileName_Proxy(IBackgroundCopyJob2 *This,LPCWSTR ReplyFileName);
-  void __RPC_STUB IBackgroundCopyJob2_SetReplyFileName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob2_GetReplyFileName_Proxy(IBackgroundCopyJob2 *This,LPWSTR *pReplyFileName);
-  void __RPC_STUB IBackgroundCopyJob2_GetReplyFileName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob2_SetCredentials_Proxy(IBackgroundCopyJob2 *This,BG_AUTH_CREDENTIALS *credentials);
-  void __RPC_STUB IBackgroundCopyJob2_SetCredentials_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob2_RemoveCredentials_Proxy(IBackgroundCopyJob2 *This,BG_AUTH_TARGET Target,BG_AUTH_SCHEME Scheme);
-  void __RPC_STUB IBackgroundCopyJob2_RemoveCredentials_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+
 #endif
 
+
+#endif  /* __IBackgroundCopyJob2_INTERFACE_DEFINED__ */
+
 #ifndef __BackgroundCopyManager1_5_LIBRARY_DEFINED__
 #define __BackgroundCopyManager1_5_LIBRARY_DEFINED__
-  EXTERN_C const IID LIBID_BackgroundCopyManager1_5;
-  EXTERN_C const CLSID CLSID_BackgroundCopyManager1_5;
+
+DEFINE_GUID(LIBID_BackgroundCopyManager1_5, 0xea9319ea, 0xc628, 0x480f, 0x83,0x31, 0x76,0x8f,0xac,0x39,0x7e,0x4e);
+
+/*****************************************************************************
+ * BackgroundCopyManager1_5 coclass
+ */
+
+DEFINE_GUID(CLSID_BackgroundCopyManager1_5, 0xf087771f, 0xd74f, 0x4c1a, 0xbb,0x8a, 0xe1,0x6a,0xca,0x91,0x24,0xea);
+
 #ifdef __cplusplus
-  class BackgroundCopyManager1_5;
+class DECLSPEC_UUID("f087771f-d74f-4c1a-bb8a-e16aca9124ea") BackgroundCopyManager1_5;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(BackgroundCopyManager1_5, 0xf087771f, 0xd74f, 0x4c1a, 0xbb,0x8a, 0xe1,0x6a,0xca,0x91,0x24,0xea)
 #endif
 #endif
 
+#ifndef __IBackgroundCopyCallback_FWD_DEFINED__
+#define __IBackgroundCopyCallback_FWD_DEFINED__
+typedef interface IBackgroundCopyCallback IBackgroundCopyCallback;
+#ifdef __cplusplus
+interface IBackgroundCopyCallback;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IBackgroundCopyJob2_FWD_DEFINED__
+#define __IBackgroundCopyJob2_FWD_DEFINED__
+typedef interface IBackgroundCopyJob2 IBackgroundCopyJob2;
+#ifdef __cplusplus
+interface IBackgroundCopyJob2;
+#endif /* __cplusplus */
+#endif
+
+#endif /* __BackgroundCopyManager1_5_LIBRARY_DEFINED__ */
 #include "bits2_0.h"
+/* Begin additional prototypes for all interfaces */
 
-  extern RPC_IF_HANDLE __MIDL_itf_bits1_5_0124_v0_0_c_ifspec;
-  extern RPC_IF_HANDLE __MIDL_itf_bits1_5_0124_v0_0_s_ifspec;
+
+/* End additional prototypes */
 
 #ifdef __cplusplus
 }
 #endif
-#endif
+
+#endif /* __bits1_5_h__ */
diff --git a/mingw-w64-headers/include/bits1_5.idl b/mingw-w64-headers/include/bits1_5.idl
new file mode 100644
index 0000000..5c3523e
--- /dev/null
+++ b/mingw-w64-headers/include/bits1_5.idl
@@ -0,0 +1,109 @@
+/*
+ * Background Intelligent Transfer Service (BITS) 1.5 interface
+ *
+ * Copyright 2008 Google (Dan Hipschman)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifndef DO_NO_IMPORTS
+import "bits.idl";
+#endif
+
+[
+    uuid(54b50739-686f-45eb-9dff-d6a9a0faa9af),
+    odl
+]
+interface IBackgroundCopyJob2 : IBackgroundCopyJob
+{
+    HRESULT SetNotifyCmdLine([unique] LPCWSTR prog, [unique] LPCWSTR params);
+    HRESULT GetNotifyCmdLine([out] LPWSTR *prog, [out] LPWSTR *params);
+
+    typedef struct _BG_JOB_REPLY_PROGRESS
+    {
+        UINT64 BytesTotal;
+        UINT64 BytesTransferred;
+    } BG_JOB_REPLY_PROGRESS;
+
+    HRESULT GetReplyProgress([in, out] BG_JOB_REPLY_PROGRESS *progress);
+    HRESULT GetReplyData([out, size_is( , (unsigned long) *pLength)] byte **pBuffer,
+                         [in, out, unique] UINT64 *pLength);
+    HRESULT SetReplyFileName([unique] LPCWSTR filename);
+    HRESULT GetReplyFileName([out] LPWSTR *pFilename);
+
+    typedef enum
+    {
+        BG_AUTH_TARGET_SERVER = 1,
+        BG_AUTH_TARGET_PROXY
+    } BG_AUTH_TARGET;
+
+    typedef enum
+    {
+        BG_AUTH_SCHEME_BASIC = 1,
+        BG_AUTH_SCHEME_DIGEST,
+        BG_AUTH_SCHEME_NTLM,
+        BG_AUTH_SCHEME_NEGOTIATE,
+        BG_AUTH_SCHEME_PASSPORT
+    } BG_AUTH_SCHEME;
+
+    typedef struct
+    {
+        LPWSTR UserName;
+        LPWSTR Password;
+    } BG_BASIC_CREDENTIALS;
+    typedef BG_BASIC_CREDENTIALS *PBG_BASIC_CREDENTIALS;
+
+    typedef [switch_type(BG_AUTH_SCHEME)] union
+    {
+        [case(BG_AUTH_SCHEME_BASIC, BG_AUTH_SCHEME_DIGEST, BG_AUTH_SCHEME_NTLM,
+              BG_AUTH_SCHEME_NEGOTIATE, BG_AUTH_SCHEME_PASSPORT)]
+        BG_BASIC_CREDENTIALS Basic;
+        [default]
+        ;
+    } BG_AUTH_CREDENTIALS_UNION;
+
+    typedef struct
+    {
+        BG_AUTH_TARGET Target;
+        BG_AUTH_SCHEME Scheme;
+        [switch_is(Scheme)] BG_AUTH_CREDENTIALS_UNION Credentials;
+    } BG_AUTH_CREDENTIALS;
+    typedef BG_AUTH_CREDENTIALS *PBG_AUTH_CREDENTIALS;
+
+    HRESULT SetCredentials(BG_AUTH_CREDENTIALS *cred);
+    HRESULT RemoveCredentials(BG_AUTH_TARGET target, BG_AUTH_SCHEME scheme);
+}
+
+[
+    uuid(ea9319ea-c628-480f-8331-768fac397e4e),
+    lcid(0x0000),
+    version(1.0)
+]
+library BackgroundCopyManager1_5
+{
+    [
+        uuid(f087771f-d74f-4c1a-bb8a-e16aca9124ea)
+    ]
+    coclass BackgroundCopyManager1_5
+    {
+        [default] interface IBackgroundCopyManager;
+    };
+
+    interface IBackgroundCopyCallback;
+    interface IBackgroundCopyJob2;
+}
+
+cpp_quote("#include \"bits2_0.h\"")
diff --git a/mingw-w64-headers/include/bits2_0.h b/mingw-w64-headers/include/bits2_0.h
index a9364cf..fa710fe 100644
--- a/mingw-w64-headers/include/bits2_0.h
+++ b/mingw-w64-headers/include/bits2_0.h
@@ -1,34 +1,37 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
+/*** Autogenerated by WIDL 6.12 from 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"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
+#include <rpc.h>
+#include <rpcndr.h>
 #endif
 
 #ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.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 struct IBackgroundCopyJob3 IBackgroundCopyJob3;
+typedef interface IBackgroundCopyJob3 IBackgroundCopyJob3;
+#ifdef __cplusplus
+interface IBackgroundCopyJob3;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __IBackgroundCopyFile2_FWD_DEFINED__
 #define __IBackgroundCopyFile2_FWD_DEFINED__
-typedef struct IBackgroundCopyFile2 IBackgroundCopyFile2;
+typedef interface IBackgroundCopyFile2 IBackgroundCopyFile2;
+#ifdef __cplusplus
+interface IBackgroundCopyFile2;
+#endif /* __cplusplus */
 #endif
 
 #ifndef __BackgroundCopyManager2_0_FWD_DEFINED__
@@ -37,220 +40,648 @@
 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__ */
+
+#ifndef __BackgroundCopyManager2_0_LIBRARY_DEFINED__
+#define __BackgroundCopyManager2_0_LIBRARY_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 struct IBackgroundCopyJob3 IBackgroundCopyJob3;
-#endif
-
-#include "bits.h"
-#include "bits1_5.h"
-
+typedef interface IBackgroundCopyJob3 IBackgroundCopyJob3;
 #ifdef __cplusplus
-extern "C"{
+interface IBackgroundCopyJob3;
+#endif /* __cplusplus */
 #endif
 
-#ifndef __MIDL_user_allocate_free_DEFINED__
-#define __MIDL_user_allocate_free_DEFINED__
-  void *__RPC_API MIDL_user_allocate(size_t);
-  void __RPC_API MIDL_user_free(void *);
-#endif
-
-#define BG_LENGTH_TO_EOF (UINT64)(-1)
-  typedef struct _BG_FILE_RANGE {
-    UINT64 InitialOffset;
-    UINT64 Length;
-  } BG_FILE_RANGE;
-
-#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
-
-  extern RPC_IF_HANDLE __MIDL_itf_bits2_0_0000_v0_0_c_ifspec;
-  extern RPC_IF_HANDLE __MIDL_itf_bits2_0_0000_v0_0_s_ifspec;
-
-#ifndef __IBackgroundCopyJob3_INTERFACE_DEFINED__
-#define __IBackgroundCopyJob3_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_IBackgroundCopyJob3;
-#if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IBackgroundCopyJob3 : public IBackgroundCopyJob2 {
-  public:
-    virtual HRESULT WINAPI ReplaceRemotePrefix(LPCWSTR OldPrefix,LPCWSTR NewPrefix) = 0;
-    virtual HRESULT WINAPI AddFileWithRanges(LPCWSTR RemoteUrl,LPCWSTR LocalName,DWORD RangeCount,BG_FILE_RANGE Ranges[]) = 0;
-    virtual HRESULT WINAPI SetFileACLFlags(DWORD Flags) = 0;
-    virtual HRESULT WINAPI GetFileACLFlags(DWORD *Flags) = 0;
-  };
-#else
-  typedef struct IBackgroundCopyJob3Vtbl {
-    BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IBackgroundCopyJob3 *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IBackgroundCopyJob3 *This);
-      ULONG (WINAPI *Release)(IBackgroundCopyJob3 *This);
-      HRESULT (WINAPI *AddFileSet)(IBackgroundCopyJob3 *This,ULONG cFileCount,BG_FILE_INFO *pFileSet);
-      HRESULT (WINAPI *AddFile)(IBackgroundCopyJob3 *This,LPCWSTR RemoteUrl,LPCWSTR LocalName);
-      HRESULT (WINAPI *EnumFiles)(IBackgroundCopyJob3 *This,IEnumBackgroundCopyFiles **pEnum);
-      HRESULT (WINAPI *Suspend)(IBackgroundCopyJob3 *This);
-      HRESULT (WINAPI *Resume)(IBackgroundCopyJob3 *This);
-      HRESULT (WINAPI *Cancel)(IBackgroundCopyJob3 *This);
-      HRESULT (WINAPI *Complete)(IBackgroundCopyJob3 *This);
-      HRESULT (WINAPI *GetId)(IBackgroundCopyJob3 *This,GUID *pVal);
-      HRESULT (WINAPI *GetType)(IBackgroundCopyJob3 *This,BG_JOB_TYPE *pVal);
-      HRESULT (WINAPI *GetProgress)(IBackgroundCopyJob3 *This,BG_JOB_PROGRESS *pVal);
-      HRESULT (WINAPI *GetTimes)(IBackgroundCopyJob3 *This,BG_JOB_TIMES *pVal);
-      HRESULT (WINAPI *GetState)(IBackgroundCopyJob3 *This,BG_JOB_STATE *pVal);
-      HRESULT (WINAPI *GetError)(IBackgroundCopyJob3 *This,IBackgroundCopyError **ppError);
-      HRESULT (WINAPI *GetOwner)(IBackgroundCopyJob3 *This,LPWSTR *pVal);
-      HRESULT (WINAPI *SetDisplayName)(IBackgroundCopyJob3 *This,LPCWSTR Val);
-      HRESULT (WINAPI *GetDisplayName)(IBackgroundCopyJob3 *This,LPWSTR *pVal);
-      HRESULT (WINAPI *SetDescription)(IBackgroundCopyJob3 *This,LPCWSTR Val);
-      HRESULT (WINAPI *GetDescription)(IBackgroundCopyJob3 *This,LPWSTR *pVal);
-      HRESULT (WINAPI *SetPriority)(IBackgroundCopyJob3 *This,BG_JOB_PRIORITY Val);
-      HRESULT (WINAPI *GetPriority)(IBackgroundCopyJob3 *This,BG_JOB_PRIORITY *pVal);
-      HRESULT (WINAPI *SetNotifyFlags)(IBackgroundCopyJob3 *This,ULONG Val);
-      HRESULT (WINAPI *GetNotifyFlags)(IBackgroundCopyJob3 *This,ULONG *pVal);
-      HRESULT (WINAPI *SetNotifyInterface)(IBackgroundCopyJob3 *This,IUnknown *Val);
-      HRESULT (WINAPI *GetNotifyInterface)(IBackgroundCopyJob3 *This,IUnknown **pVal);
-      HRESULT (WINAPI *SetMinimumRetryDelay)(IBackgroundCopyJob3 *This,ULONG Seconds);
-      HRESULT (WINAPI *GetMinimumRetryDelay)(IBackgroundCopyJob3 *This,ULONG *Seconds);
-      HRESULT (WINAPI *SetNoProgressTimeout)(IBackgroundCopyJob3 *This,ULONG Seconds);
-      HRESULT (WINAPI *GetNoProgressTimeout)(IBackgroundCopyJob3 *This,ULONG *Seconds);
-      HRESULT (WINAPI *GetErrorCount)(IBackgroundCopyJob3 *This,ULONG *Errors);
-      HRESULT (WINAPI *SetProxySettings)(IBackgroundCopyJob3 *This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList);
-      HRESULT (WINAPI *GetProxySettings)(IBackgroundCopyJob3 *This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList);
-      HRESULT (WINAPI *TakeOwnership)(IBackgroundCopyJob3 *This);
-      HRESULT (WINAPI *SetNotifyCmdLine)(IBackgroundCopyJob3 *This,LPCWSTR Program,LPCWSTR Parameters);
-      HRESULT (WINAPI *GetNotifyCmdLine)(IBackgroundCopyJob3 *This,LPWSTR *pProgram,LPWSTR *pParameters);
-      HRESULT (WINAPI *GetReplyProgress)(IBackgroundCopyJob3 *This,BG_JOB_REPLY_PROGRESS *pProgress);
-      HRESULT (WINAPI *GetReplyData)(IBackgroundCopyJob3 *This,byte **ppBuffer,UINT64 *pLength);
-      HRESULT (WINAPI *SetReplyFileName)(IBackgroundCopyJob3 *This,LPCWSTR ReplyFileName);
-      HRESULT (WINAPI *GetReplyFileName)(IBackgroundCopyJob3 *This,LPWSTR *pReplyFileName);
-      HRESULT (WINAPI *SetCredentials)(IBackgroundCopyJob3 *This,BG_AUTH_CREDENTIALS *credentials);
-      HRESULT (WINAPI *RemoveCredentials)(IBackgroundCopyJob3 *This,BG_AUTH_TARGET Target,BG_AUTH_SCHEME Scheme);
-      HRESULT (WINAPI *ReplaceRemotePrefix)(IBackgroundCopyJob3 *This,LPCWSTR OldPrefix,LPCWSTR NewPrefix);
-      HRESULT (WINAPI *AddFileWithRanges)(IBackgroundCopyJob3 *This,LPCWSTR RemoteUrl,LPCWSTR LocalName,DWORD RangeCount,BG_FILE_RANGE Ranges[]);
-      HRESULT (WINAPI *SetFileACLFlags)(IBackgroundCopyJob3 *This,DWORD Flags);
-      HRESULT (WINAPI *GetFileACLFlags)(IBackgroundCopyJob3 *This,DWORD *Flags);
-    END_INTERFACE
-  } IBackgroundCopyJob3Vtbl;
-  struct IBackgroundCopyJob3 {
-    CONST_VTBL struct IBackgroundCopyJob3Vtbl *lpVtbl;
-  };
-#ifdef COBJMACROS
-#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)
-#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)
-#define IBackgroundCopyJob3_SetNotifyCmdLine(This,Program,Parameters) (This)->lpVtbl -> SetNotifyCmdLine(This,Program,Parameters)
-#define IBackgroundCopyJob3_GetNotifyCmdLine(This,pProgram,pParameters) (This)->lpVtbl -> GetNotifyCmdLine(This,pProgram,pParameters)
-#define IBackgroundCopyJob3_GetReplyProgress(This,pProgress) (This)->lpVtbl -> GetReplyProgress(This,pProgress)
-#define IBackgroundCopyJob3_GetReplyData(This,ppBuffer,pLength) (This)->lpVtbl -> GetReplyData(This,ppBuffer,pLength)
-#define IBackgroundCopyJob3_SetReplyFileName(This,ReplyFileName) (This)->lpVtbl -> SetReplyFileName(This,ReplyFileName)
-#define IBackgroundCopyJob3_GetReplyFileName(This,pReplyFileName) (This)->lpVtbl -> GetReplyFileName(This,pReplyFileName)
-#define IBackgroundCopyJob3_SetCredentials(This,credentials) (This)->lpVtbl -> SetCredentials(This,credentials)
-#define IBackgroundCopyJob3_RemoveCredentials(This,Target,Scheme) (This)->lpVtbl -> RemoveCredentials(This,Target,Scheme)
-#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)
-#endif
-#endif
-  HRESULT WINAPI IBackgroundCopyJob3_ReplaceRemotePrefix_Proxy(IBackgroundCopyJob3 *This,LPCWSTR OldPrefix,LPCWSTR NewPrefix);
-  void __RPC_STUB IBackgroundCopyJob3_ReplaceRemotePrefix_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob3_AddFileWithRanges_Proxy(IBackgroundCopyJob3 *This,LPCWSTR RemoteUrl,LPCWSTR LocalName,DWORD RangeCount,BG_FILE_RANGE Ranges[]);
-  void __RPC_STUB IBackgroundCopyJob3_AddFileWithRanges_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob3_SetFileACLFlags_Proxy(IBackgroundCopyJob3 *This,DWORD Flags);
-  void __RPC_STUB IBackgroundCopyJob3_SetFileACLFlags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyJob3_GetFileACLFlags_Proxy(IBackgroundCopyJob3 *This,DWORD *Flags);
-  void __RPC_STUB IBackgroundCopyJob3_GetFileACLFlags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
-
-#ifndef __IBackgroundCopyFile2_INTERFACE_DEFINED__
-#define __IBackgroundCopyFile2_INTERFACE_DEFINED__
-  EXTERN_C const IID IID_IBackgroundCopyFile2;
-#if defined(__cplusplus) && !defined(CINTERFACE)
-  struct IBackgroundCopyFile2 : public IBackgroundCopyFile {
-  public:
-    virtual HRESULT WINAPI GetFileRanges(DWORD *RangeCount,BG_FILE_RANGE **Ranges) = 0;
-    virtual HRESULT WINAPI SetRemoteName(LPCWSTR Val) = 0;
-  };
-#else
-  typedef struct IBackgroundCopyFile2Vtbl {
-    BEGIN_INTERFACE
-      HRESULT (WINAPI *QueryInterface)(IBackgroundCopyFile2 *This,REFIID riid,void **ppvObject);
-      ULONG (WINAPI *AddRef)(IBackgroundCopyFile2 *This);
-      ULONG (WINAPI *Release)(IBackgroundCopyFile2 *This);
-      HRESULT (WINAPI *GetRemoteName)(IBackgroundCopyFile2 *This,LPWSTR *pVal);
-      HRESULT (WINAPI *GetLocalName)(IBackgroundCopyFile2 *This,LPWSTR *pVal);
-      HRESULT (WINAPI *GetProgress)(IBackgroundCopyFile2 *This,BG_FILE_PROGRESS *pVal);
-      HRESULT (WINAPI *GetFileRanges)(IBackgroundCopyFile2 *This,DWORD *RangeCount,BG_FILE_RANGE **Ranges);
-      HRESULT (WINAPI *SetRemoteName)(IBackgroundCopyFile2 *This,LPCWSTR Val);
-    END_INTERFACE
-  } IBackgroundCopyFile2Vtbl;
-  struct IBackgroundCopyFile2 {
-    CONST_VTBL struct IBackgroundCopyFile2Vtbl *lpVtbl;
-  };
-#ifdef COBJMACROS
-#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)
-#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)
-#define IBackgroundCopyFile2_GetFileRanges(This,RangeCount,Ranges) (This)->lpVtbl -> GetFileRanges(This,RangeCount,Ranges)
-#define IBackgroundCopyFile2_SetRemoteName(This,Val) (This)->lpVtbl -> SetRemoteName(This,Val)
-#endif
-#endif
-  HRESULT WINAPI IBackgroundCopyFile2_GetFileRanges_Proxy(IBackgroundCopyFile2 *This,DWORD *RangeCount,BG_FILE_RANGE **Ranges);
-  void __RPC_STUB IBackgroundCopyFile2_GetFileRanges_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-  HRESULT WINAPI IBackgroundCopyFile2_SetRemoteName_Proxy(IBackgroundCopyFile2 *This,LPCWSTR Val);
-  void __RPC_STUB IBackgroundCopyFile2_SetRemoteName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
-
-#ifndef __BackgroundCopyManager2_0_LIBRARY_DEFINED__
-#define __BackgroundCopyManager2_0_LIBRARY_DEFINED__
-  EXTERN_C const IID LIBID_BackgroundCopyManager2_0;
-  EXTERN_C const CLSID CLSID_BackgroundCopyManager2_0;
+#ifndef __IBackgroundCopyFile2_FWD_DEFINED__
+#define __IBackgroundCopyFile2_FWD_DEFINED__
+typedef interface IBackgroundCopyFile2 IBackgroundCopyFile2;
 #ifdef __cplusplus
-  class BackgroundCopyManager2_0;
+interface IBackgroundCopyFile2;
+#endif /* __cplusplus */
 #endif
-#endif
+
+#endif /* __BackgroundCopyManager2_0_LIBRARY_DEFINED__ */
+#include "bits2_5.h"
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
 
 #ifdef __cplusplus
 }
 #endif
-#endif
+
+#endif /* __bits2_0_h__ */
diff --git a/mingw-w64-headers/include/bits2_0.idl b/mingw-w64-headers/include/bits2_0.idl
new file mode 100644
index 0000000..1d17c38
--- /dev/null
+++ b/mingw-w64-headers/include/bits2_0.idl
@@ -0,0 +1,100 @@
+/*
+ * Background Intelligent Transfer Service (BITS) 2.0 interface
+ *
+ * Copyright 2015 Hans Leidekker for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifndef DO_NO_IMPORTS
+import "bits.idl";
+import "bits1_5.idl";
+#endif
+
+cpp_quote("#define BG_COPY_FILE_OWNER 1")
+cpp_quote("#define BG_COPY_FILE_GROUP 2")
+cpp_quote("#define BG_COPY_FILE_DACL  4")
+cpp_quote("#define BG_COPY_FILE_SACL  8")
+cpp_quote("#define BG_COPY_FILE_ALL   15")
+
+cpp_quote("#define BG_LENGTH_TO_EOF (UINT64)(-1)")
+
+cpp_quote("#ifndef _BG_FILE_RANGE_DEFINED")
+cpp_quote("#define _BG_FILE_RANGE_DEFINED")
+typedef struct _BG_FILE_RANGE
+{
+    UINT64 InitialOffset;
+    UINT64 Length;
+} BG_FILE_RANGE;
+cpp_quote("#endif")
+
+[
+    uuid(443c8934-90ff-48ed-bcde-26f5c7450042),
+    odl
+]
+interface IBackgroundCopyJob3 : IBackgroundCopyJob2
+{
+    HRESULT ReplaceRemotePrefix(
+        [in] LPCWSTR OldPrefix,
+        [in] LPCWSTR NewPrefix);
+
+    HRESULT AddFileWithRanges(
+        [in] LPCWSTR RemoteUrl,
+        [in] LPCWSTR LocalName,
+        [in] DWORD RangeCount,
+        [in, size_is(RangeCount)] BG_FILE_RANGE Ranges[]);
+
+    HRESULT SetFileACLFlags(
+        [in] DWORD Flags);
+
+    HRESULT GetFileACLFlags(
+        [out, ref] DWORD *Flags);
+}
+
+[
+    uuid(83e81b93-0873-474d-8a8c-f2018b1a939c),
+    odl
+]
+interface IBackgroundCopyFile2 : IBackgroundCopyFile
+{
+    HRESULT GetFileRanges(
+        [in, out, unique] DWORD *RangeCount,
+        [out, size_is(, *RangeCount)] BG_FILE_RANGE **Ranges);
+
+    HRESULT SetRemoteName(
+        LPCWSTR Val);
+}
+
+[
+    uuid(2289a9af-dc96-486e-b268-89c9e3397c3d),
+    version(1.0)
+]
+library BackgroundCopyManager2_0
+{
+    [
+        uuid(6d18ad12-bde3-4393-b311-099c346e6df9)
+    ]
+    coclass BackgroundCopyManager2_0
+    {
+        [default] interface IBackgroundCopyManager;
+    };
+
+    interface IBackgroundCopyCallback;
+    interface IBackgroundCopyJob3;
+    interface IBackgroundCopyFile2;
+}
+
+cpp_quote("#include \"bits2_5.h\"")
diff --git a/mingw-w64-headers/include/bits2_5.h b/mingw-w64-headers/include/bits2_5.h
new file mode 100644
index 0000000..72bfce1
--- /dev/null
+++ b/mingw-w64-headers/include/bits2_5.h
@@ -0,0 +1,270 @@
+/*** Autogenerated by WIDL 6.12 from include/bits2_5.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_5_h__
+#define __bits2_5_h__
+
+/* Forward declarations */
+
+#ifndef __IBackgroundCopyJobHttpOptions_FWD_DEFINED__
+#define __IBackgroundCopyJobHttpOptions_FWD_DEFINED__
+typedef interface IBackgroundCopyJobHttpOptions IBackgroundCopyJobHttpOptions;
+#ifdef __cplusplus
+interface IBackgroundCopyJobHttpOptions;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __BackgroundCopyManager2_5_FWD_DEFINED__
+#define __BackgroundCopyManager2_5_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class BackgroundCopyManager2_5 BackgroundCopyManager2_5;
+#else
+typedef struct BackgroundCopyManager2_5 BackgroundCopyManager2_5;
+#endif /* defined __cplusplus */
+#endif /* defined __BackgroundCopyManager2_5_FWD_DEFINED__ */
+
+/* Headers for imported files */
+
+#include <bits.h>
+#include <bits1_5.h>
+#include <bits2_0.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*****************************************************************************
+ * IBackgroundCopyJobHttpOptions interface
+ */
+#ifndef __IBackgroundCopyJobHttpOptions_INTERFACE_DEFINED__
+#define __IBackgroundCopyJobHttpOptions_INTERFACE_DEFINED__
+
+typedef enum __WIDL_bits2_5_generated_name_00000016 {
+    BG_CERT_STORE_LOCATION_CURRENT_USER = 0,
+    BG_CERT_STORE_LOCATION_LOCAL_MACHINE = 1,
+    BG_CERT_STORE_LOCATION_CURRENT_SERVICE = 2,
+    BG_CERT_STORE_LOCATION_SERVICES = 3,
+    BG_CERT_STORE_LOCATION_USERS = 4,
+    BG_CERT_STORE_LOCATION_CURRENT_USER_GROUP_POLICY = 5,
+    BG_CERT_STORE_LOCATION_LOCAL_MACHINE_GROUP_POLICY = 6,
+    BG_CERT_STORE_LOCATION_LOCAL_MACHINE_ENTERPRISE = 7
+} BG_CERT_STORE_LOCATION;
+DEFINE_GUID(IID_IBackgroundCopyJobHttpOptions, 0xf1bd1079, 0x9f01, 0x4bdc, 0x80,0x36, 0xf0,0x9b,0x70,0x09,0x50,0x66);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f1bd1079-9f01-4bdc-8036-f09b70095066")
+IBackgroundCopyJobHttpOptions : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetClientCertificateByID(
+        BG_CERT_STORE_LOCATION StoreLocation,
+        LPCWSTR StoreName,
+        BYTE *pCertHashBlob) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetClientCertificateByName(
+        BG_CERT_STORE_LOCATION StoreLocation,
+        LPCWSTR StoreName,
+        LPCWSTR SubjectName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveClientCertificate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetClientCertificate(
+        BG_CERT_STORE_LOCATION *pStoreLocation,
+        LPWSTR *pStoreName,
+        BYTE **ppCertHashBlob,
+        LPWSTR *pSubjectName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetCustomHeaders(
+        LPCWSTR RequestHeaders) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCustomHeaders(
+        LPWSTR *pRequestHeaders) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSecurityFlags(
+        ULONG Flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSecurityFlags(
+        ULONG *pFlags) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyJobHttpOptions, 0xf1bd1079, 0x9f01, 0x4bdc, 0x80,0x36, 0xf0,0x9b,0x70,0x09,0x50,0x66)
+#endif
+#else
+typedef struct IBackgroundCopyJobHttpOptionsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBackgroundCopyJobHttpOptions *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBackgroundCopyJobHttpOptions *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBackgroundCopyJobHttpOptions *This);
+
+    /*** IBackgroundCopyJobHttpOptions methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetClientCertificateByID)(
+        IBackgroundCopyJobHttpOptions *This,
+        BG_CERT_STORE_LOCATION StoreLocation,
+        LPCWSTR StoreName,
+        BYTE *pCertHashBlob);
+
+    HRESULT (STDMETHODCALLTYPE *SetClientCertificateByName)(
+        IBackgroundCopyJobHttpOptions *This,
+        BG_CERT_STORE_LOCATION StoreLocation,
+        LPCWSTR StoreName,
+        LPCWSTR SubjectName);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveClientCertificate)(
+        IBackgroundCopyJobHttpOptions *This);
+
+    HRESULT (STDMETHODCALLTYPE *GetClientCertificate)(
+        IBackgroundCopyJobHttpOptions *This,
+        BG_CERT_STORE_LOCATION *pStoreLocation,
+        LPWSTR *pStoreName,
+        BYTE **ppCertHashBlob,
+        LPWSTR *pSubjectName);
+
+    HRESULT (STDMETHODCALLTYPE *SetCustomHeaders)(
+        IBackgroundCopyJobHttpOptions *This,
+        LPCWSTR RequestHeaders);
+
+    HRESULT (STDMETHODCALLTYPE *GetCustomHeaders)(
+        IBackgroundCopyJobHttpOptions *This,
+        LPWSTR *pRequestHeaders);
+
+    HRESULT (STDMETHODCALLTYPE *SetSecurityFlags)(
+        IBackgroundCopyJobHttpOptions *This,
+        ULONG Flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetSecurityFlags)(
+        IBackgroundCopyJobHttpOptions *This,
+        ULONG *pFlags);
+
+    END_INTERFACE
+} IBackgroundCopyJobHttpOptionsVtbl;
+
+interface IBackgroundCopyJobHttpOptions {
+    CONST_VTBL IBackgroundCopyJobHttpOptionsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBackgroundCopyJobHttpOptions_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBackgroundCopyJobHttpOptions_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBackgroundCopyJobHttpOptions_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyJobHttpOptions methods ***/
+#define IBackgroundCopyJobHttpOptions_SetClientCertificateByID(This,StoreLocation,StoreName,pCertHashBlob) (This)->lpVtbl->SetClientCertificateByID(This,StoreLocation,StoreName,pCertHashBlob)
+#define IBackgroundCopyJobHttpOptions_SetClientCertificateByName(This,StoreLocation,StoreName,SubjectName) (This)->lpVtbl->SetClientCertificateByName(This,StoreLocation,StoreName,SubjectName)
+#define IBackgroundCopyJobHttpOptions_RemoveClientCertificate(This) (This)->lpVtbl->RemoveClientCertificate(This)
+#define IBackgroundCopyJobHttpOptions_GetClientCertificate(This,pStoreLocation,pStoreName,ppCertHashBlob,pSubjectName) (This)->lpVtbl->GetClientCertificate(This,pStoreLocation,pStoreName,ppCertHashBlob,pSubjectName)
+#define IBackgroundCopyJobHttpOptions_SetCustomHeaders(This,RequestHeaders) (This)->lpVtbl->SetCustomHeaders(This,RequestHeaders)
+#define IBackgroundCopyJobHttpOptions_GetCustomHeaders(This,pRequestHeaders) (This)->lpVtbl->GetCustomHeaders(This,pRequestHeaders)
+#define IBackgroundCopyJobHttpOptions_SetSecurityFlags(This,Flags) (This)->lpVtbl->SetSecurityFlags(This,Flags)
+#define IBackgroundCopyJobHttpOptions_GetSecurityFlags(This,pFlags) (This)->lpVtbl->GetSecurityFlags(This,pFlags)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_QueryInterface(IBackgroundCopyJobHttpOptions* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyJobHttpOptions_AddRef(IBackgroundCopyJobHttpOptions* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyJobHttpOptions_Release(IBackgroundCopyJobHttpOptions* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyJobHttpOptions methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_SetClientCertificateByID(IBackgroundCopyJobHttpOptions* This,BG_CERT_STORE_LOCATION StoreLocation,LPCWSTR StoreName,BYTE *pCertHashBlob) {
+    return This->lpVtbl->SetClientCertificateByID(This,StoreLocation,StoreName,pCertHashBlob);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_SetClientCertificateByName(IBackgroundCopyJobHttpOptions* This,BG_CERT_STORE_LOCATION StoreLocation,LPCWSTR StoreName,LPCWSTR SubjectName) {
+    return This->lpVtbl->SetClientCertificateByName(This,StoreLocation,StoreName,SubjectName);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_RemoveClientCertificate(IBackgroundCopyJobHttpOptions* This) {
+    return This->lpVtbl->RemoveClientCertificate(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_GetClientCertificate(IBackgroundCopyJobHttpOptions* This,BG_CERT_STORE_LOCATION *pStoreLocation,LPWSTR *pStoreName,BYTE **ppCertHashBlob,LPWSTR *pSubjectName) {
+    return This->lpVtbl->GetClientCertificate(This,pStoreLocation,pStoreName,ppCertHashBlob,pSubjectName);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_SetCustomHeaders(IBackgroundCopyJobHttpOptions* This,LPCWSTR RequestHeaders) {
+    return This->lpVtbl->SetCustomHeaders(This,RequestHeaders);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_GetCustomHeaders(IBackgroundCopyJobHttpOptions* This,LPWSTR *pRequestHeaders) {
+    return This->lpVtbl->GetCustomHeaders(This,pRequestHeaders);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_SetSecurityFlags(IBackgroundCopyJobHttpOptions* This,ULONG Flags) {
+    return This->lpVtbl->SetSecurityFlags(This,Flags);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_GetSecurityFlags(IBackgroundCopyJobHttpOptions* This,ULONG *pFlags) {
+    return This->lpVtbl->GetSecurityFlags(This,pFlags);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IBackgroundCopyJobHttpOptions_INTERFACE_DEFINED__ */
+
+#ifndef __BackgroundCopyManager2_5_LIBRARY_DEFINED__
+#define __BackgroundCopyManager2_5_LIBRARY_DEFINED__
+
+DEFINE_GUID(LIBID_BackgroundCopyManager2_5, 0x4974177c, 0x3bb6, 0x4c37, 0x9f,0xf0, 0x6b,0x74,0x26,0xf0,0xab,0xa9);
+
+/*****************************************************************************
+ * BackgroundCopyManager2_5 coclass
+ */
+
+DEFINE_GUID(CLSID_BackgroundCopyManager2_5, 0x03ca98d6, 0xff5d, 0x49b8, 0xab,0xc6, 0x03,0xdd,0x84,0x12,0x70,0x20);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("03ca98d6-ff5d-49b8-abc6-03dd84127020") BackgroundCopyManager2_5;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(BackgroundCopyManager2_5, 0x03ca98d6, 0xff5d, 0x49b8, 0xab,0xc6, 0x03,0xdd,0x84,0x12,0x70,0x20)
+#endif
+#endif
+
+#ifndef __IBackgroundCopyCallback_FWD_DEFINED__
+#define __IBackgroundCopyCallback_FWD_DEFINED__
+typedef interface IBackgroundCopyCallback IBackgroundCopyCallback;
+#ifdef __cplusplus
+interface IBackgroundCopyCallback;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IBackgroundCopyJobHttpOptions_FWD_DEFINED__
+#define __IBackgroundCopyJobHttpOptions_FWD_DEFINED__
+typedef interface IBackgroundCopyJobHttpOptions IBackgroundCopyJobHttpOptions;
+#ifdef __cplusplus
+interface IBackgroundCopyJobHttpOptions;
+#endif /* __cplusplus */
+#endif
+
+#endif /* __BackgroundCopyManager2_5_LIBRARY_DEFINED__ */
+#include "bits3_0.h"
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __bits2_5_h__ */
diff --git a/mingw-w64-headers/include/bits2_5.idl b/mingw-w64-headers/include/bits2_5.idl
new file mode 100644
index 0000000..c58dc8a
--- /dev/null
+++ b/mingw-w64-headers/include/bits2_5.idl
@@ -0,0 +1,102 @@
+/*
+ * Background Intelligent Transfer Service (BITS) 2.5 interface
+ *
+ * Copyright 2015 Hans Leidekker for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifndef DO_NO_IMPORTS
+import "bits.idl";
+import "bits1_5.idl";
+import "bits2_0.idl";
+#endif
+
+[
+    uuid(f1bd1079-9f01-4bdc-8036-f09b70095066),
+    odl
+]
+interface IBackgroundCopyJobHttpOptions : IUnknown
+{
+    typedef enum
+    {
+        BG_CERT_STORE_LOCATION_CURRENT_USER,
+        BG_CERT_STORE_LOCATION_LOCAL_MACHINE,
+        BG_CERT_STORE_LOCATION_CURRENT_SERVICE,
+        BG_CERT_STORE_LOCATION_SERVICES,
+        BG_CERT_STORE_LOCATION_USERS,
+        BG_CERT_STORE_LOCATION_CURRENT_USER_GROUP_POLICY,
+        BG_CERT_STORE_LOCATION_LOCAL_MACHINE_GROUP_POLICY,
+        BG_CERT_STORE_LOCATION_LOCAL_MACHINE_ENTERPRISE
+    } BG_CERT_STORE_LOCATION;
+
+    HRESULT SetClientCertificateByID(
+        [in] BG_CERT_STORE_LOCATION StoreLocation,
+        [in] LPCWSTR StoreName,
+        [in, size_is(20), ref] BYTE *pCertHashBlob
+    );
+
+    HRESULT SetClientCertificateByName(
+        [in] BG_CERT_STORE_LOCATION StoreLocation,
+        [in] LPCWSTR StoreName,
+        [in] LPCWSTR SubjectName
+    );
+
+    HRESULT RemoveClientCertificate();
+
+    HRESULT GetClientCertificate(
+        [out, ref] BG_CERT_STORE_LOCATION *pStoreLocation,
+        [out, ref] LPWSTR *pStoreName,
+        [out, size_is(, 20), ref] BYTE **ppCertHashBlob,
+        [out, ref] LPWSTR *pSubjectName
+    );
+
+    HRESULT SetCustomHeaders(
+        [in, unique] LPCWSTR RequestHeaders
+    );
+
+    HRESULT GetCustomHeaders(
+        [out] LPWSTR *pRequestHeaders
+    );
+
+    HRESULT SetSecurityFlags(
+        [in] ULONG Flags
+    );
+
+    HRESULT GetSecurityFlags(
+        [out, ref] ULONG *pFlags
+    );
+}
+
+[
+    uuid(4974177c-3bb6-4c37-9ff0-6b7426f0aba9),
+    version(1.0)
+]
+library BackgroundCopyManager2_5
+{
+    [
+        uuid(03ca98d6-ff5d-49b8-abc6-03dd84127020)
+    ]
+    coclass BackgroundCopyManager2_5
+    {
+        [default] interface IBackgroundCopyManager;
+    };
+
+    interface IBackgroundCopyCallback;
+    interface IBackgroundCopyJobHttpOptions;
+}
+
+cpp_quote("#include \"bits3_0.h\"")
diff --git a/mingw-w64-headers/include/bits3_0.h b/mingw-w64-headers/include/bits3_0.h
new file mode 100644
index 0000000..b4458bb
--- /dev/null
+++ b/mingw-w64-headers/include/bits3_0.h
@@ -0,0 +1,704 @@
+/*** Autogenerated by WIDL 6.12 from include/bits3_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 __bits3_0_h__
+#define __bits3_0_h__
+
+/* Forward declarations */
+
+#ifndef __IBackgroundCopyCallback2_FWD_DEFINED__
+#define __IBackgroundCopyCallback2_FWD_DEFINED__
+typedef interface IBackgroundCopyCallback2 IBackgroundCopyCallback2;
+#ifdef __cplusplus
+interface IBackgroundCopyCallback2;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IBackgroundCopyJob4_FWD_DEFINED__
+#define __IBackgroundCopyJob4_FWD_DEFINED__
+typedef interface IBackgroundCopyJob4 IBackgroundCopyJob4;
+#ifdef __cplusplus
+interface IBackgroundCopyJob4;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __BackgroundCopyManager3_0_FWD_DEFINED__
+#define __BackgroundCopyManager3_0_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class BackgroundCopyManager3_0 BackgroundCopyManager3_0;
+#else
+typedef struct BackgroundCopyManager3_0 BackgroundCopyManager3_0;
+#endif /* defined __cplusplus */
+#endif /* defined __BackgroundCopyManager3_0_FWD_DEFINED__ */
+
+/* Headers for imported files */
+
+#include <bits.h>
+#include <bits2_0.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*****************************************************************************
+ * IBackgroundCopyCallback2 interface
+ */
+#ifndef __IBackgroundCopyCallback2_INTERFACE_DEFINED__
+#define __IBackgroundCopyCallback2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBackgroundCopyCallback2, 0x659cdeac, 0x489e, 0x11d9, 0xa9,0xcd, 0x00,0x0d,0x56,0x96,0x52,0x51);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("659cdeac-489e-11d9-a9cd-000d56965251")
+IBackgroundCopyCallback2 : public IBackgroundCopyCallback
+{
+    virtual HRESULT STDMETHODCALLTYPE FileTransferred(
+        IBackgroundCopyJob *job,
+        IBackgroundCopyFile *file) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyCallback2, 0x659cdeac, 0x489e, 0x11d9, 0xa9,0xcd, 0x00,0x0d,0x56,0x96,0x52,0x51)
+#endif
+#else
+typedef struct IBackgroundCopyCallback2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBackgroundCopyCallback2 *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBackgroundCopyCallback2 *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBackgroundCopyCallback2 *This);
+
+    /*** IBackgroundCopyCallback methods ***/
+    HRESULT (STDMETHODCALLTYPE *JobTransferred)(
+        IBackgroundCopyCallback2 *This,
+        IBackgroundCopyJob *pJob);
+
+    HRESULT (STDMETHODCALLTYPE *JobError)(
+        IBackgroundCopyCallback2 *This,
+        IBackgroundCopyJob *pJob,
+        IBackgroundCopyError *pError);
+
+    HRESULT (STDMETHODCALLTYPE *JobModification)(
+        IBackgroundCopyCallback2 *This,
+        IBackgroundCopyJob *pJob,
+        DWORD dwReserved);
+
+    /*** IBackgroundCopyCallback2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *FileTransferred)(
+        IBackgroundCopyCallback2 *This,
+        IBackgroundCopyJob *job,
+        IBackgroundCopyFile *file);
+
+    END_INTERFACE
+} IBackgroundCopyCallback2Vtbl;
+
+interface IBackgroundCopyCallback2 {
+    CONST_VTBL IBackgroundCopyCallback2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBackgroundCopyCallback2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBackgroundCopyCallback2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBackgroundCopyCallback2_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyCallback methods ***/
+#define IBackgroundCopyCallback2_JobTransferred(This,pJob) (This)->lpVtbl->JobTransferred(This,pJob)
+#define IBackgroundCopyCallback2_JobError(This,pJob,pError) (This)->lpVtbl->JobError(This,pJob,pError)
+#define IBackgroundCopyCallback2_JobModification(This,pJob,dwReserved) (This)->lpVtbl->JobModification(This,pJob,dwReserved)
+/*** IBackgroundCopyCallback2 methods ***/
+#define IBackgroundCopyCallback2_FileTransferred(This,job,file) (This)->lpVtbl->FileTransferred(This,job,file)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyCallback2_QueryInterface(IBackgroundCopyCallback2* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyCallback2_AddRef(IBackgroundCopyCallback2* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyCallback2_Release(IBackgroundCopyCallback2* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyCallback methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyCallback2_JobTransferred(IBackgroundCopyCallback2* This,IBackgroundCopyJob *pJob) {
+    return This->lpVtbl->JobTransferred(This,pJob);
+}
+static FORCEINLINE HRESULT IBackgroundCopyCallback2_JobError(IBackgroundCopyCallback2* This,IBackgroundCopyJob *pJob,IBackgroundCopyError *pError) {
+    return This->lpVtbl->JobError(This,pJob,pError);
+}
+static FORCEINLINE HRESULT IBackgroundCopyCallback2_JobModification(IBackgroundCopyCallback2* This,IBackgroundCopyJob *pJob,DWORD dwReserved) {
+    return This->lpVtbl->JobModification(This,pJob,dwReserved);
+}
+/*** IBackgroundCopyCallback2 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyCallback2_FileTransferred(IBackgroundCopyCallback2* This,IBackgroundCopyJob *job,IBackgroundCopyFile *file) {
+    return This->lpVtbl->FileTransferred(This,job,file);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IBackgroundCopyCallback2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBackgroundCopyJob4 interface
+ */
+#ifndef __IBackgroundCopyJob4_INTERFACE_DEFINED__
+#define __IBackgroundCopyJob4_INTERFACE_DEFINED__
+
+#define BG_JOB_ENABLE_PEERCACHING_CLIENT 0x0001
+#define BG_JOB_ENABLE_PEERCACHING_SERVER 0x0002
+#define BG_JOB_DISABLE_BRANCH_CACHE      0x0004
+DEFINE_GUID(IID_IBackgroundCopyJob4, 0x659cdeae, 0x489e, 0x11d9, 0xa9,0xcd, 0x00,0x0d,0x56,0x96,0x52,0x51);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("659cdeae-489e-11d9-a9cd-000d56965251")
+IBackgroundCopyJob4 : public IBackgroundCopyJob3
+{
+    virtual HRESULT STDMETHODCALLTYPE SetPeerCachingFlags(
+        DWORD flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPeerCachingFlags(
+        DWORD *flags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetOwnerIntegrityLevel(
+        ULONG *level) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetOwnerElevationState(
+        WINBOOL *elevated) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetMaximumDownloadTime(
+        ULONG timeout) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMaximumDownloadTime(
+        ULONG *timeout) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyJob4, 0x659cdeae, 0x489e, 0x11d9, 0xa9,0xcd, 0x00,0x0d,0x56,0x96,0x52,0x51)
+#endif
+#else
+typedef struct IBackgroundCopyJob4Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBackgroundCopyJob4 *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBackgroundCopyJob4 *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBackgroundCopyJob4 *This);
+
+    /*** IBackgroundCopyJob methods ***/
+    HRESULT (STDMETHODCALLTYPE *AddFileSet)(
+        IBackgroundCopyJob4 *This,
+        ULONG cFileCount,
+        BG_FILE_INFO *pFileSet);
+
+    HRESULT (STDMETHODCALLTYPE *AddFile)(
+        IBackgroundCopyJob4 *This,
+        LPCWSTR RemoteUrl,
+        LPCWSTR LocalName);
+
+    HRESULT (STDMETHODCALLTYPE *EnumFiles)(
+        IBackgroundCopyJob4 *This,
+        IEnumBackgroundCopyFiles **pEnum);
+
+    HRESULT (STDMETHODCALLTYPE *Suspend)(
+        IBackgroundCopyJob4 *This);
+
+    HRESULT (STDMETHODCALLTYPE *Resume)(
+        IBackgroundCopyJob4 *This);
+
+    HRESULT (STDMETHODCALLTYPE *Cancel)(
+        IBackgroundCopyJob4 *This);
+
+    HRESULT (STDMETHODCALLTYPE *Complete)(
+        IBackgroundCopyJob4 *This);
+
+    HRESULT (STDMETHODCALLTYPE *GetId)(
+        IBackgroundCopyJob4 *This,
+        GUID *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetType)(
+        IBackgroundCopyJob4 *This,
+        BG_JOB_TYPE *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetProgress)(
+        IBackgroundCopyJob4 *This,
+        BG_JOB_PROGRESS *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetTimes)(
+        IBackgroundCopyJob4 *This,
+        BG_JOB_TIMES *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetState)(
+        IBackgroundCopyJob4 *This,
+        BG_JOB_STATE *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetError)(
+        IBackgroundCopyJob4 *This,
+        IBackgroundCopyError **ppError);
+
+    HRESULT (STDMETHODCALLTYPE *GetOwner)(
+        IBackgroundCopyJob4 *This,
+        LPWSTR *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetDisplayName)(
+        IBackgroundCopyJob4 *This,
+        LPCWSTR Val);
+
+    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
+        IBackgroundCopyJob4 *This,
+        LPWSTR *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetDescription)(
+        IBackgroundCopyJob4 *This,
+        LPCWSTR Val);
+
+    HRESULT (STDMETHODCALLTYPE *GetDescription)(
+        IBackgroundCopyJob4 *This,
+        LPWSTR *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetPriority)(
+        IBackgroundCopyJob4 *This,
+        BG_JOB_PRIORITY Val);
+
+    HRESULT (STDMETHODCALLTYPE *GetPriority)(
+        IBackgroundCopyJob4 *This,
+        BG_JOB_PRIORITY *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetNotifyFlags)(
+        IBackgroundCopyJob4 *This,
+        ULONG Val);
+
+    HRESULT (STDMETHODCALLTYPE *GetNotifyFlags)(
+        IBackgroundCopyJob4 *This,
+        ULONG *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetNotifyInterface)(
+        IBackgroundCopyJob4 *This,
+        IUnknown *Val);
+
+    HRESULT (STDMETHODCALLTYPE *GetNotifyInterface)(
+        IBackgroundCopyJob4 *This,
+        IUnknown **pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetMinimumRetryDelay)(
+        IBackgroundCopyJob4 *This,
+        ULONG Seconds);
+
+    HRESULT (STDMETHODCALLTYPE *GetMinimumRetryDelay)(
+        IBackgroundCopyJob4 *This,
+        ULONG *Seconds);
+
+    HRESULT (STDMETHODCALLTYPE *SetNoProgressTimeout)(
+        IBackgroundCopyJob4 *This,
+        ULONG Seconds);
+
+    HRESULT (STDMETHODCALLTYPE *GetNoProgressTimeout)(
+        IBackgroundCopyJob4 *This,
+        ULONG *Seconds);
+
+    HRESULT (STDMETHODCALLTYPE *GetErrorCount)(
+        IBackgroundCopyJob4 *This,
+        ULONG *Errors);
+
+    HRESULT (STDMETHODCALLTYPE *SetProxySettings)(
+        IBackgroundCopyJob4 *This,
+        BG_JOB_PROXY_USAGE ProxyUsage,
+        const WCHAR *ProxyList,
+        const WCHAR *ProxyBypassList);
+
+    HRESULT (STDMETHODCALLTYPE *GetProxySettings)(
+        IBackgroundCopyJob4 *This,
+        BG_JOB_PROXY_USAGE *pProxyUsage,
+        LPWSTR *pProxyList,
+        LPWSTR *pProxyBypassList);
+
+    HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
+        IBackgroundCopyJob4 *This);
+
+    /*** IBackgroundCopyJob2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetNotifyCmdLine)(
+        IBackgroundCopyJob4 *This,
+        LPCWSTR prog,
+        LPCWSTR params);
+
+    HRESULT (STDMETHODCALLTYPE *GetNotifyCmdLine)(
+        IBackgroundCopyJob4 *This,
+        LPWSTR *prog,
+        LPWSTR *params);
+
+    HRESULT (STDMETHODCALLTYPE *GetReplyProgress)(
+        IBackgroundCopyJob4 *This,
+        BG_JOB_REPLY_PROGRESS *progress);
+
+    HRESULT (STDMETHODCALLTYPE *GetReplyData)(
+        IBackgroundCopyJob4 *This,
+        byte **pBuffer,
+        UINT64 *pLength);
+
+    HRESULT (STDMETHODCALLTYPE *SetReplyFileName)(
+        IBackgroundCopyJob4 *This,
+        LPCWSTR filename);
+
+    HRESULT (STDMETHODCALLTYPE *GetReplyFileName)(
+        IBackgroundCopyJob4 *This,
+        LPWSTR *pFilename);
+
+    HRESULT (STDMETHODCALLTYPE *SetCredentials)(
+        IBackgroundCopyJob4 *This,
+        BG_AUTH_CREDENTIALS *cred);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveCredentials)(
+        IBackgroundCopyJob4 *This,
+        BG_AUTH_TARGET target,
+        BG_AUTH_SCHEME scheme);
+
+    /*** IBackgroundCopyJob3 methods ***/
+    HRESULT (STDMETHODCALLTYPE *ReplaceRemotePrefix)(
+        IBackgroundCopyJob4 *This,
+        LPCWSTR OldPrefix,
+        LPCWSTR NewPrefix);
+
+    HRESULT (STDMETHODCALLTYPE *AddFileWithRanges)(
+        IBackgroundCopyJob4 *This,
+        LPCWSTR RemoteUrl,
+        LPCWSTR LocalName,
+        DWORD RangeCount,
+        BG_FILE_RANGE Ranges[]);
+
+    HRESULT (STDMETHODCALLTYPE *SetFileACLFlags)(
+        IBackgroundCopyJob4 *This,
+        DWORD Flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetFileACLFlags)(
+        IBackgroundCopyJob4 *This,
+        DWORD *Flags);
+
+    /*** IBackgroundCopyJob4 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPeerCachingFlags)(
+        IBackgroundCopyJob4 *This,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPeerCachingFlags)(
+        IBackgroundCopyJob4 *This,
+        DWORD *flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetOwnerIntegrityLevel)(
+        IBackgroundCopyJob4 *This,
+        ULONG *level);
+
+    HRESULT (STDMETHODCALLTYPE *GetOwnerElevationState)(
+        IBackgroundCopyJob4 *This,
+        WINBOOL *elevated);
+
+    HRESULT (STDMETHODCALLTYPE *SetMaximumDownloadTime)(
+        IBackgroundCopyJob4 *This,
+        ULONG timeout);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaximumDownloadTime)(
+        IBackgroundCopyJob4 *This,
+        ULONG *timeout);
+
+    END_INTERFACE
+} IBackgroundCopyJob4Vtbl;
+
+interface IBackgroundCopyJob4 {
+    CONST_VTBL IBackgroundCopyJob4Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBackgroundCopyJob4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBackgroundCopyJob4_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBackgroundCopyJob4_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyJob methods ***/
+#define IBackgroundCopyJob4_AddFileSet(This,cFileCount,pFileSet) (This)->lpVtbl->AddFileSet(This,cFileCount,pFileSet)
+#define IBackgroundCopyJob4_AddFile(This,RemoteUrl,LocalName) (This)->lpVtbl->AddFile(This,RemoteUrl,LocalName)
+#define IBackgroundCopyJob4_EnumFiles(This,pEnum) (This)->lpVtbl->EnumFiles(This,pEnum)
+#define IBackgroundCopyJob4_Suspend(This) (This)->lpVtbl->Suspend(This)
+#define IBackgroundCopyJob4_Resume(This) (This)->lpVtbl->Resume(This)
+#define IBackgroundCopyJob4_Cancel(This) (This)->lpVtbl->Cancel(This)
+#define IBackgroundCopyJob4_Complete(This) (This)->lpVtbl->Complete(This)
+#define IBackgroundCopyJob4_GetId(This,pVal) (This)->lpVtbl->GetId(This,pVal)
+#define IBackgroundCopyJob4_GetType(This,pVal) (This)->lpVtbl->GetType(This,pVal)
+#define IBackgroundCopyJob4_GetProgress(This,pVal) (This)->lpVtbl->GetProgress(This,pVal)
+#define IBackgroundCopyJob4_GetTimes(This,pVal) (This)->lpVtbl->GetTimes(This,pVal)
+#define IBackgroundCopyJob4_GetState(This,pVal) (This)->lpVtbl->GetState(This,pVal)
+#define IBackgroundCopyJob4_GetError(This,ppError) (This)->lpVtbl->GetError(This,ppError)
+#define IBackgroundCopyJob4_GetOwner(This,pVal) (This)->lpVtbl->GetOwner(This,pVal)
+#define IBackgroundCopyJob4_SetDisplayName(This,Val) (This)->lpVtbl->SetDisplayName(This,Val)
+#define IBackgroundCopyJob4_GetDisplayName(This,pVal) (This)->lpVtbl->GetDisplayName(This,pVal)
+#define IBackgroundCopyJob4_SetDescription(This,Val) (This)->lpVtbl->SetDescription(This,Val)
+#define IBackgroundCopyJob4_GetDescription(This,pVal) (This)->lpVtbl->GetDescription(This,pVal)
+#define IBackgroundCopyJob4_SetPriority(This,Val) (This)->lpVtbl->SetPriority(This,Val)
+#define IBackgroundCopyJob4_GetPriority(This,pVal) (This)->lpVtbl->GetPriority(This,pVal)
+#define IBackgroundCopyJob4_SetNotifyFlags(This,Val) (This)->lpVtbl->SetNotifyFlags(This,Val)
+#define IBackgroundCopyJob4_GetNotifyFlags(This,pVal) (This)->lpVtbl->GetNotifyFlags(This,pVal)
+#define IBackgroundCopyJob4_SetNotifyInterface(This,Val) (This)->lpVtbl->SetNotifyInterface(This,Val)
+#define IBackgroundCopyJob4_GetNotifyInterface(This,pVal) (This)->lpVtbl->GetNotifyInterface(This,pVal)
+#define IBackgroundCopyJob4_SetMinimumRetryDelay(This,Seconds) (This)->lpVtbl->SetMinimumRetryDelay(This,Seconds)
+#define IBackgroundCopyJob4_GetMinimumRetryDelay(This,Seconds) (This)->lpVtbl->GetMinimumRetryDelay(This,Seconds)
+#define IBackgroundCopyJob4_SetNoProgressTimeout(This,Seconds) (This)->lpVtbl->SetNoProgressTimeout(This,Seconds)
+#define IBackgroundCopyJob4_GetNoProgressTimeout(This,Seconds) (This)->lpVtbl->GetNoProgressTimeout(This,Seconds)
+#define IBackgroundCopyJob4_GetErrorCount(This,Errors) (This)->lpVtbl->GetErrorCount(This,Errors)
+#define IBackgroundCopyJob4_SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList) (This)->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList)
+#define IBackgroundCopyJob4_GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList) (This)->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList)
+#define IBackgroundCopyJob4_TakeOwnership(This) (This)->lpVtbl->TakeOwnership(This)
+/*** IBackgroundCopyJob2 methods ***/
+#define IBackgroundCopyJob4_SetNotifyCmdLine(This,prog,params) (This)->lpVtbl->SetNotifyCmdLine(This,prog,params)
+#define IBackgroundCopyJob4_GetNotifyCmdLine(This,prog,params) (This)->lpVtbl->GetNotifyCmdLine(This,prog,params)
+#define IBackgroundCopyJob4_GetReplyProgress(This,progress) (This)->lpVtbl->GetReplyProgress(This,progress)
+#define IBackgroundCopyJob4_GetReplyData(This,pBuffer,pLength) (This)->lpVtbl->GetReplyData(This,pBuffer,pLength)
+#define IBackgroundCopyJob4_SetReplyFileName(This,filename) (This)->lpVtbl->SetReplyFileName(This,filename)
+#define IBackgroundCopyJob4_GetReplyFileName(This,pFilename) (This)->lpVtbl->GetReplyFileName(This,pFilename)
+#define IBackgroundCopyJob4_SetCredentials(This,cred) (This)->lpVtbl->SetCredentials(This,cred)
+#define IBackgroundCopyJob4_RemoveCredentials(This,target,scheme) (This)->lpVtbl->RemoveCredentials(This,target,scheme)
+/*** IBackgroundCopyJob3 methods ***/
+#define IBackgroundCopyJob4_ReplaceRemotePrefix(This,OldPrefix,NewPrefix) (This)->lpVtbl->ReplaceRemotePrefix(This,OldPrefix,NewPrefix)
+#define IBackgroundCopyJob4_AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges) (This)->lpVtbl->AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges)
+#define IBackgroundCopyJob4_SetFileACLFlags(This,Flags) (This)->lpVtbl->SetFileACLFlags(This,Flags)
+#define IBackgroundCopyJob4_GetFileACLFlags(This,Flags) (This)->lpVtbl->GetFileACLFlags(This,Flags)
+/*** IBackgroundCopyJob4 methods ***/
+#define IBackgroundCopyJob4_SetPeerCachingFlags(This,flags) (This)->lpVtbl->SetPeerCachingFlags(This,flags)
+#define IBackgroundCopyJob4_GetPeerCachingFlags(This,flags) (This)->lpVtbl->GetPeerCachingFlags(This,flags)
+#define IBackgroundCopyJob4_GetOwnerIntegrityLevel(This,level) (This)->lpVtbl->GetOwnerIntegrityLevel(This,level)
+#define IBackgroundCopyJob4_GetOwnerElevationState(This,elevated) (This)->lpVtbl->GetOwnerElevationState(This,elevated)
+#define IBackgroundCopyJob4_SetMaximumDownloadTime(This,timeout) (This)->lpVtbl->SetMaximumDownloadTime(This,timeout)
+#define IBackgroundCopyJob4_GetMaximumDownloadTime(This,timeout) (This)->lpVtbl->GetMaximumDownloadTime(This,timeout)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob4_QueryInterface(IBackgroundCopyJob4* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob4_AddRef(IBackgroundCopyJob4* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob4_Release(IBackgroundCopyJob4* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyJob methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob4_AddFileSet(IBackgroundCopyJob4* This,ULONG cFileCount,BG_FILE_INFO *pFileSet) {
+    return This->lpVtbl->AddFileSet(This,cFileCount,pFileSet);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_AddFile(IBackgroundCopyJob4* This,LPCWSTR RemoteUrl,LPCWSTR LocalName) {
+    return This->lpVtbl->AddFile(This,RemoteUrl,LocalName);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_EnumFiles(IBackgroundCopyJob4* This,IEnumBackgroundCopyFiles **pEnum) {
+    return This->lpVtbl->EnumFiles(This,pEnum);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_Suspend(IBackgroundCopyJob4* This) {
+    return This->lpVtbl->Suspend(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_Resume(IBackgroundCopyJob4* This) {
+    return This->lpVtbl->Resume(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_Cancel(IBackgroundCopyJob4* This) {
+    return This->lpVtbl->Cancel(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_Complete(IBackgroundCopyJob4* This) {
+    return This->lpVtbl->Complete(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetId(IBackgroundCopyJob4* This,GUID *pVal) {
+    return This->lpVtbl->GetId(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetType(IBackgroundCopyJob4* This,BG_JOB_TYPE *pVal) {
+    return This->lpVtbl->GetType(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetProgress(IBackgroundCopyJob4* This,BG_JOB_PROGRESS *pVal) {
+    return This->lpVtbl->GetProgress(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetTimes(IBackgroundCopyJob4* This,BG_JOB_TIMES *pVal) {
+    return This->lpVtbl->GetTimes(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetState(IBackgroundCopyJob4* This,BG_JOB_STATE *pVal) {
+    return This->lpVtbl->GetState(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetError(IBackgroundCopyJob4* This,IBackgroundCopyError **ppError) {
+    return This->lpVtbl->GetError(This,ppError);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetOwner(IBackgroundCopyJob4* This,LPWSTR *pVal) {
+    return This->lpVtbl->GetOwner(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetDisplayName(IBackgroundCopyJob4* This,LPCWSTR Val) {
+    return This->lpVtbl->SetDisplayName(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetDisplayName(IBackgroundCopyJob4* This,LPWSTR *pVal) {
+    return This->lpVtbl->GetDisplayName(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetDescription(IBackgroundCopyJob4* This,LPCWSTR Val) {
+    return This->lpVtbl->SetDescription(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetDescription(IBackgroundCopyJob4* This,LPWSTR *pVal) {
+    return This->lpVtbl->GetDescription(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetPriority(IBackgroundCopyJob4* This,BG_JOB_PRIORITY Val) {
+    return This->lpVtbl->SetPriority(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetPriority(IBackgroundCopyJob4* This,BG_JOB_PRIORITY *pVal) {
+    return This->lpVtbl->GetPriority(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetNotifyFlags(IBackgroundCopyJob4* This,ULONG Val) {
+    return This->lpVtbl->SetNotifyFlags(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetNotifyFlags(IBackgroundCopyJob4* This,ULONG *pVal) {
+    return This->lpVtbl->GetNotifyFlags(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetNotifyInterface(IBackgroundCopyJob4* This,IUnknown *Val) {
+    return This->lpVtbl->SetNotifyInterface(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetNotifyInterface(IBackgroundCopyJob4* This,IUnknown **pVal) {
+    return This->lpVtbl->GetNotifyInterface(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetMinimumRetryDelay(IBackgroundCopyJob4* This,ULONG Seconds) {
+    return This->lpVtbl->SetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetMinimumRetryDelay(IBackgroundCopyJob4* This,ULONG *Seconds) {
+    return This->lpVtbl->GetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetNoProgressTimeout(IBackgroundCopyJob4* This,ULONG Seconds) {
+    return This->lpVtbl->SetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetNoProgressTimeout(IBackgroundCopyJob4* This,ULONG *Seconds) {
+    return This->lpVtbl->GetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetErrorCount(IBackgroundCopyJob4* This,ULONG *Errors) {
+    return This->lpVtbl->GetErrorCount(This,Errors);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetProxySettings(IBackgroundCopyJob4* This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList) {
+    return This->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetProxySettings(IBackgroundCopyJob4* This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList) {
+    return This->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_TakeOwnership(IBackgroundCopyJob4* This) {
+    return This->lpVtbl->TakeOwnership(This);
+}
+/*** IBackgroundCopyJob2 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetNotifyCmdLine(IBackgroundCopyJob4* This,LPCWSTR prog,LPCWSTR params) {
+    return This->lpVtbl->SetNotifyCmdLine(This,prog,params);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetNotifyCmdLine(IBackgroundCopyJob4* This,LPWSTR *prog,LPWSTR *params) {
+    return This->lpVtbl->GetNotifyCmdLine(This,prog,params);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetReplyProgress(IBackgroundCopyJob4* This,BG_JOB_REPLY_PROGRESS *progress) {
+    return This->lpVtbl->GetReplyProgress(This,progress);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetReplyData(IBackgroundCopyJob4* This,byte **pBuffer,UINT64 *pLength) {
+    return This->lpVtbl->GetReplyData(This,pBuffer,pLength);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetReplyFileName(IBackgroundCopyJob4* This,LPCWSTR filename) {
+    return This->lpVtbl->SetReplyFileName(This,filename);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetReplyFileName(IBackgroundCopyJob4* This,LPWSTR *pFilename) {
+    return This->lpVtbl->GetReplyFileName(This,pFilename);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetCredentials(IBackgroundCopyJob4* This,BG_AUTH_CREDENTIALS *cred) {
+    return This->lpVtbl->SetCredentials(This,cred);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_RemoveCredentials(IBackgroundCopyJob4* This,BG_AUTH_TARGET target,BG_AUTH_SCHEME scheme) {
+    return This->lpVtbl->RemoveCredentials(This,target,scheme);
+}
+/*** IBackgroundCopyJob3 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob4_ReplaceRemotePrefix(IBackgroundCopyJob4* This,LPCWSTR OldPrefix,LPCWSTR NewPrefix) {
+    return This->lpVtbl->ReplaceRemotePrefix(This,OldPrefix,NewPrefix);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_AddFileWithRanges(IBackgroundCopyJob4* This,LPCWSTR RemoteUrl,LPCWSTR LocalName,DWORD RangeCount,BG_FILE_RANGE Ranges[]) {
+    return This->lpVtbl->AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetFileACLFlags(IBackgroundCopyJob4* This,DWORD Flags) {
+    return This->lpVtbl->SetFileACLFlags(This,Flags);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetFileACLFlags(IBackgroundCopyJob4* This,DWORD *Flags) {
+    return This->lpVtbl->GetFileACLFlags(This,Flags);
+}
+/*** IBackgroundCopyJob4 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetPeerCachingFlags(IBackgroundCopyJob4* This,DWORD flags) {
+    return This->lpVtbl->SetPeerCachingFlags(This,flags);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetPeerCachingFlags(IBackgroundCopyJob4* This,DWORD *flags) {
+    return This->lpVtbl->GetPeerCachingFlags(This,flags);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetOwnerIntegrityLevel(IBackgroundCopyJob4* This,ULONG *level) {
+    return This->lpVtbl->GetOwnerIntegrityLevel(This,level);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetOwnerElevationState(IBackgroundCopyJob4* This,WINBOOL *elevated) {
+    return This->lpVtbl->GetOwnerElevationState(This,elevated);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetMaximumDownloadTime(IBackgroundCopyJob4* This,ULONG timeout) {
+    return This->lpVtbl->SetMaximumDownloadTime(This,timeout);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetMaximumDownloadTime(IBackgroundCopyJob4* This,ULONG *timeout) {
+    return This->lpVtbl->GetMaximumDownloadTime(This,timeout);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IBackgroundCopyJob4_INTERFACE_DEFINED__ */
+
+#ifndef __BackgroundCopyManager3_0_LIBRARY_DEFINED__
+#define __BackgroundCopyManager3_0_LIBRARY_DEFINED__
+
+DEFINE_GUID(LIBID_BackgroundCopyManager3_0, 0x659cdea6, 0x489e, 0x11d9, 0xa9,0xcd, 0x00,0x0d,0x56,0x96,0x52,0x51);
+
+/*****************************************************************************
+ * BackgroundCopyManager3_0 coclass
+ */
+
+DEFINE_GUID(CLSID_BackgroundCopyManager3_0, 0x659cdea7, 0x489e, 0x11d9, 0xa9,0xcd, 0x00,0x0d,0x56,0x96,0x52,0x51);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("659cdea7-489e-11d9-a9cd-000d56965251") BackgroundCopyManager3_0;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(BackgroundCopyManager3_0, 0x659cdea7, 0x489e, 0x11d9, 0xa9,0xcd, 0x00,0x0d,0x56,0x96,0x52,0x51)
+#endif
+#endif
+
+#ifndef __IBackgroundCopyJob4_FWD_DEFINED__
+#define __IBackgroundCopyJob4_FWD_DEFINED__
+typedef interface IBackgroundCopyJob4 IBackgroundCopyJob4;
+#ifdef __cplusplus
+interface IBackgroundCopyJob4;
+#endif /* __cplusplus */
+#endif
+
+#endif /* __BackgroundCopyManager3_0_LIBRARY_DEFINED__ */
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __bits3_0_h__ */
diff --git a/mingw-w64-headers/include/bits3_0.idl b/mingw-w64-headers/include/bits3_0.idl
new file mode 100644
index 0000000..4c786e6
--- /dev/null
+++ b/mingw-w64-headers/include/bits3_0.idl
@@ -0,0 +1,71 @@
+/*
+ * Background Intelligent Transfer Service (BITS) 3.0 interface
+ *
+ * Copyright 2013 Nikolay Sivov for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifndef DO_NO_IMPORTS
+import "bits.idl";
+import "bits2_0.idl";
+#endif
+
+[
+    uuid(659cdeac-489e-11d9-a9cd-000d56965251),
+    odl
+]
+interface IBackgroundCopyCallback2 : IBackgroundCopyCallback
+{
+    HRESULT FileTransferred([in] IBackgroundCopyJob *job,
+                            [in] IBackgroundCopyFile *file);
+}
+
+[
+    uuid(659cdeae-489e-11d9-a9cd-000d56965251),
+    odl
+]
+interface IBackgroundCopyJob4 : IBackgroundCopyJob3
+{
+cpp_quote("#define BG_JOB_ENABLE_PEERCACHING_CLIENT 0x0001")
+cpp_quote("#define BG_JOB_ENABLE_PEERCACHING_SERVER 0x0002")
+cpp_quote("#define BG_JOB_DISABLE_BRANCH_CACHE      0x0004")
+
+    HRESULT SetPeerCachingFlags(DWORD flags);
+    HRESULT GetPeerCachingFlags([out, ref] DWORD *flags);
+    HRESULT GetOwnerIntegrityLevel([out, ref] ULONG *level);
+    HRESULT GetOwnerElevationState([out, ref] BOOL *elevated);
+    HRESULT SetMaximumDownloadTime(ULONG timeout);
+    HRESULT GetMaximumDownloadTime([out,ref] ULONG *timeout);
+}
+
+[
+    uuid(659cdea6-489e-11d9-a9cd-000d56965251),
+    lcid(0x0000),
+    version(1.0)
+]
+library BackgroundCopyManager3_0
+{
+    [
+        uuid(659cdea7-489e-11d9-a9cd-000d56965251)
+    ]
+    coclass BackgroundCopyManager3_0
+    {
+        [default] interface IBackgroundCopyManager;
+    };
+
+    interface IBackgroundCopyJob4;
+}
diff --git a/mingw-w64-headers/include/bits5_0.h b/mingw-w64-headers/include/bits5_0.h
new file mode 100644
index 0000000..a189dbc
--- /dev/null
+++ b/mingw-w64-headers/include/bits5_0.h
@@ -0,0 +1,581 @@
+/*** Autogenerated by WIDL 6.12 from include/bits5_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 __bits5_0_h__
+#define __bits5_0_h__
+
+/* Forward declarations */
+
+#ifndef __IBackgroundCopyJob5_FWD_DEFINED__
+#define __IBackgroundCopyJob5_FWD_DEFINED__
+typedef interface IBackgroundCopyJob5 IBackgroundCopyJob5;
+#ifdef __cplusplus
+interface IBackgroundCopyJob5;
+#endif /* __cplusplus */
+#endif
+
+/* Headers for imported files */
+
+#include <bits.h>
+#include <bits1_5.h>
+#include <bits2_0.h>
+#include <bits2_5.h>
+#include <bits3_0.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define BITS_COST_STATE_TRANSFER_ALWAYS 0x800000ff
+/*****************************************************************************
+ * IBackgroundCopyJob5 interface
+ */
+#ifndef __IBackgroundCopyJob5_INTERFACE_DEFINED__
+#define __IBackgroundCopyJob5_INTERFACE_DEFINED__
+
+typedef enum __WIDL_bits5_0_generated_name_00000017 {
+    BITS_JOB_PROPERTY_ID_COST_FLAGS = 1,
+    BITS_JOB_PROPERTY_NOTIFICATION_CLSID = 2,
+    BITS_JOB_PROPERTY_DYNAMIC_CONTENT = 3,
+    BITS_JOB_PROPERTY_HIGH_PERFORMANCE = 4,
+    BITS_JOB_PROPERTY_MAX_DOWNLOAD_SIZE = 5,
+    BITS_JOB_PROPERTY_USE_STORED_CREDENTIALS = 7,
+    BITS_JOB_PROPERTY_MINIMUM_NOTIFICATION_INTERVAL_MS = 9,
+    BITS_JOB_PROPERTY_ON_DEMAND_MODE = 10
+} BITS_JOB_PROPERTY_ID;
+typedef union _BITS_JOB_PROPERTY_VALUE {
+    DWORD Dword;
+    GUID ClsID;
+    WINBOOL Enable;
+    UINT64 Uint64;
+    BG_AUTH_TARGET Target;
+} BITS_JOB_PROPERTY_VALUE;
+DEFINE_GUID(IID_IBackgroundCopyJob5, 0xe847030c, 0xbbba, 0x4657, 0xaf,0x6d, 0x48,0x4a,0xa4,0x2b,0xf1,0xfe);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("e847030c-bbba-4657-af6d-484aa42bf1fe")
+IBackgroundCopyJob5 : public IBackgroundCopyJob4
+{
+    virtual HRESULT STDMETHODCALLTYPE SetProperty(
+        BITS_JOB_PROPERTY_ID id,
+        BITS_JOB_PROPERTY_VALUE value) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetProperty(
+        BITS_JOB_PROPERTY_ID id,
+        BITS_JOB_PROPERTY_VALUE *value) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyJob5, 0xe847030c, 0xbbba, 0x4657, 0xaf,0x6d, 0x48,0x4a,0xa4,0x2b,0xf1,0xfe)
+#endif
+#else
+typedef struct IBackgroundCopyJob5Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IBackgroundCopyJob5 *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IBackgroundCopyJob5 *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IBackgroundCopyJob5 *This);
+
+    /*** IBackgroundCopyJob methods ***/
+    HRESULT (STDMETHODCALLTYPE *AddFileSet)(
+        IBackgroundCopyJob5 *This,
+        ULONG cFileCount,
+        BG_FILE_INFO *pFileSet);
+
+    HRESULT (STDMETHODCALLTYPE *AddFile)(
+        IBackgroundCopyJob5 *This,
+        LPCWSTR RemoteUrl,
+        LPCWSTR LocalName);
+
+    HRESULT (STDMETHODCALLTYPE *EnumFiles)(
+        IBackgroundCopyJob5 *This,
+        IEnumBackgroundCopyFiles **pEnum);
+
+    HRESULT (STDMETHODCALLTYPE *Suspend)(
+        IBackgroundCopyJob5 *This);
+
+    HRESULT (STDMETHODCALLTYPE *Resume)(
+        IBackgroundCopyJob5 *This);
+
+    HRESULT (STDMETHODCALLTYPE *Cancel)(
+        IBackgroundCopyJob5 *This);
+
+    HRESULT (STDMETHODCALLTYPE *Complete)(
+        IBackgroundCopyJob5 *This);
+
+    HRESULT (STDMETHODCALLTYPE *GetId)(
+        IBackgroundCopyJob5 *This,
+        GUID *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetType)(
+        IBackgroundCopyJob5 *This,
+        BG_JOB_TYPE *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetProgress)(
+        IBackgroundCopyJob5 *This,
+        BG_JOB_PROGRESS *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetTimes)(
+        IBackgroundCopyJob5 *This,
+        BG_JOB_TIMES *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetState)(
+        IBackgroundCopyJob5 *This,
+        BG_JOB_STATE *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetError)(
+        IBackgroundCopyJob5 *This,
+        IBackgroundCopyError **ppError);
+
+    HRESULT (STDMETHODCALLTYPE *GetOwner)(
+        IBackgroundCopyJob5 *This,
+        LPWSTR *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetDisplayName)(
+        IBackgroundCopyJob5 *This,
+        LPCWSTR Val);
+
+    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
+        IBackgroundCopyJob5 *This,
+        LPWSTR *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetDescription)(
+        IBackgroundCopyJob5 *This,
+        LPCWSTR Val);
+
+    HRESULT (STDMETHODCALLTYPE *GetDescription)(
+        IBackgroundCopyJob5 *This,
+        LPWSTR *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetPriority)(
+        IBackgroundCopyJob5 *This,
+        BG_JOB_PRIORITY Val);
+
+    HRESULT (STDMETHODCALLTYPE *GetPriority)(
+        IBackgroundCopyJob5 *This,
+        BG_JOB_PRIORITY *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetNotifyFlags)(
+        IBackgroundCopyJob5 *This,
+        ULONG Val);
+
+    HRESULT (STDMETHODCALLTYPE *GetNotifyFlags)(
+        IBackgroundCopyJob5 *This,
+        ULONG *pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetNotifyInterface)(
+        IBackgroundCopyJob5 *This,
+        IUnknown *Val);
+
+    HRESULT (STDMETHODCALLTYPE *GetNotifyInterface)(
+        IBackgroundCopyJob5 *This,
+        IUnknown **pVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetMinimumRetryDelay)(
+        IBackgroundCopyJob5 *This,
+        ULONG Seconds);
+
+    HRESULT (STDMETHODCALLTYPE *GetMinimumRetryDelay)(
+        IBackgroundCopyJob5 *This,
+        ULONG *Seconds);
+
+    HRESULT (STDMETHODCALLTYPE *SetNoProgressTimeout)(
+        IBackgroundCopyJob5 *This,
+        ULONG Seconds);
+
+    HRESULT (STDMETHODCALLTYPE *GetNoProgressTimeout)(
+        IBackgroundCopyJob5 *This,
+        ULONG *Seconds);
+
+    HRESULT (STDMETHODCALLTYPE *GetErrorCount)(
+        IBackgroundCopyJob5 *This,
+        ULONG *Errors);
+
+    HRESULT (STDMETHODCALLTYPE *SetProxySettings)(
+        IBackgroundCopyJob5 *This,
+        BG_JOB_PROXY_USAGE ProxyUsage,
+        const WCHAR *ProxyList,
+        const WCHAR *ProxyBypassList);
+
+    HRESULT (STDMETHODCALLTYPE *GetProxySettings)(
+        IBackgroundCopyJob5 *This,
+        BG_JOB_PROXY_USAGE *pProxyUsage,
+        LPWSTR *pProxyList,
+        LPWSTR *pProxyBypassList);
+
+    HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
+        IBackgroundCopyJob5 *This);
+
+    /*** IBackgroundCopyJob2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetNotifyCmdLine)(
+        IBackgroundCopyJob5 *This,
+        LPCWSTR prog,
+        LPCWSTR params);
+
+    HRESULT (STDMETHODCALLTYPE *GetNotifyCmdLine)(
+        IBackgroundCopyJob5 *This,
+        LPWSTR *prog,
+        LPWSTR *params);
+
+    HRESULT (STDMETHODCALLTYPE *GetReplyProgress)(
+        IBackgroundCopyJob5 *This,
+        BG_JOB_REPLY_PROGRESS *progress);
+
+    HRESULT (STDMETHODCALLTYPE *GetReplyData)(
+        IBackgroundCopyJob5 *This,
+        byte **pBuffer,
+        UINT64 *pLength);
+
+    HRESULT (STDMETHODCALLTYPE *SetReplyFileName)(
+        IBackgroundCopyJob5 *This,
+        LPCWSTR filename);
+
+    HRESULT (STDMETHODCALLTYPE *GetReplyFileName)(
+        IBackgroundCopyJob5 *This,
+        LPWSTR *pFilename);
+
+    HRESULT (STDMETHODCALLTYPE *SetCredentials)(
+        IBackgroundCopyJob5 *This,
+        BG_AUTH_CREDENTIALS *cred);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveCredentials)(
+        IBackgroundCopyJob5 *This,
+        BG_AUTH_TARGET target,
+        BG_AUTH_SCHEME scheme);
+
+    /*** IBackgroundCopyJob3 methods ***/
+    HRESULT (STDMETHODCALLTYPE *ReplaceRemotePrefix)(
+        IBackgroundCopyJob5 *This,
+        LPCWSTR OldPrefix,
+        LPCWSTR NewPrefix);
+
+    HRESULT (STDMETHODCALLTYPE *AddFileWithRanges)(
+        IBackgroundCopyJob5 *This,
+        LPCWSTR RemoteUrl,
+        LPCWSTR LocalName,
+        DWORD RangeCount,
+        BG_FILE_RANGE Ranges[]);
+
+    HRESULT (STDMETHODCALLTYPE *SetFileACLFlags)(
+        IBackgroundCopyJob5 *This,
+        DWORD Flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetFileACLFlags)(
+        IBackgroundCopyJob5 *This,
+        DWORD *Flags);
+
+    /*** IBackgroundCopyJob4 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetPeerCachingFlags)(
+        IBackgroundCopyJob5 *This,
+        DWORD flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetPeerCachingFlags)(
+        IBackgroundCopyJob5 *This,
+        DWORD *flags);
+
+    HRESULT (STDMETHODCALLTYPE *GetOwnerIntegrityLevel)(
+        IBackgroundCopyJob5 *This,
+        ULONG *level);
+
+    HRESULT (STDMETHODCALLTYPE *GetOwnerElevationState)(
+        IBackgroundCopyJob5 *This,
+        WINBOOL *elevated);
+
+    HRESULT (STDMETHODCALLTYPE *SetMaximumDownloadTime)(
+        IBackgroundCopyJob5 *This,
+        ULONG timeout);
+
+    HRESULT (STDMETHODCALLTYPE *GetMaximumDownloadTime)(
+        IBackgroundCopyJob5 *This,
+        ULONG *timeout);
+
+    /*** IBackgroundCopyJob5 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetProperty)(
+        IBackgroundCopyJob5 *This,
+        BITS_JOB_PROPERTY_ID id,
+        BITS_JOB_PROPERTY_VALUE value);
+
+    HRESULT (STDMETHODCALLTYPE *GetProperty)(
+        IBackgroundCopyJob5 *This,
+        BITS_JOB_PROPERTY_ID id,
+        BITS_JOB_PROPERTY_VALUE *value);
+
+    END_INTERFACE
+} IBackgroundCopyJob5Vtbl;
+
+interface IBackgroundCopyJob5 {
+    CONST_VTBL IBackgroundCopyJob5Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBackgroundCopyJob5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBackgroundCopyJob5_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBackgroundCopyJob5_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyJob methods ***/
+#define IBackgroundCopyJob5_AddFileSet(This,cFileCount,pFileSet) (This)->lpVtbl->AddFileSet(This,cFileCount,pFileSet)
+#define IBackgroundCopyJob5_AddFile(This,RemoteUrl,LocalName) (This)->lpVtbl->AddFile(This,RemoteUrl,LocalName)
+#define IBackgroundCopyJob5_EnumFiles(This,pEnum) (This)->lpVtbl->EnumFiles(This,pEnum)
+#define IBackgroundCopyJob5_Suspend(This) (This)->lpVtbl->Suspend(This)
+#define IBackgroundCopyJob5_Resume(This) (This)->lpVtbl->Resume(This)
+#define IBackgroundCopyJob5_Cancel(This) (This)->lpVtbl->Cancel(This)
+#define IBackgroundCopyJob5_Complete(This) (This)->lpVtbl->Complete(This)
+#define IBackgroundCopyJob5_GetId(This,pVal) (This)->lpVtbl->GetId(This,pVal)
+#define IBackgroundCopyJob5_GetType(This,pVal) (This)->lpVtbl->GetType(This,pVal)
+#define IBackgroundCopyJob5_GetProgress(This,pVal) (This)->lpVtbl->GetProgress(This,pVal)
+#define IBackgroundCopyJob5_GetTimes(This,pVal) (This)->lpVtbl->GetTimes(This,pVal)
+#define IBackgroundCopyJob5_GetState(This,pVal) (This)->lpVtbl->GetState(This,pVal)
+#define IBackgroundCopyJob5_GetError(This,ppError) (This)->lpVtbl->GetError(This,ppError)
+#define IBackgroundCopyJob5_GetOwner(This,pVal) (This)->lpVtbl->GetOwner(This,pVal)
+#define IBackgroundCopyJob5_SetDisplayName(This,Val) (This)->lpVtbl->SetDisplayName(This,Val)
+#define IBackgroundCopyJob5_GetDisplayName(This,pVal) (This)->lpVtbl->GetDisplayName(This,pVal)
+#define IBackgroundCopyJob5_SetDescription(This,Val) (This)->lpVtbl->SetDescription(This,Val)
+#define IBackgroundCopyJob5_GetDescription(This,pVal) (This)->lpVtbl->GetDescription(This,pVal)
+#define IBackgroundCopyJob5_SetPriority(This,Val) (This)->lpVtbl->SetPriority(This,Val)
+#define IBackgroundCopyJob5_GetPriority(This,pVal) (This)->lpVtbl->GetPriority(This,pVal)
+#define IBackgroundCopyJob5_SetNotifyFlags(This,Val) (This)->lpVtbl->SetNotifyFlags(This,Val)
+#define IBackgroundCopyJob5_GetNotifyFlags(This,pVal) (This)->lpVtbl->GetNotifyFlags(This,pVal)
+#define IBackgroundCopyJob5_SetNotifyInterface(This,Val) (This)->lpVtbl->SetNotifyInterface(This,Val)
+#define IBackgroundCopyJob5_GetNotifyInterface(This,pVal) (This)->lpVtbl->GetNotifyInterface(This,pVal)
+#define IBackgroundCopyJob5_SetMinimumRetryDelay(This,Seconds) (This)->lpVtbl->SetMinimumRetryDelay(This,Seconds)
+#define IBackgroundCopyJob5_GetMinimumRetryDelay(This,Seconds) (This)->lpVtbl->GetMinimumRetryDelay(This,Seconds)
+#define IBackgroundCopyJob5_SetNoProgressTimeout(This,Seconds) (This)->lpVtbl->SetNoProgressTimeout(This,Seconds)
+#define IBackgroundCopyJob5_GetNoProgressTimeout(This,Seconds) (This)->lpVtbl->GetNoProgressTimeout(This,Seconds)
+#define IBackgroundCopyJob5_GetErrorCount(This,Errors) (This)->lpVtbl->GetErrorCount(This,Errors)
+#define IBackgroundCopyJob5_SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList) (This)->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList)
+#define IBackgroundCopyJob5_GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList) (This)->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList)
+#define IBackgroundCopyJob5_TakeOwnership(This) (This)->lpVtbl->TakeOwnership(This)
+/*** IBackgroundCopyJob2 methods ***/
+#define IBackgroundCopyJob5_SetNotifyCmdLine(This,prog,params) (This)->lpVtbl->SetNotifyCmdLine(This,prog,params)
+#define IBackgroundCopyJob5_GetNotifyCmdLine(This,prog,params) (This)->lpVtbl->GetNotifyCmdLine(This,prog,params)
+#define IBackgroundCopyJob5_GetReplyProgress(This,progress) (This)->lpVtbl->GetReplyProgress(This,progress)
+#define IBackgroundCopyJob5_GetReplyData(This,pBuffer,pLength) (This)->lpVtbl->GetReplyData(This,pBuffer,pLength)
+#define IBackgroundCopyJob5_SetReplyFileName(This,filename) (This)->lpVtbl->SetReplyFileName(This,filename)
+#define IBackgroundCopyJob5_GetReplyFileName(This,pFilename) (This)->lpVtbl->GetReplyFileName(This,pFilename)
+#define IBackgroundCopyJob5_SetCredentials(This,cred) (This)->lpVtbl->SetCredentials(This,cred)
+#define IBackgroundCopyJob5_RemoveCredentials(This,target,scheme) (This)->lpVtbl->RemoveCredentials(This,target,scheme)
+/*** IBackgroundCopyJob3 methods ***/
+#define IBackgroundCopyJob5_ReplaceRemotePrefix(This,OldPrefix,NewPrefix) (This)->lpVtbl->ReplaceRemotePrefix(This,OldPrefix,NewPrefix)
+#define IBackgroundCopyJob5_AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges) (This)->lpVtbl->AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges)
+#define IBackgroundCopyJob5_SetFileACLFlags(This,Flags) (This)->lpVtbl->SetFileACLFlags(This,Flags)
+#define IBackgroundCopyJob5_GetFileACLFlags(This,Flags) (This)->lpVtbl->GetFileACLFlags(This,Flags)
+/*** IBackgroundCopyJob4 methods ***/
+#define IBackgroundCopyJob5_SetPeerCachingFlags(This,flags) (This)->lpVtbl->SetPeerCachingFlags(This,flags)
+#define IBackgroundCopyJob5_GetPeerCachingFlags(This,flags) (This)->lpVtbl->GetPeerCachingFlags(This,flags)
+#define IBackgroundCopyJob5_GetOwnerIntegrityLevel(This,level) (This)->lpVtbl->GetOwnerIntegrityLevel(This,level)
+#define IBackgroundCopyJob5_GetOwnerElevationState(This,elevated) (This)->lpVtbl->GetOwnerElevationState(This,elevated)
+#define IBackgroundCopyJob5_SetMaximumDownloadTime(This,timeout) (This)->lpVtbl->SetMaximumDownloadTime(This,timeout)
+#define IBackgroundCopyJob5_GetMaximumDownloadTime(This,timeout) (This)->lpVtbl->GetMaximumDownloadTime(This,timeout)
+/*** IBackgroundCopyJob5 methods ***/
+#define IBackgroundCopyJob5_SetProperty(This,id,value) (This)->lpVtbl->SetProperty(This,id,value)
+#define IBackgroundCopyJob5_GetProperty(This,id,value) (This)->lpVtbl->GetProperty(This,id,value)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob5_QueryInterface(IBackgroundCopyJob5* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob5_AddRef(IBackgroundCopyJob5* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob5_Release(IBackgroundCopyJob5* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyJob methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob5_AddFileSet(IBackgroundCopyJob5* This,ULONG cFileCount,BG_FILE_INFO *pFileSet) {
+    return This->lpVtbl->AddFileSet(This,cFileCount,pFileSet);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_AddFile(IBackgroundCopyJob5* This,LPCWSTR RemoteUrl,LPCWSTR LocalName) {
+    return This->lpVtbl->AddFile(This,RemoteUrl,LocalName);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_EnumFiles(IBackgroundCopyJob5* This,IEnumBackgroundCopyFiles **pEnum) {
+    return This->lpVtbl->EnumFiles(This,pEnum);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_Suspend(IBackgroundCopyJob5* This) {
+    return This->lpVtbl->Suspend(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_Resume(IBackgroundCopyJob5* This) {
+    return This->lpVtbl->Resume(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_Cancel(IBackgroundCopyJob5* This) {
+    return This->lpVtbl->Cancel(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_Complete(IBackgroundCopyJob5* This) {
+    return This->lpVtbl->Complete(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetId(IBackgroundCopyJob5* This,GUID *pVal) {
+    return This->lpVtbl->GetId(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetType(IBackgroundCopyJob5* This,BG_JOB_TYPE *pVal) {
+    return This->lpVtbl->GetType(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetProgress(IBackgroundCopyJob5* This,BG_JOB_PROGRESS *pVal) {
+    return This->lpVtbl->GetProgress(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetTimes(IBackgroundCopyJob5* This,BG_JOB_TIMES *pVal) {
+    return This->lpVtbl->GetTimes(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetState(IBackgroundCopyJob5* This,BG_JOB_STATE *pVal) {
+    return This->lpVtbl->GetState(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetError(IBackgroundCopyJob5* This,IBackgroundCopyError **ppError) {
+    return This->lpVtbl->GetError(This,ppError);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetOwner(IBackgroundCopyJob5* This,LPWSTR *pVal) {
+    return This->lpVtbl->GetOwner(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetDisplayName(IBackgroundCopyJob5* This,LPCWSTR Val) {
+    return This->lpVtbl->SetDisplayName(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetDisplayName(IBackgroundCopyJob5* This,LPWSTR *pVal) {
+    return This->lpVtbl->GetDisplayName(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetDescription(IBackgroundCopyJob5* This,LPCWSTR Val) {
+    return This->lpVtbl->SetDescription(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetDescription(IBackgroundCopyJob5* This,LPWSTR *pVal) {
+    return This->lpVtbl->GetDescription(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetPriority(IBackgroundCopyJob5* This,BG_JOB_PRIORITY Val) {
+    return This->lpVtbl->SetPriority(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetPriority(IBackgroundCopyJob5* This,BG_JOB_PRIORITY *pVal) {
+    return This->lpVtbl->GetPriority(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetNotifyFlags(IBackgroundCopyJob5* This,ULONG Val) {
+    return This->lpVtbl->SetNotifyFlags(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetNotifyFlags(IBackgroundCopyJob5* This,ULONG *pVal) {
+    return This->lpVtbl->GetNotifyFlags(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetNotifyInterface(IBackgroundCopyJob5* This,IUnknown *Val) {
+    return This->lpVtbl->SetNotifyInterface(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetNotifyInterface(IBackgroundCopyJob5* This,IUnknown **pVal) {
+    return This->lpVtbl->GetNotifyInterface(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetMinimumRetryDelay(IBackgroundCopyJob5* This,ULONG Seconds) {
+    return This->lpVtbl->SetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetMinimumRetryDelay(IBackgroundCopyJob5* This,ULONG *Seconds) {
+    return This->lpVtbl->GetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetNoProgressTimeout(IBackgroundCopyJob5* This,ULONG Seconds) {
+    return This->lpVtbl->SetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetNoProgressTimeout(IBackgroundCopyJob5* This,ULONG *Seconds) {
+    return This->lpVtbl->GetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetErrorCount(IBackgroundCopyJob5* This,ULONG *Errors) {
+    return This->lpVtbl->GetErrorCount(This,Errors);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetProxySettings(IBackgroundCopyJob5* This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList) {
+    return This->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetProxySettings(IBackgroundCopyJob5* This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList) {
+    return This->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_TakeOwnership(IBackgroundCopyJob5* This) {
+    return This->lpVtbl->TakeOwnership(This);
+}
+/*** IBackgroundCopyJob2 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetNotifyCmdLine(IBackgroundCopyJob5* This,LPCWSTR prog,LPCWSTR params) {
+    return This->lpVtbl->SetNotifyCmdLine(This,prog,params);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetNotifyCmdLine(IBackgroundCopyJob5* This,LPWSTR *prog,LPWSTR *params) {
+    return This->lpVtbl->GetNotifyCmdLine(This,prog,params);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetReplyProgress(IBackgroundCopyJob5* This,BG_JOB_REPLY_PROGRESS *progress) {
+    return This->lpVtbl->GetReplyProgress(This,progress);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetReplyData(IBackgroundCopyJob5* This,byte **pBuffer,UINT64 *pLength) {
+    return This->lpVtbl->GetReplyData(This,pBuffer,pLength);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetReplyFileName(IBackgroundCopyJob5* This,LPCWSTR filename) {
+    return This->lpVtbl->SetReplyFileName(This,filename);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetReplyFileName(IBackgroundCopyJob5* This,LPWSTR *pFilename) {
+    return This->lpVtbl->GetReplyFileName(This,pFilename);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetCredentials(IBackgroundCopyJob5* This,BG_AUTH_CREDENTIALS *cred) {
+    return This->lpVtbl->SetCredentials(This,cred);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_RemoveCredentials(IBackgroundCopyJob5* This,BG_AUTH_TARGET target,BG_AUTH_SCHEME scheme) {
+    return This->lpVtbl->RemoveCredentials(This,target,scheme);
+}
+/*** IBackgroundCopyJob3 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob5_ReplaceRemotePrefix(IBackgroundCopyJob5* This,LPCWSTR OldPrefix,LPCWSTR NewPrefix) {
+    return This->lpVtbl->ReplaceRemotePrefix(This,OldPrefix,NewPrefix);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_AddFileWithRanges(IBackgroundCopyJob5* This,LPCWSTR RemoteUrl,LPCWSTR LocalName,DWORD RangeCount,BG_FILE_RANGE Ranges[]) {
+    return This->lpVtbl->AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetFileACLFlags(IBackgroundCopyJob5* This,DWORD Flags) {
+    return This->lpVtbl->SetFileACLFlags(This,Flags);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetFileACLFlags(IBackgroundCopyJob5* This,DWORD *Flags) {
+    return This->lpVtbl->GetFileACLFlags(This,Flags);
+}
+/*** IBackgroundCopyJob4 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetPeerCachingFlags(IBackgroundCopyJob5* This,DWORD flags) {
+    return This->lpVtbl->SetPeerCachingFlags(This,flags);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetPeerCachingFlags(IBackgroundCopyJob5* This,DWORD *flags) {
+    return This->lpVtbl->GetPeerCachingFlags(This,flags);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetOwnerIntegrityLevel(IBackgroundCopyJob5* This,ULONG *level) {
+    return This->lpVtbl->GetOwnerIntegrityLevel(This,level);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetOwnerElevationState(IBackgroundCopyJob5* This,WINBOOL *elevated) {
+    return This->lpVtbl->GetOwnerElevationState(This,elevated);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetMaximumDownloadTime(IBackgroundCopyJob5* This,ULONG timeout) {
+    return This->lpVtbl->SetMaximumDownloadTime(This,timeout);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetMaximumDownloadTime(IBackgroundCopyJob5* This,ULONG *timeout) {
+    return This->lpVtbl->GetMaximumDownloadTime(This,timeout);
+}
+/*** IBackgroundCopyJob5 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetProperty(IBackgroundCopyJob5* This,BITS_JOB_PROPERTY_ID id,BITS_JOB_PROPERTY_VALUE value) {
+    return This->lpVtbl->SetProperty(This,id,value);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetProperty(IBackgroundCopyJob5* This,BITS_JOB_PROPERTY_ID id,BITS_JOB_PROPERTY_VALUE *value) {
+    return This->lpVtbl->GetProperty(This,id,value);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IBackgroundCopyJob5_INTERFACE_DEFINED__ */
+
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __bits5_0_h__ */
diff --git a/mingw-w64-headers/include/bits5_0.idl b/mingw-w64-headers/include/bits5_0.idl
new file mode 100644
index 0000000..2d655e1
--- /dev/null
+++ b/mingw-w64-headers/include/bits5_0.idl
@@ -0,0 +1,59 @@
+/*
+ * Background Intelligent Transfer Service (BITS) 5.0 interface
+ *
+ * Copyright 2020 Aaron Hill
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifndef DO_NO_IMPORTS
+import "bits.idl";
+import "bits1_5.idl";
+import "bits2_0.idl";
+import "bits2_5.idl";
+import "bits3_0.idl";
+#endif
+
+cpp_quote("#define BITS_COST_STATE_TRANSFER_ALWAYS 0x800000ff")
+
+[
+    uuid(e847030c-bbba-4657-af6d-484aa42bf1fe),
+    odl
+]
+interface IBackgroundCopyJob5: IBackgroundCopyJob4
+{
+    typedef enum {
+        BITS_JOB_PROPERTY_ID_COST_FLAGS = 1,
+        BITS_JOB_PROPERTY_NOTIFICATION_CLSID = 2,
+        BITS_JOB_PROPERTY_DYNAMIC_CONTENT = 3,
+        BITS_JOB_PROPERTY_HIGH_PERFORMANCE = 4,
+        BITS_JOB_PROPERTY_MAX_DOWNLOAD_SIZE = 5,
+        BITS_JOB_PROPERTY_USE_STORED_CREDENTIALS = 7,
+        BITS_JOB_PROPERTY_MINIMUM_NOTIFICATION_INTERVAL_MS = 9,
+        BITS_JOB_PROPERTY_ON_DEMAND_MODE = 10,
+    } BITS_JOB_PROPERTY_ID;
+
+    typedef union _BITS_JOB_PROPERTY_VALUE {
+        DWORD Dword;
+        GUID ClsID;
+        BOOL Enable;
+        UINT64 Uint64;
+        BG_AUTH_TARGET Target;
+    } BITS_JOB_PROPERTY_VALUE;
+
+    HRESULT SetProperty(BITS_JOB_PROPERTY_ID id, BITS_JOB_PROPERTY_VALUE value);
+    HRESULT GetProperty(BITS_JOB_PROPERTY_ID id, [out, ref] BITS_JOB_PROPERTY_VALUE *value);
+}
diff --git a/mingw-w64-headers/include/wmsdkidl.h b/mingw-w64-headers/include/wmsdkidl.h
index 570c8bf..d0ed3b5 100644
--- a/mingw-w64-headers/include/wmsdkidl.h
+++ b/mingw-w64-headers/include/wmsdkidl.h
@@ -543,6 +543,11 @@
     QWORD qwHostVersion;
     WCHAR *wszPlayerUserAgent;
 } WM_READER_CLIENTINFO;
+enum {
+    WM_SF_CLEANPOINT = 0x1,
+    WM_SF_DISCONTINUITY = 0x2,
+    WM_SF_DATALOSS = 0x4
+};
 typedef enum WMT_ATTR_DATATYPE {
     WMT_TYPE_DWORD = 0,
     WMT_TYPE_STRING = 1,
diff --git a/mingw-w64-headers/include/wmsdkidl.idl b/mingw-w64-headers/include/wmsdkidl.idl
index 67a1019..ccbbbc6 100644
--- a/mingw-w64-headers/include/wmsdkidl.idl
+++ b/mingw-w64-headers/include/wmsdkidl.idl
@@ -81,6 +81,13 @@
     WCHAR *wszPlayerUserAgent;
 } WM_READER_CLIENTINFO;
 
+enum
+{
+    WM_SF_CLEANPOINT    = 0x1,
+    WM_SF_DISCONTINUITY = 0x2,
+    WM_SF_DATALOSS      = 0x4,
+};
+
 typedef enum WMT_ATTR_DATATYPE
 {
     WMT_TYPE_DWORD      = 0,
diff --git a/mingw-w64-headers/include/wmsecure.h b/mingw-w64-headers/include/wmsecure.h
new file mode 100644
index 0000000..feb248f
--- /dev/null
+++ b/mingw-w64-headers/include/wmsecure.h
@@ -0,0 +1,472 @@
+/*** Autogenerated by WIDL 6.12 from include/wmsecure.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 __wmsecure_h__
+#define __wmsecure_h__
+
+/* Forward declarations */
+
+#ifndef __IWMAuthorizer_FWD_DEFINED__
+#define __IWMAuthorizer_FWD_DEFINED__
+typedef interface IWMAuthorizer IWMAuthorizer;
+#ifdef __cplusplus
+interface IWMAuthorizer;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMSecureChannel_FWD_DEFINED__
+#define __IWMSecureChannel_FWD_DEFINED__
+typedef interface IWMSecureChannel IWMSecureChannel;
+#ifdef __cplusplus
+interface IWMSecureChannel;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMGetSecureChannel_FWD_DEFINED__
+#define __IWMGetSecureChannel_FWD_DEFINED__
+typedef interface IWMGetSecureChannel IWMGetSecureChannel;
+#ifdef __cplusplus
+interface IWMGetSecureChannel;
+#endif /* __cplusplus */
+#endif
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <ocidl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*****************************************************************************
+ * IWMAuthorizer interface
+ */
+#ifndef __IWMAuthorizer_INTERFACE_DEFINED__
+#define __IWMAuthorizer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMAuthorizer, 0xd9b67d36, 0xa9ad, 0x4eb4, 0xba,0xef, 0xdb,0x28,0x4e,0xf5,0x50,0x4c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d9b67d36-a9ad-4eb4-baef-db284ef5504c")
+IWMAuthorizer : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetCertCount(
+        DWORD *count) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCert(
+        DWORD index,
+        BYTE **data) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSharedData(
+        DWORD index,
+        const BYTE *data,
+        BYTE *cert,
+        BYTE **ret_data) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMAuthorizer, 0xd9b67d36, 0xa9ad, 0x4eb4, 0xba,0xef, 0xdb,0x28,0x4e,0xf5,0x50,0x4c)
+#endif
+#else
+typedef struct IWMAuthorizerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMAuthorizer *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMAuthorizer *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMAuthorizer *This);
+
+    /*** IWMAuthorizer methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetCertCount)(
+        IWMAuthorizer *This,
+        DWORD *count);
+
+    HRESULT (STDMETHODCALLTYPE *GetCert)(
+        IWMAuthorizer *This,
+        DWORD index,
+        BYTE **data);
+
+    HRESULT (STDMETHODCALLTYPE *GetSharedData)(
+        IWMAuthorizer *This,
+        DWORD index,
+        const BYTE *data,
+        BYTE *cert,
+        BYTE **ret_data);
+
+    END_INTERFACE
+} IWMAuthorizerVtbl;
+
+interface IWMAuthorizer {
+    CONST_VTBL IWMAuthorizerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMAuthorizer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMAuthorizer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMAuthorizer_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMAuthorizer methods ***/
+#define IWMAuthorizer_GetCertCount(This,count) (This)->lpVtbl->GetCertCount(This,count)
+#define IWMAuthorizer_GetCert(This,index,data) (This)->lpVtbl->GetCert(This,index,data)
+#define IWMAuthorizer_GetSharedData(This,index,data,cert,ret_data) (This)->lpVtbl->GetSharedData(This,index,data,cert,ret_data)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMAuthorizer_QueryInterface(IWMAuthorizer* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMAuthorizer_AddRef(IWMAuthorizer* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMAuthorizer_Release(IWMAuthorizer* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMAuthorizer methods ***/
+static FORCEINLINE HRESULT IWMAuthorizer_GetCertCount(IWMAuthorizer* This,DWORD *count) {
+    return This->lpVtbl->GetCertCount(This,count);
+}
+static FORCEINLINE HRESULT IWMAuthorizer_GetCert(IWMAuthorizer* This,DWORD index,BYTE **data) {
+    return This->lpVtbl->GetCert(This,index,data);
+}
+static FORCEINLINE HRESULT IWMAuthorizer_GetSharedData(IWMAuthorizer* This,DWORD index,const BYTE *data,BYTE *cert,BYTE **ret_data) {
+    return This->lpVtbl->GetSharedData(This,index,data,cert,ret_data);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMAuthorizer_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMSecureChannel interface
+ */
+#ifndef __IWMSecureChannel_INTERFACE_DEFINED__
+#define __IWMSecureChannel_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMSecureChannel, 0x2720598a, 0xd0f2, 0x4189, 0xbd,0x10, 0x91,0xc4,0x6e,0xf0,0x93,0x6f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("2720598a-d0f2-4189-bd10-91c46ef0936f")
+IWMSecureChannel : public IWMAuthorizer
+{
+    virtual HRESULT STDMETHODCALLTYPE WMSC_AddCertificate(
+        IWMAuthorizer *cert) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WMSC_AddSignature(
+        BYTE *signature,
+        DWORD size) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WMSC_Connect(
+        IWMSecureChannel *peer) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WMSC_IsConnected(
+        WINBOOL *connected) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WMSC_Disconnect(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WMSC_GetValidCertificate(
+        BYTE **cert,
+        DWORD *signature) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WMSC_Encrypt(
+        BYTE *data,
+        DWORD size) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WMSC_Decrypt(
+        BYTE *data,
+        DWORD size) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WMSC_Lock(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WMSC_Unlock(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE WMSC_SetSharedData(
+        DWORD index,
+        BYTE *data) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMSecureChannel, 0x2720598a, 0xd0f2, 0x4189, 0xbd,0x10, 0x91,0xc4,0x6e,0xf0,0x93,0x6f)
+#endif
+#else
+typedef struct IWMSecureChannelVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMSecureChannel *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMSecureChannel *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMSecureChannel *This);
+
+    /*** IWMAuthorizer methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetCertCount)(
+        IWMSecureChannel *This,
+        DWORD *count);
+
+    HRESULT (STDMETHODCALLTYPE *GetCert)(
+        IWMSecureChannel *This,
+        DWORD index,
+        BYTE **data);
+
+    HRESULT (STDMETHODCALLTYPE *GetSharedData)(
+        IWMSecureChannel *This,
+        DWORD index,
+        const BYTE *data,
+        BYTE *cert,
+        BYTE **ret_data);
+
+    /*** IWMSecureChannel methods ***/
+    HRESULT (STDMETHODCALLTYPE *WMSC_AddCertificate)(
+        IWMSecureChannel *This,
+        IWMAuthorizer *cert);
+
+    HRESULT (STDMETHODCALLTYPE *WMSC_AddSignature)(
+        IWMSecureChannel *This,
+        BYTE *signature,
+        DWORD size);
+
+    HRESULT (STDMETHODCALLTYPE *WMSC_Connect)(
+        IWMSecureChannel *This,
+        IWMSecureChannel *peer);
+
+    HRESULT (STDMETHODCALLTYPE *WMSC_IsConnected)(
+        IWMSecureChannel *This,
+        WINBOOL *connected);
+
+    HRESULT (STDMETHODCALLTYPE *WMSC_Disconnect)(
+        IWMSecureChannel *This);
+
+    HRESULT (STDMETHODCALLTYPE *WMSC_GetValidCertificate)(
+        IWMSecureChannel *This,
+        BYTE **cert,
+        DWORD *signature);
+
+    HRESULT (STDMETHODCALLTYPE *WMSC_Encrypt)(
+        IWMSecureChannel *This,
+        BYTE *data,
+        DWORD size);
+
+    HRESULT (STDMETHODCALLTYPE *WMSC_Decrypt)(
+        IWMSecureChannel *This,
+        BYTE *data,
+        DWORD size);
+
+    HRESULT (STDMETHODCALLTYPE *WMSC_Lock)(
+        IWMSecureChannel *This);
+
+    HRESULT (STDMETHODCALLTYPE *WMSC_Unlock)(
+        IWMSecureChannel *This);
+
+    HRESULT (STDMETHODCALLTYPE *WMSC_SetSharedData)(
+        IWMSecureChannel *This,
+        DWORD index,
+        BYTE *data);
+
+    END_INTERFACE
+} IWMSecureChannelVtbl;
+
+interface IWMSecureChannel {
+    CONST_VTBL IWMSecureChannelVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMSecureChannel_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMSecureChannel_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMSecureChannel_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMAuthorizer methods ***/
+#define IWMSecureChannel_GetCertCount(This,count) (This)->lpVtbl->GetCertCount(This,count)
+#define IWMSecureChannel_GetCert(This,index,data) (This)->lpVtbl->GetCert(This,index,data)
+#define IWMSecureChannel_GetSharedData(This,index,data,cert,ret_data) (This)->lpVtbl->GetSharedData(This,index,data,cert,ret_data)
+/*** IWMSecureChannel methods ***/
+#define IWMSecureChannel_WMSC_AddCertificate(This,cert) (This)->lpVtbl->WMSC_AddCertificate(This,cert)
+#define IWMSecureChannel_WMSC_AddSignature(This,signature,size) (This)->lpVtbl->WMSC_AddSignature(This,signature,size)
+#define IWMSecureChannel_WMSC_Connect(This,peer) (This)->lpVtbl->WMSC_Connect(This,peer)
+#define IWMSecureChannel_WMSC_IsConnected(This,connected) (This)->lpVtbl->WMSC_IsConnected(This,connected)
+#define IWMSecureChannel_WMSC_Disconnect(This) (This)->lpVtbl->WMSC_Disconnect(This)
+#define IWMSecureChannel_WMSC_GetValidCertificate(This,cert,signature) (This)->lpVtbl->WMSC_GetValidCertificate(This,cert,signature)
+#define IWMSecureChannel_WMSC_Encrypt(This,data,size) (This)->lpVtbl->WMSC_Encrypt(This,data,size)
+#define IWMSecureChannel_WMSC_Decrypt(This,data,size) (This)->lpVtbl->WMSC_Decrypt(This,data,size)
+#define IWMSecureChannel_WMSC_Lock(This) (This)->lpVtbl->WMSC_Lock(This)
+#define IWMSecureChannel_WMSC_Unlock(This) (This)->lpVtbl->WMSC_Unlock(This)
+#define IWMSecureChannel_WMSC_SetSharedData(This,index,data) (This)->lpVtbl->WMSC_SetSharedData(This,index,data)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMSecureChannel_QueryInterface(IWMSecureChannel* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMSecureChannel_AddRef(IWMSecureChannel* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMSecureChannel_Release(IWMSecureChannel* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMAuthorizer methods ***/
+static FORCEINLINE HRESULT IWMSecureChannel_GetCertCount(IWMSecureChannel* This,DWORD *count) {
+    return This->lpVtbl->GetCertCount(This,count);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_GetCert(IWMSecureChannel* This,DWORD index,BYTE **data) {
+    return This->lpVtbl->GetCert(This,index,data);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_GetSharedData(IWMSecureChannel* This,DWORD index,const BYTE *data,BYTE *cert,BYTE **ret_data) {
+    return This->lpVtbl->GetSharedData(This,index,data,cert,ret_data);
+}
+/*** IWMSecureChannel methods ***/
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_AddCertificate(IWMSecureChannel* This,IWMAuthorizer *cert) {
+    return This->lpVtbl->WMSC_AddCertificate(This,cert);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_AddSignature(IWMSecureChannel* This,BYTE *signature,DWORD size) {
+    return This->lpVtbl->WMSC_AddSignature(This,signature,size);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_Connect(IWMSecureChannel* This,IWMSecureChannel *peer) {
+    return This->lpVtbl->WMSC_Connect(This,peer);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_IsConnected(IWMSecureChannel* This,WINBOOL *connected) {
+    return This->lpVtbl->WMSC_IsConnected(This,connected);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_Disconnect(IWMSecureChannel* This) {
+    return This->lpVtbl->WMSC_Disconnect(This);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_GetValidCertificate(IWMSecureChannel* This,BYTE **cert,DWORD *signature) {
+    return This->lpVtbl->WMSC_GetValidCertificate(This,cert,signature);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_Encrypt(IWMSecureChannel* This,BYTE *data,DWORD size) {
+    return This->lpVtbl->WMSC_Encrypt(This,data,size);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_Decrypt(IWMSecureChannel* This,BYTE *data,DWORD size) {
+    return This->lpVtbl->WMSC_Decrypt(This,data,size);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_Lock(IWMSecureChannel* This) {
+    return This->lpVtbl->WMSC_Lock(This);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_Unlock(IWMSecureChannel* This) {
+    return This->lpVtbl->WMSC_Unlock(This);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_SetSharedData(IWMSecureChannel* This,DWORD index,BYTE *data) {
+    return This->lpVtbl->WMSC_SetSharedData(This,index,data);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMSecureChannel_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMGetSecureChannel interface
+ */
+#ifndef __IWMGetSecureChannel_INTERFACE_DEFINED__
+#define __IWMGetSecureChannel_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMGetSecureChannel, 0x94bc0598, 0xc3d2, 0x11d3, 0xbe,0xdf, 0x00,0xc0,0x4f,0x61,0x29,0x86);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("94bc0598-c3d2-11d3-bedf-00c04f612986")
+IWMGetSecureChannel : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetPeerSecureChannelInterface(
+        IWMSecureChannel **channel) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMGetSecureChannel, 0x94bc0598, 0xc3d2, 0x11d3, 0xbe,0xdf, 0x00,0xc0,0x4f,0x61,0x29,0x86)
+#endif
+#else
+typedef struct IWMGetSecureChannelVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWMGetSecureChannel *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWMGetSecureChannel *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWMGetSecureChannel *This);
+
+    /*** IWMGetSecureChannel methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetPeerSecureChannelInterface)(
+        IWMGetSecureChannel *This,
+        IWMSecureChannel **channel);
+
+    END_INTERFACE
+} IWMGetSecureChannelVtbl;
+
+interface IWMGetSecureChannel {
+    CONST_VTBL IWMGetSecureChannelVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMGetSecureChannel_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMGetSecureChannel_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMGetSecureChannel_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMGetSecureChannel methods ***/
+#define IWMGetSecureChannel_GetPeerSecureChannelInterface(This,channel) (This)->lpVtbl->GetPeerSecureChannelInterface(This,channel)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMGetSecureChannel_QueryInterface(IWMGetSecureChannel* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMGetSecureChannel_AddRef(IWMGetSecureChannel* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMGetSecureChannel_Release(IWMGetSecureChannel* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWMGetSecureChannel methods ***/
+static FORCEINLINE HRESULT IWMGetSecureChannel_GetPeerSecureChannelInterface(IWMGetSecureChannel* This,IWMSecureChannel **channel) {
+    return This->lpVtbl->GetPeerSecureChannelInterface(This,channel);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWMGetSecureChannel_INTERFACE_DEFINED__ */
+
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __wmsecure_h__ */