/* * 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("#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; }