[PATCH] bits: Added BITS IDL and standard header file (3/12)
Roy Shea
roy at cs.hmc.edu
Thu Nov 15 10:21:37 CST 2007
---
include/bits.idl | 414 +++++++++++++++++++++++++++++++++++++++++++++++++++++
include/bitsmsg.h | 83 +++++++++++
2 files changed, 497 insertions(+), 0 deletions(-)
create mode 100644 include/bits.idl
create mode 100644 include/bitsmsg.h
diff --git a/include/bits.idl b/include/bits.idl
new file mode 100644
index 0000000..63912ab
--- /dev/null
+++ b/include/bits.idl
@@ -0,0 +1,414 @@
+/*
+ * 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")
+
+
+#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;
+}
+
+
+
diff --git a/include/bitsmsg.h b/include/bitsmsg.h
new file mode 100644
index 0000000..4709bde
--- /dev/null
+++ b/include/bitsmsg.h
@@ -0,0 +1,83 @@
+/*
+ * Return values that may be generated by BITS as described at:
+ * http://msdn2.microsoft.com/en-us/library/aa362823.aspx
+ *
+ * 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 __WINE_BITMSG_H__
+#define __WINE_BITMSG_H__
+
+#define BG_S_PARTIAL_COMPLETE 0x00200017
+#define BG_S_UNABLE_TO_DELETE_FILES 0x0020001A
+#define BG_S_OVERRIDDEN_BY_POLICY 0x00200055
+
+#define BG_E_HTTP_ERROR_400 0x80190190
+#define BG_E_HTTP_ERROR_401 0x80190191
+#define BG_E_HTTP_ERROR_404 0x80190194
+#define BG_E_HTTP_ERROR_407 0x80190197
+#define BG_E_HTTP_ERROR_414 0x8019019E
+#define BG_E_HTTP_ERROR_501 0x801901F5
+#define BG_E_HTTP_ERROR_503 0x801901F7
+#define BG_E_HTTP_ERROR_504 0x801901F8
+#define BG_E_HTTP_ERROR_505 0x801901F9
+
+#define BG_E_NOT_FOUND 0x80200001
+#define BG_E_INVALID_STATE 0x80200002
+#define BG_E_EMPTY 0x80200003
+#define BG_E_FILE_NOT_AVAILABLE 0x80200004
+#define BG_E_PROTOCOL_NOT_AVAILABLE 0x80200005
+#define BG_E_DESTINATION_LOCKED 0x8020000D
+#define BG_E_VOLUME_CHANGED 0x8020000E
+#define BG_E_ERROR_INFORMATION_UNAVAILABLE 0x8020000F
+#define BG_E_NETWORK_DISCONNECTED 0x80200010
+#define BG_E_MISSING_FILE_SIZE 0x80200011
+#define BG_E_INSUFFICIENT_HTTP_SUPPORT 0x80200012
+#define BG_E_INSUFFICIENT_RANGE_SUPPORT 0x80200013
+#define BG_E_REMOTE_NOT_SUPPORTED 0x80200014
+#define BG_E_NEW_OWNER_DIFF_MAPPING 0x80200015
+#define BG_E_NEW_OWNER_NO_FILE_ACCESS 0x80200016
+#define BG_E_PROXY_LIST_TOO_LARGE 0x80200018
+#define BG_E_PROXY_BYPASS_LIST_TOO_LARGE 0x80200019
+#define BG_E_TOO_MANY_FILES 0x8020001C
+#define BG_E_LOCAL_FILE_CHANGED 0x8020001D
+#define BG_E_TOO_LARGE 0x80200020
+#define BG_E_STRING_TOO_LONG 0x80200021
+#define BG_E_CLIENT_SERVER_PROTOCOL_MISMATCH 0x80200022
+#define BG_E_SERVER_EXECUTE_ENABLED 0x80200023
+#define BG_E_USERNAME_TOO_LARGE 0x80200025
+#define BG_E_PASSWORD_TOO_LARGE 0x80200026
+#define BG_E_INVALID_AUTH_TARGET 0x80200027
+#define BG_E_INVALID_AUTH_SCHEME 0x80200028
+#define BG_E_INVALID_RANGE 0x8020002B
+#define BG_E_OVERLAPPING_RANGES 0x8020002C
+#define BG_E_BLOCKED_BY_POLICY 0x8020003E
+#define BG_E_INVALID_PROXY_INFO 0x8020003F
+#define BG_E_INVALID_CREDENTIALS 0x80200040
+#define BG_E_RECORD_DELETED 0x80200042
+#define BG_E_UPNP_ERROR 0x80200045
+#define BG_E_PEERCACHING_DISABLED 0x80200047
+#define BG_E_BUSYCACHERECORD 0x80200048
+#define BG_E_TOO_MANY_JOBS_PER_USER 0x80200049
+#define BG_E_TOO_MANY_JOBS_PER_MACHINE 0x80200050
+#define BG_E_TOO_MANY_FILES_IN_JOB 0x80200051
+#define BG_E_TOO_MANY_RANGES_IN_FILE 0x80200052
+#define BG_E_VALIDATION_FAILED 0x80200053
+#define BG_E_MAXDOWNLOAD_TIMEOUT 0x80200054
+
+#endif /* #ifndef __WINE_BITMSG_H__ */
+
--
1.5.3.1
More information about the wine-patches
mailing list