/*
* 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
*
*/
/*
* Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
* other than GPL or LGPL is available it will apply instead, Oracle elects to use only
* the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
* a choice of LGPL license versions is made available with the language indicating
* that LGPLv2 or any later version may be used, or where a choice of which version
* of the LGPL is applied is otherwise unspecified.
*/
#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;
}