/**
 * 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.
 */
#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>
#endif

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif

#ifndef __qmgr_h__
#define __qmgr_h__

#ifndef __IBackgroundCopyJob1_FWD_DEFINED__
#define __IBackgroundCopyJob1_FWD_DEFINED__
typedef struct IBackgroundCopyJob1 IBackgroundCopyJob1;
#endif

#ifndef __IEnumBackgroundCopyJobs1_FWD_DEFINED__
#define __IEnumBackgroundCopyJobs1_FWD_DEFINED__
typedef struct IEnumBackgroundCopyJobs1 IEnumBackgroundCopyJobs1;
#endif

#ifndef __IBackgroundCopyGroup_FWD_DEFINED__
#define __IBackgroundCopyGroup_FWD_DEFINED__
typedef struct IBackgroundCopyGroup IBackgroundCopyGroup;
#endif

#ifndef __IEnumBackgroundCopyGroups_FWD_DEFINED__
#define __IEnumBackgroundCopyGroups_FWD_DEFINED__
typedef struct IEnumBackgroundCopyGroups IEnumBackgroundCopyGroups;
#endif

#ifndef __IBackgroundCopyCallback1_FWD_DEFINED__
#define __IBackgroundCopyCallback1_FWD_DEFINED__
typedef struct IBackgroundCopyCallback1 IBackgroundCopyCallback1;
#endif

#ifndef __IBackgroundCopyQMgr_FWD_DEFINED__
#define __IBackgroundCopyQMgr_FWD_DEFINED__
typedef struct IBackgroundCopyQMgr IBackgroundCopyQMgr;
#endif

#ifndef __BackgroundCopyQMgr_FWD_DEFINED__
#define __BackgroundCopyQMgr_FWD_DEFINED__
#ifdef __cplusplus
typedef class BackgroundCopyQMgr BackgroundCopyQMgr;
#else
typedef struct BackgroundCopyQMgr BackgroundCopyQMgr;
#endif
#endif

#include "unknwn.h"
#include "ocidl.h"
#include "docobj.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 *);
#endif

#define QM_NOTIFY_FILE_DONE 0x00000001
#define QM_NOTIFY_JOB_DONE 0x00000002
#define QM_NOTIFY_GROUP_DONE 0x00000004
#define QM_NOTIFY_DISABLE_NOTIFY 0x00000040
#define QM_NOTIFY_USE_PROGRESSEX 0x00000080
#define QM_STATUS_FILE_COMPLETE 0x00000001
#define QM_STATUS_FILE_INCOMPLETE 0x00000002
#define QM_STATUS_JOB_COMPLETE 0x00000004
#define QM_STATUS_JOB_INCOMPLETE 0x00000008
#define QM_STATUS_JOB_ERROR 0x00000010
#define QM_STATUS_JOB_FOREGROUND 0x00000020
#define QM_STATUS_GROUP_COMPLETE 0x00000040
#define QM_STATUS_GROUP_INCOMPLETE 0x00000080
#define QM_STATUS_GROUP_SUSPENDED 0x00000100
#define QM_STATUS_GROUP_ERROR 0x00000200
#define QM_STATUS_GROUP_FOREGROUND 0x00000400
#define QM_PROTOCOL_HTTP 1
#define QM_PROTOCOL_FTP 2
#define QM_PROTOCOL_SMB 3
#define QM_PROTOCOL_CUSTOM 4
#define QM_PROGRESS_PERCENT_DONE 1
#define QM_PROGRESS_TIME_DONE 2
#define QM_PROGRESS_SIZE_DONE 3
#define QM_E_INVALID_STATE 0x81001001
#define QM_E_SERVICE_UNAVAILABLE 0x81001002
#define QM_E_DOWNLOADER_UNAVAILABLE 0x81001003
#define QM_E_ITEM_NOT_FOUND 0x81001004

  extern RPC_IF_HANDLE __MIDL_itf_qmgr_0000_v0_0_c_ifspec;
  extern RPC_IF_HANDLE __MIDL_itf_qmgr_0000_v0_0_s_ifspec;

#ifndef __IBackgroundCopyJob1_INTERFACE_DEFINED__
#define __IBackgroundCopyJob1_INTERFACE_DEFINED__

  typedef struct _FILESETINFO {
    BSTR bstrRemoteFile;
    BSTR bstrLocalFile;
    DWORD dwSizeHint;
  } FILESETINFO;

  EXTERN_C const IID IID_IBackgroundCopyJob1;
#if defined(__cplusplus) && !defined(CINTERFACE)
  struct IBackgroundCopyJob1 : public IUnknown {
  public:
    virtual HRESULT WINAPI CancelJob(void) = 0;
    virtual HRESULT WINAPI GetProgress(DWORD dwFlags,DWORD *pdwProgress) = 0;
    virtual HRESULT WINAPI GetStatus(DWORD *pdwStatus,DWORD *pdwWin32Result,DWORD *pdwTransportResult,DWORD *pdwNumOfRetries) = 0;
    virtual HRESULT WINAPI AddFiles(ULONG cFileCount,FILESETINFO **ppFileSet) = 0;
    virtual HRESULT WINAPI GetFile(ULONG cFileIndex,FILESETINFO *pFileInfo) = 0;
    virtual HRESULT WINAPI GetFileCount(DWORD *pdwFileCount) = 0;
    virtual HRESULT WINAPI SwitchToForeground(void) = 0;
    virtual HRESULT WINAPI get_JobID(GUID *pguidJobID) = 0;
  };
#else
  typedef struct IBackgroundCopyJob1Vtbl {
    BEGIN_INTERFACE
      HRESULT (WINAPI *QueryInterface)(IBackgroundCopyJob1 *This,REFIID riid,void **ppvObject);
      ULONG (WINAPI *AddRef)(IBackgroundCopyJob1 *This);
      ULONG (WINAPI *Release)(IBackgroundCopyJob1 *This);
      HRESULT (WINAPI *CancelJob)(IBackgroundCopyJob1 *This);
      HRESULT (WINAPI *GetProgress)(IBackgroundCopyJob1 *This,DWORD dwFlags,DWORD *pdwProgress);
      HRESULT (WINAPI *GetStatus)(IBackgroundCopyJob1 *This,DWORD *pdwStatus,DWORD *pdwWin32Result,DWORD *pdwTransportResult,DWORD *pdwNumOfRetries);
      HRESULT (WINAPI *AddFiles)(IBackgroundCopyJob1 *This,ULONG cFileCount,FILESETINFO **ppFileSet);
      HRESULT (WINAPI *GetFile)(IBackgroundCopyJob1 *This,ULONG cFileIndex,FILESETINFO *pFileInfo);
      HRESULT (WINAPI *GetFileCount)(IBackgroundCopyJob1 *This,DWORD *pdwFileCount);
      HRESULT (WINAPI *SwitchToForeground)(IBackgroundCopyJob1 *This);
      HRESULT (WINAPI *get_JobID)(IBackgroundCopyJob1 *This,GUID *pguidJobID);
    END_INTERFACE
  } IBackgroundCopyJob1Vtbl;
  struct IBackgroundCopyJob1 {
    CONST_VTBL struct IBackgroundCopyJob1Vtbl *lpVtbl;
  };
#ifdef COBJMACROS
#define IBackgroundCopyJob1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyJob1_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyJob1_Release(This) (This)->lpVtbl->Release(This)
#define IBackgroundCopyJob1_CancelJob(This) (This)->lpVtbl->CancelJob(This)
#define IBackgroundCopyJob1_GetProgress(This,dwFlags,pdwProgress) (This)->lpVtbl->GetProgress(This,dwFlags,pdwProgress)
#define IBackgroundCopyJob1_GetStatus(This,pdwStatus,pdwWin32Result,pdwTransportResult,pdwNumOfRetries) (This)->lpVtbl->GetStatus(This,pdwStatus,pdwWin32Result,pdwTransportResult,pdwNumOfRetries)
#define IBackgroundCopyJob1_AddFiles(This,cFileCount,ppFileSet) (This)->lpVtbl->AddFiles(This,cFileCount,ppFileSet)
#define IBackgroundCopyJob1_GetFile(This,cFileIndex,pFileInfo) (This)->lpVtbl->GetFile(This,cFileIndex,pFileInfo)
#define IBackgroundCopyJob1_GetFileCount(This,pdwFileCount) (This)->lpVtbl->GetFileCount(This,pdwFileCount)
#define IBackgroundCopyJob1_SwitchToForeground(This) (This)->lpVtbl->SwitchToForeground(This)
#define IBackgroundCopyJob1_get_JobID(This,pguidJobID) (This)->lpVtbl->get_JobID(This,pguidJobID)
#endif
#endif
  HRESULT WINAPI IBackgroundCopyJob1_CancelJob_Proxy(IBackgroundCopyJob1 *This);
  void __RPC_STUB IBackgroundCopyJob1_CancelJob_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyJob1_GetProgress_Proxy(IBackgroundCopyJob1 *This,DWORD dwFlags,DWORD *pdwProgress);
  void __RPC_STUB IBackgroundCopyJob1_GetProgress_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyJob1_GetStatus_Proxy(IBackgroundCopyJob1 *This,DWORD *pdwStatus,DWORD *pdwWin32Result,DWORD *pdwTransportResult,DWORD *pdwNumOfRetries);
  void __RPC_STUB IBackgroundCopyJob1_GetStatus_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyJob1_AddFiles_Proxy(IBackgroundCopyJob1 *This,ULONG cFileCount,FILESETINFO **ppFileSet);
  void __RPC_STUB IBackgroundCopyJob1_AddFiles_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyJob1_GetFile_Proxy(IBackgroundCopyJob1 *This,ULONG cFileIndex,FILESETINFO *pFileInfo);
  void __RPC_STUB IBackgroundCopyJob1_GetFile_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyJob1_GetFileCount_Proxy(IBackgroundCopyJob1 *This,DWORD *pdwFileCount);
  void __RPC_STUB IBackgroundCopyJob1_GetFileCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyJob1_SwitchToForeground_Proxy(IBackgroundCopyJob1 *This);
  void __RPC_STUB IBackgroundCopyJob1_SwitchToForeground_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyJob1_get_JobID_Proxy(IBackgroundCopyJob1 *This,GUID *pguidJobID);
  void __RPC_STUB IBackgroundCopyJob1_get_JobID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif

#ifndef __IEnumBackgroundCopyJobs1_INTERFACE_DEFINED__
#define __IEnumBackgroundCopyJobs1_INTERFACE_DEFINED__
  EXTERN_C const IID IID_IEnumBackgroundCopyJobs1;
#if defined(__cplusplus) && !defined(CINTERFACE)
  struct IEnumBackgroundCopyJobs1 : public IUnknown {
  public:
    virtual HRESULT WINAPI Next(ULONG celt,GUID *rgelt,ULONG *pceltFetched) = 0;
    virtual HRESULT WINAPI Skip(ULONG celt) = 0;
    virtual HRESULT WINAPI Reset(void) = 0;
    virtual HRESULT WINAPI Clone(IEnumBackgroundCopyJobs1 **ppenum) = 0;
    virtual HRESULT WINAPI GetCount(ULONG *puCount) = 0;
  };
#else
  typedef struct IEnumBackgroundCopyJobs1Vtbl {
    BEGIN_INTERFACE
      HRESULT (WINAPI *QueryInterface)(IEnumBackgroundCopyJobs1 *This,REFIID riid,void **ppvObject);
      ULONG (WINAPI *AddRef)(IEnumBackgroundCopyJobs1 *This);
      ULONG (WINAPI *Release)(IEnumBackgroundCopyJobs1 *This);
      HRESULT (WINAPI *Next)(IEnumBackgroundCopyJobs1 *This,ULONG celt,GUID *rgelt,ULONG *pceltFetched);
      HRESULT (WINAPI *Skip)(IEnumBackgroundCopyJobs1 *This,ULONG celt);
      HRESULT (WINAPI *Reset)(IEnumBackgroundCopyJobs1 *This);
      HRESULT (WINAPI *Clone)(IEnumBackgroundCopyJobs1 *This,IEnumBackgroundCopyJobs1 **ppenum);
      HRESULT (WINAPI *GetCount)(IEnumBackgroundCopyJobs1 *This,ULONG *puCount);
    END_INTERFACE
  } IEnumBackgroundCopyJobs1Vtbl;
  struct IEnumBackgroundCopyJobs1 {
    CONST_VTBL struct IEnumBackgroundCopyJobs1Vtbl *lpVtbl;
  };
#ifdef COBJMACROS
#define IEnumBackgroundCopyJobs1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumBackgroundCopyJobs1_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumBackgroundCopyJobs1_Release(This) (This)->lpVtbl->Release(This)
#define IEnumBackgroundCopyJobs1_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IEnumBackgroundCopyJobs1_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumBackgroundCopyJobs1_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumBackgroundCopyJobs1_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
#define IEnumBackgroundCopyJobs1_GetCount(This,puCount) (This)->lpVtbl->GetCount(This,puCount)
#endif
#endif
  HRESULT WINAPI IEnumBackgroundCopyJobs1_Next_Proxy(IEnumBackgroundCopyJobs1 *This,ULONG celt,GUID *rgelt,ULONG *pceltFetched);
  void __RPC_STUB IEnumBackgroundCopyJobs1_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumBackgroundCopyJobs1_Skip_Proxy(IEnumBackgroundCopyJobs1 *This,ULONG celt);
  void __RPC_STUB IEnumBackgroundCopyJobs1_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumBackgroundCopyJobs1_Reset_Proxy(IEnumBackgroundCopyJobs1 *This);
  void __RPC_STUB IEnumBackgroundCopyJobs1_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumBackgroundCopyJobs1_Clone_Proxy(IEnumBackgroundCopyJobs1 *This,IEnumBackgroundCopyJobs1 **ppenum);
  void __RPC_STUB IEnumBackgroundCopyJobs1_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumBackgroundCopyJobs1_GetCount_Proxy(IEnumBackgroundCopyJobs1 *This,ULONG *puCount);
  void __RPC_STUB IEnumBackgroundCopyJobs1_GetCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif

#ifndef __IBackgroundCopyGroup_INTERFACE_DEFINED__
#define __IBackgroundCopyGroup_INTERFACE_DEFINED__
  typedef enum GROUPPROP {
    GROUPPROP_PRIORITY = 0,GROUPPROP_REMOTEUSERID = 1,GROUPPROP_REMOTEUSERPWD = 2,GROUPPROP_LOCALUSERID = 3,GROUPPROP_LOCALUSERPWD = 4,
    GROUPPROP_PROTOCOLFLAGS = 5,GROUPPROP_NOTIFYFLAGS = 6,GROUPPROP_NOTIFYCLSID = 7,GROUPPROP_PROGRESSSIZE = 8,GROUPPROP_PROGRESSPERCENT = 9,
    GROUPPROP_PROGRESSTIME = 10,GROUPPROP_DISPLAYNAME = 11,GROUPPROP_DESCRIPTION = 12
  } GROUPPROP;

  EXTERN_C const IID IID_IBackgroundCopyGroup;
#if defined(__cplusplus) && !defined(CINTERFACE)
  struct IBackgroundCopyGroup : public IUnknown {
  public:
    virtual HRESULT WINAPI GetProp(GROUPPROP propID,VARIANT *pvarVal) = 0;
    virtual HRESULT WINAPI SetProp(GROUPPROP propID,VARIANT *pvarVal) = 0;
    virtual HRESULT WINAPI GetProgress(DWORD dwFlags,DWORD *pdwProgress) = 0;
    virtual HRESULT WINAPI GetStatus(DWORD *pdwStatus,DWORD *pdwJobIndex) = 0;
    virtual HRESULT WINAPI GetJob(GUID jobID,IBackgroundCopyJob1 **ppJob) = 0;
    virtual HRESULT WINAPI SuspendGroup(void) = 0;
    virtual HRESULT WINAPI ResumeGroup(void) = 0;
    virtual HRESULT WINAPI CancelGroup(void) = 0;
    virtual HRESULT WINAPI get_Size(DWORD *pdwSize) = 0;
    virtual HRESULT WINAPI get_GroupID(GUID *pguidGroupID) = 0;
    virtual HRESULT WINAPI CreateJob(GUID guidJobID,IBackgroundCopyJob1 **ppJob) = 0;
    virtual HRESULT WINAPI EnumJobs(DWORD dwFlags,IEnumBackgroundCopyJobs1 **ppEnumJobs) = 0;
    virtual HRESULT WINAPI SwitchToForeground(void) = 0;
    virtual HRESULT WINAPI QueryNewJobInterface(REFIID iid,IUnknown **pUnk) = 0;
    virtual HRESULT WINAPI SetNotificationPointer(REFIID iid,IUnknown *pUnk) = 0;
  };
#else
  typedef struct IBackgroundCopyGroupVtbl {
    BEGIN_INTERFACE
      HRESULT (WINAPI *QueryInterface)(IBackgroundCopyGroup *This,REFIID riid,void **ppvObject);
      ULONG (WINAPI *AddRef)(IBackgroundCopyGroup *This);
      ULONG (WINAPI *Release)(IBackgroundCopyGroup *This);
      HRESULT (WINAPI *GetProp)(IBackgroundCopyGroup *This,GROUPPROP propID,VARIANT *pvarVal);
      HRESULT (WINAPI *SetProp)(IBackgroundCopyGroup *This,GROUPPROP propID,VARIANT *pvarVal);
      HRESULT (WINAPI *GetProgress)(IBackgroundCopyGroup *This,DWORD dwFlags,DWORD *pdwProgress);
      HRESULT (WINAPI *GetStatus)(IBackgroundCopyGroup *This,DWORD *pdwStatus,DWORD *pdwJobIndex);
      HRESULT (WINAPI *GetJob)(IBackgroundCopyGroup *This,GUID jobID,IBackgroundCopyJob1 **ppJob);
      HRESULT (WINAPI *SuspendGroup)(IBackgroundCopyGroup *This);
      HRESULT (WINAPI *ResumeGroup)(IBackgroundCopyGroup *This);
      HRESULT (WINAPI *CancelGroup)(IBackgroundCopyGroup *This);
      HRESULT (WINAPI *get_Size)(IBackgroundCopyGroup *This,DWORD *pdwSize);
      HRESULT (WINAPI *get_GroupID)(IBackgroundCopyGroup *This,GUID *pguidGroupID);
      HRESULT (WINAPI *CreateJob)(IBackgroundCopyGroup *This,GUID guidJobID,IBackgroundCopyJob1 **ppJob);
      HRESULT (WINAPI *EnumJobs)(IBackgroundCopyGroup *This,DWORD dwFlags,IEnumBackgroundCopyJobs1 **ppEnumJobs);
      HRESULT (WINAPI *SwitchToForeground)(IBackgroundCopyGroup *This);
      HRESULT (WINAPI *QueryNewJobInterface)(IBackgroundCopyGroup *This,REFIID iid,IUnknown **pUnk);
      HRESULT (WINAPI *SetNotificationPointer)(IBackgroundCopyGroup *This,REFIID iid,IUnknown *pUnk);
    END_INTERFACE
  } IBackgroundCopyGroupVtbl;
  struct IBackgroundCopyGroup {
    CONST_VTBL struct IBackgroundCopyGroupVtbl *lpVtbl;
  };
#ifdef COBJMACROS
#define IBackgroundCopyGroup_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyGroup_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyGroup_Release(This) (This)->lpVtbl->Release(This)
#define IBackgroundCopyGroup_GetProp(This,propID,pvarVal) (This)->lpVtbl->GetProp(This,propID,pvarVal)
#define IBackgroundCopyGroup_SetProp(This,propID,pvarVal) (This)->lpVtbl->SetProp(This,propID,pvarVal)
#define IBackgroundCopyGroup_GetProgress(This,dwFlags,pdwProgress) (This)->lpVtbl->GetProgress(This,dwFlags,pdwProgress)
#define IBackgroundCopyGroup_GetStatus(This,pdwStatus,pdwJobIndex) (This)->lpVtbl->GetStatus(This,pdwStatus,pdwJobIndex)
#define IBackgroundCopyGroup_GetJob(This,jobID,ppJob) (This)->lpVtbl->GetJob(This,jobID,ppJob)
#define IBackgroundCopyGroup_SuspendGroup(This) (This)->lpVtbl->SuspendGroup(This)
#define IBackgroundCopyGroup_ResumeGroup(This) (This)->lpVtbl->ResumeGroup(This)
#define IBackgroundCopyGroup_CancelGroup(This) (This)->lpVtbl->CancelGroup(This)
#define IBackgroundCopyGroup_get_Size(This,pdwSize) (This)->lpVtbl->get_Size(This,pdwSize)
#define IBackgroundCopyGroup_get_GroupID(This,pguidGroupID) (This)->lpVtbl->get_GroupID(This,pguidGroupID)
#define IBackgroundCopyGroup_CreateJob(This,guidJobID,ppJob) (This)->lpVtbl->CreateJob(This,guidJobID,ppJob)
#define IBackgroundCopyGroup_EnumJobs(This,dwFlags,ppEnumJobs) (This)->lpVtbl->EnumJobs(This,dwFlags,ppEnumJobs)
#define IBackgroundCopyGroup_SwitchToForeground(This) (This)->lpVtbl->SwitchToForeground(This)
#define IBackgroundCopyGroup_QueryNewJobInterface(This,iid,pUnk) (This)->lpVtbl->QueryNewJobInterface(This,iid,pUnk)
#define IBackgroundCopyGroup_SetNotificationPointer(This,iid,pUnk) (This)->lpVtbl->SetNotificationPointer(This,iid,pUnk)
#endif
#endif
  HRESULT WINAPI IBackgroundCopyGroup_GetProp_Proxy(IBackgroundCopyGroup *This,GROUPPROP propID,VARIANT *pvarVal);
  void __RPC_STUB IBackgroundCopyGroup_GetProp_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyGroup_InternalSetProp_Proxy(IBackgroundCopyGroup *This,GROUPPROP propID,VARIANT *pvarVal);
  void __RPC_STUB IBackgroundCopyGroup_InternalSetProp_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyGroup_GetProgress_Proxy(IBackgroundCopyGroup *This,DWORD dwFlags,DWORD *pdwProgress);
  void __RPC_STUB IBackgroundCopyGroup_GetProgress_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyGroup_GetStatus_Proxy(IBackgroundCopyGroup *This,DWORD *pdwStatus,DWORD *pdwJobIndex);
  void __RPC_STUB IBackgroundCopyGroup_GetStatus_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyGroup_GetJob_Proxy(IBackgroundCopyGroup *This,GUID jobID,IBackgroundCopyJob1 **ppJob);
  void __RPC_STUB IBackgroundCopyGroup_GetJob_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyGroup_SuspendGroup_Proxy(IBackgroundCopyGroup *This);
  void __RPC_STUB IBackgroundCopyGroup_SuspendGroup_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyGroup_ResumeGroup_Proxy(IBackgroundCopyGroup *This);
  void __RPC_STUB IBackgroundCopyGroup_ResumeGroup_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyGroup_CancelGroup_Proxy(IBackgroundCopyGroup *This);
  void __RPC_STUB IBackgroundCopyGroup_CancelGroup_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyGroup_get_Size_Proxy(IBackgroundCopyGroup *This,DWORD *pdwSize);
  void __RPC_STUB IBackgroundCopyGroup_get_Size_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyGroup_get_GroupID_Proxy(IBackgroundCopyGroup *This,GUID *pguidGroupID);
  void __RPC_STUB IBackgroundCopyGroup_get_GroupID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyGroup_CreateJob_Proxy(IBackgroundCopyGroup *This,GUID guidJobID,IBackgroundCopyJob1 **ppJob);
  void __RPC_STUB IBackgroundCopyGroup_CreateJob_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyGroup_EnumJobs_Proxy(IBackgroundCopyGroup *This,DWORD dwFlags,IEnumBackgroundCopyJobs1 **ppEnumJobs);
  void __RPC_STUB IBackgroundCopyGroup_EnumJobs_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyGroup_SwitchToForeground_Proxy(IBackgroundCopyGroup *This);
  void __RPC_STUB IBackgroundCopyGroup_SwitchToForeground_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyGroup_QueryNewJobInterface_Proxy(IBackgroundCopyGroup *This,REFIID iid,IUnknown **pUnk);
  void __RPC_STUB IBackgroundCopyGroup_QueryNewJobInterface_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyGroup_SetNotificationPointer_Proxy(IBackgroundCopyGroup *This,REFIID iid,IUnknown *pUnk);
  void __RPC_STUB IBackgroundCopyGroup_SetNotificationPointer_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif

#ifndef __IEnumBackgroundCopyGroups_INTERFACE_DEFINED__
#define __IEnumBackgroundCopyGroups_INTERFACE_DEFINED__
  EXTERN_C const IID IID_IEnumBackgroundCopyGroups;
#if defined(__cplusplus) && !defined(CINTERFACE)
  struct IEnumBackgroundCopyGroups : public IUnknown {
  public:
    virtual HRESULT WINAPI Next(ULONG celt,GUID *rgelt,ULONG *pceltFetched) = 0;
    virtual HRESULT WINAPI Skip(ULONG celt) = 0;
    virtual HRESULT WINAPI Reset(void) = 0;
    virtual HRESULT WINAPI Clone(IEnumBackgroundCopyGroups **ppenum) = 0;
    virtual HRESULT WINAPI GetCount(ULONG *puCount) = 0;
  };
#else
  typedef struct IEnumBackgroundCopyGroupsVtbl {
    BEGIN_INTERFACE
      HRESULT (WINAPI *QueryInterface)(IEnumBackgroundCopyGroups *This,REFIID riid,void **ppvObject);
      ULONG (WINAPI *AddRef)(IEnumBackgroundCopyGroups *This);
      ULONG (WINAPI *Release)(IEnumBackgroundCopyGroups *This);
      HRESULT (WINAPI *Next)(IEnumBackgroundCopyGroups *This,ULONG celt,GUID *rgelt,ULONG *pceltFetched);
      HRESULT (WINAPI *Skip)(IEnumBackgroundCopyGroups *This,ULONG celt);
      HRESULT (WINAPI *Reset)(IEnumBackgroundCopyGroups *This);
      HRESULT (WINAPI *Clone)(IEnumBackgroundCopyGroups *This,IEnumBackgroundCopyGroups **ppenum);
      HRESULT (WINAPI *GetCount)(IEnumBackgroundCopyGroups *This,ULONG *puCount);
    END_INTERFACE
  } IEnumBackgroundCopyGroupsVtbl;
  struct IEnumBackgroundCopyGroups {
    CONST_VTBL struct IEnumBackgroundCopyGroupsVtbl *lpVtbl;
  };
#ifdef COBJMACROS
#define IEnumBackgroundCopyGroups_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumBackgroundCopyGroups_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumBackgroundCopyGroups_Release(This) (This)->lpVtbl->Release(This)
#define IEnumBackgroundCopyGroups_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IEnumBackgroundCopyGroups_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumBackgroundCopyGroups_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumBackgroundCopyGroups_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
#define IEnumBackgroundCopyGroups_GetCount(This,puCount) (This)->lpVtbl->GetCount(This,puCount)
#endif
#endif
  HRESULT WINAPI IEnumBackgroundCopyGroups_Next_Proxy(IEnumBackgroundCopyGroups *This,ULONG celt,GUID *rgelt,ULONG *pceltFetched);
  void __RPC_STUB IEnumBackgroundCopyGroups_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumBackgroundCopyGroups_Skip_Proxy(IEnumBackgroundCopyGroups *This,ULONG celt);
  void __RPC_STUB IEnumBackgroundCopyGroups_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumBackgroundCopyGroups_Reset_Proxy(IEnumBackgroundCopyGroups *This);
  void __RPC_STUB IEnumBackgroundCopyGroups_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumBackgroundCopyGroups_Clone_Proxy(IEnumBackgroundCopyGroups *This,IEnumBackgroundCopyGroups **ppenum);
  void __RPC_STUB IEnumBackgroundCopyGroups_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IEnumBackgroundCopyGroups_GetCount_Proxy(IEnumBackgroundCopyGroups *This,ULONG *puCount);
  void __RPC_STUB IEnumBackgroundCopyGroups_GetCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif

#ifndef __IBackgroundCopyCallback1_INTERFACE_DEFINED__
#define __IBackgroundCopyCallback1_INTERFACE_DEFINED__
  EXTERN_C const IID IID_IBackgroundCopyCallback1;
#if defined(__cplusplus) && !defined(CINTERFACE)
  struct IBackgroundCopyCallback1 : public IUnknown {
  public:
    virtual HRESULT WINAPI OnStatus(IBackgroundCopyGroup *pGroup,IBackgroundCopyJob1 *pJob,DWORD dwFileIndex,DWORD dwStatus,DWORD dwNumOfRetries,DWORD dwWin32Result,DWORD dwTransportResult) = 0;
    virtual HRESULT WINAPI OnProgress(DWORD ProgressType,IBackgroundCopyGroup *pGroup,IBackgroundCopyJob1 *pJob,DWORD dwFileIndex,DWORD dwProgressValue) = 0;
    virtual HRESULT WINAPI OnProgressEx(DWORD ProgressType,IBackgroundCopyGroup *pGroup,IBackgroundCopyJob1 *pJob,DWORD dwFileIndex,DWORD dwProgressValue,DWORD dwByteArraySize,BYTE *pByte) = 0;
  };
#else
  typedef struct IBackgroundCopyCallback1Vtbl {
    BEGIN_INTERFACE
      HRESULT (WINAPI *QueryInterface)(IBackgroundCopyCallback1 *This,REFIID riid,void **ppvObject);
      ULONG (WINAPI *AddRef)(IBackgroundCopyCallback1 *This);
      ULONG (WINAPI *Release)(IBackgroundCopyCallback1 *This);
      HRESULT (WINAPI *OnStatus)(IBackgroundCopyCallback1 *This,IBackgroundCopyGroup *pGroup,IBackgroundCopyJob1 *pJob,DWORD dwFileIndex,DWORD dwStatus,DWORD dwNumOfRetries,DWORD dwWin32Result,DWORD dwTransportResult);
      HRESULT (WINAPI *OnProgress)(IBackgroundCopyCallback1 *This,DWORD ProgressType,IBackgroundCopyGroup *pGroup,IBackgroundCopyJob1 *pJob,DWORD dwFileIndex,DWORD dwProgressValue);
      HRESULT (WINAPI *OnProgressEx)(IBackgroundCopyCallback1 *This,DWORD ProgressType,IBackgroundCopyGroup *pGroup,IBackgroundCopyJob1 *pJob,DWORD dwFileIndex,DWORD dwProgressValue,DWORD dwByteArraySize,BYTE *pByte);
    END_INTERFACE
  } IBackgroundCopyCallback1Vtbl;
  struct IBackgroundCopyCallback1 {
    CONST_VTBL struct IBackgroundCopyCallback1Vtbl *lpVtbl;
  };
#ifdef COBJMACROS
#define IBackgroundCopyCallback1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyCallback1_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyCallback1_Release(This) (This)->lpVtbl->Release(This)
#define IBackgroundCopyCallback1_OnStatus(This,pGroup,pJob,dwFileIndex,dwStatus,dwNumOfRetries,dwWin32Result,dwTransportResult) (This)->lpVtbl->OnStatus(This,pGroup,pJob,dwFileIndex,dwStatus,dwNumOfRetries,dwWin32Result,dwTransportResult)
#define IBackgroundCopyCallback1_OnProgress(This,ProgressType,pGroup,pJob,dwFileIndex,dwProgressValue) (This)->lpVtbl->OnProgress(This,ProgressType,pGroup,pJob,dwFileIndex,dwProgressValue)
#define IBackgroundCopyCallback1_OnProgressEx(This,ProgressType,pGroup,pJob,dwFileIndex,dwProgressValue,dwByteArraySize,pByte) (This)->lpVtbl->OnProgressEx(This,ProgressType,pGroup,pJob,dwFileIndex,dwProgressValue,dwByteArraySize,pByte)
#endif
#endif
  HRESULT WINAPI IBackgroundCopyCallback1_OnStatus_Proxy(IBackgroundCopyCallback1 *This,IBackgroundCopyGroup *pGroup,IBackgroundCopyJob1 *pJob,DWORD dwFileIndex,DWORD dwStatus,DWORD dwNumOfRetries,DWORD dwWin32Result,DWORD dwTransportResult);
  void __RPC_STUB IBackgroundCopyCallback1_OnStatus_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyCallback1_OnProgress_Proxy(IBackgroundCopyCallback1 *This,DWORD ProgressType,IBackgroundCopyGroup *pGroup,IBackgroundCopyJob1 *pJob,DWORD dwFileIndex,DWORD dwProgressValue);
  void __RPC_STUB IBackgroundCopyCallback1_OnProgress_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyCallback1_OnProgressEx_Proxy(IBackgroundCopyCallback1 *This,DWORD ProgressType,IBackgroundCopyGroup *pGroup,IBackgroundCopyJob1 *pJob,DWORD dwFileIndex,DWORD dwProgressValue,DWORD dwByteArraySize,BYTE *pByte);
  void __RPC_STUB IBackgroundCopyCallback1_OnProgressEx_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif

#ifndef __IBackgroundCopyQMgr_INTERFACE_DEFINED__
#define __IBackgroundCopyQMgr_INTERFACE_DEFINED__
  EXTERN_C const IID IID_IBackgroundCopyQMgr;
#if defined(__cplusplus) && !defined(CINTERFACE)
  struct IBackgroundCopyQMgr : public IUnknown {
  public:
    virtual HRESULT WINAPI CreateGroup(GUID guidGroupID,IBackgroundCopyGroup **ppGroup) = 0;
    virtual HRESULT WINAPI GetGroup(GUID groupID,IBackgroundCopyGroup **ppGroup) = 0;
    virtual HRESULT WINAPI EnumGroups(DWORD dwFlags,IEnumBackgroundCopyGroups **ppEnumGroups) = 0;
  };
#else
  typedef struct IBackgroundCopyQMgrVtbl {
    BEGIN_INTERFACE
      HRESULT (WINAPI *QueryInterface)(IBackgroundCopyQMgr *This,REFIID riid,void **ppvObject);
      ULONG (WINAPI *AddRef)(IBackgroundCopyQMgr *This);
      ULONG (WINAPI *Release)(IBackgroundCopyQMgr *This);
      HRESULT (WINAPI *CreateGroup)(IBackgroundCopyQMgr *This,GUID guidGroupID,IBackgroundCopyGroup **ppGroup);
      HRESULT (WINAPI *GetGroup)(IBackgroundCopyQMgr *This,GUID groupID,IBackgroundCopyGroup **ppGroup);
      HRESULT (WINAPI *EnumGroups)(IBackgroundCopyQMgr *This,DWORD dwFlags,IEnumBackgroundCopyGroups **ppEnumGroups);
    END_INTERFACE
  } IBackgroundCopyQMgrVtbl;
  struct IBackgroundCopyQMgr {
    CONST_VTBL struct IBackgroundCopyQMgrVtbl *lpVtbl;
  };
#ifdef COBJMACROS
#define IBackgroundCopyQMgr_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyQMgr_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyQMgr_Release(This) (This)->lpVtbl->Release(This)
#define IBackgroundCopyQMgr_CreateGroup(This,guidGroupID,ppGroup) (This)->lpVtbl->CreateGroup(This,guidGroupID,ppGroup)
#define IBackgroundCopyQMgr_GetGroup(This,groupID,ppGroup) (This)->lpVtbl->GetGroup(This,groupID,ppGroup)
#define IBackgroundCopyQMgr_EnumGroups(This,dwFlags,ppEnumGroups) (This)->lpVtbl->EnumGroups(This,dwFlags,ppEnumGroups)
#endif
#endif
  HRESULT WINAPI IBackgroundCopyQMgr_CreateGroup_Proxy(IBackgroundCopyQMgr *This,GUID guidGroupID,IBackgroundCopyGroup **ppGroup);
  void __RPC_STUB IBackgroundCopyQMgr_CreateGroup_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyQMgr_GetGroup_Proxy(IBackgroundCopyQMgr *This,GUID groupID,IBackgroundCopyGroup **ppGroup);
  void __RPC_STUB IBackgroundCopyQMgr_GetGroup_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT WINAPI IBackgroundCopyQMgr_EnumGroups_Proxy(IBackgroundCopyQMgr *This,DWORD dwFlags,IEnumBackgroundCopyGroups **ppEnumGroups);
  void __RPC_STUB IBackgroundCopyQMgr_EnumGroups_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif

#ifndef __BackgroundCopyQMgr_LIBRARY_DEFINED__
#define __BackgroundCopyQMgr_LIBRARY_DEFINED__
  EXTERN_C const IID LIBID_BackgroundCopyQMgr;
  EXTERN_C const CLSID CLSID_BackgroundCopyQMgr;
#ifdef __cplusplus
  class BackgroundCopyQMgr;
#endif
#endif

  ULONG __RPC_API BSTR_UserSize(ULONG *,ULONG,BSTR *);
  unsigned char *__RPC_API BSTR_UserMarshal(ULONG *,unsigned char *,BSTR *);
  unsigned char *__RPC_API BSTR_UserUnmarshal(ULONG *,unsigned char *,BSTR *);
  void __RPC_API BSTR_UserFree(ULONG *,BSTR *);
  ULONG __RPC_API VARIANT_UserSize(ULONG *,ULONG,VARIANT *);
  unsigned char *__RPC_API VARIANT_UserMarshal(ULONG *,unsigned char *,VARIANT *);
  unsigned char *__RPC_API VARIANT_UserUnmarshal(ULONG *,unsigned char *,VARIANT *);
  void __RPC_API VARIANT_UserFree(ULONG *,VARIANT *);

  HRESULT WINAPI IBackgroundCopyGroup_SetProp_Proxy(IBackgroundCopyGroup *This,GROUPPROP propID,VARIANT *pvarVal);
  HRESULT WINAPI IBackgroundCopyGroup_SetProp_Stub(IBackgroundCopyGroup *This,GROUPPROP propID,VARIANT *pvarVal);

#ifdef __cplusplus
}
#endif
#endif