419 lines
9.1 KiB
Plaintext
419 lines
9.1 KiB
Plaintext
/*
|
|
* 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\"")
|