|  | /* | 
|  | * 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\"") |