bits[2/3]: Added IDL and header with bits specific error messages

Roy Shea roy at cs.hmc.edu
Wed Sep 26 17:34:27 CDT 2007


Fleshing out bits implementation with the standard IDL and error messages

-------------- next part --------------
diff --git a/dlls/bits/Makefile.in b/dlls/bits/Makefile.in
index 2c9e293..7645c5a 100644
--- a/dlls/bits/Makefile.in
+++ b/dlls/bits/Makefile.in
@@ -3,12 +3,14 @@ TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = bits.dll
+IMPORTLIB = libbits.$(IMPLIBEXT)
 IMPORTS   = kernel32
-EXTRALIBS = 
+EXTRALIBS = -luuid
 
 C_SRCS = \
 	bits_main.c
 
+IDL_I_SRCS = bits_local.idl
 #RC_SRCS = version.rc
 
 @MAKE_DLL_RULES@
diff --git a/dlls/bits/bits_local.idl b/dlls/bits/bits_local.idl
new file mode 100644
index 0000000..7522fb3
--- /dev/null
+++ b/dlls/bits/bits_local.idl
@@ -0,0 +1,20 @@
+/*
+ * 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
+ */
+
+#include "bits.idl"
+
diff --git a/dlls/bits/bits_main.c b/dlls/bits/bits_main.c
index cc34c01..7d231c4 100644
--- a/dlls/bits/bits_main.c
+++ b/dlls/bits/bits_main.c
@@ -26,6 +26,8 @@
 #include "wine/debug.h"
 #include "objbase.h"
 
+#include "bits.h"
+
 WINE_DEFAULT_DEBUG_CHANNEL(bits);
 
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
diff --git a/dlls/bits/bitsmsg.h b/dlls/bits/bitsmsg.h
new file mode 100644
index 0000000..b008968
--- /dev/null
+++ b/dlls/bits/bitsmsg.h
@@ -0,0 +1,142 @@
+/*
+ * Implementation of bitsmsg.h
+ * 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 __WINE_BITMSG_H__
+#define __WINE_BITMSG_H__
+
+#define BG_E_HTTP_ERROR_100 0x80190064L
+#define BG_E_HTTP_ERROR_101 0x80190065L
+#define BG_E_HTTP_ERROR_200 0x801900C8L
+#define BG_E_HTTP_ERROR_201 0x801900C9L
+#define BG_E_HTTP_ERROR_202 0x801900CAL
+#define BG_E_HTTP_ERROR_203 0x801900CBL
+#define BG_E_HTTP_ERROR_204 0x801900CCL
+#define BG_E_HTTP_ERROR_205 0x801900CDL
+#define BG_E_HTTP_ERROR_206 0x801900CEL
+#define BG_E_HTTP_ERROR_300 0x8019012CL
+#define BG_E_HTTP_ERROR_301 0x8019012DL
+#define BG_E_HTTP_ERROR_302 0x8019012EL
+#define BG_E_HTTP_ERROR_303 0x8019012FL
+#define BG_E_HTTP_ERROR_304 0x80190130L
+#define BG_E_HTTP_ERROR_305 0x80190131L
+#define BG_E_HTTP_ERROR_307 0x80190133L
+#define BG_E_HTTP_ERROR_400 0x80190190L
+#define BG_E_HTTP_ERROR_401 0x80190191L
+#define BG_E_HTTP_ERROR_402 0x80190192L
+#define BG_E_HTTP_ERROR_403 0x80190193L
+#define BG_E_HTTP_ERROR_404 0x80190194L
+#define BG_E_HTTP_ERROR_405 0x80190195L
+#define BG_E_HTTP_ERROR_406 0x80190196L
+#define BG_E_HTTP_ERROR_407 0x80190197L
+#define BG_E_HTTP_ERROR_408 0x80190198L
+#define BG_E_HTTP_ERROR_409 0x80190199L
+#define BG_E_HTTP_ERROR_410 0x8019019AL
+#define BG_E_HTTP_ERROR_411 0x8019019BL
+#define BG_E_HTTP_ERROR_412 0x8019019CL
+#define BG_E_HTTP_ERROR_413 0x8019019DL
+#define BG_E_HTTP_ERROR_414 0x8019019EL
+#define BG_E_HTTP_ERROR_415 0x8019019FL
+#define BG_E_HTTP_ERROR_416 0x801901A0L
+#define BG_E_HTTP_ERROR_417 0x801901A1L
+#define BG_E_HTTP_ERROR_449 0x801901C1L
+#define BG_E_HTTP_ERROR_500 0x801901F4L
+#define BG_E_HTTP_ERROR_501 0x801901F5L
+#define BG_E_HTTP_ERROR_502 0x801901F6L
+#define BG_E_HTTP_ERROR_503 0x801901F7L
+#define BG_E_HTTP_ERROR_504 0x801901F8L
+#define BG_E_HTTP_ERROR_505 0x801901F9L
+#define BITS_MC_JOB_CANCELLED 0x80194000L
+#define BITS_MC_FILE_DELETION_FAILED 0x80194001L
+#define BITS_MC_FILE_DELETION_FAILED_MORE 0x80194002L
+#define BITS_MC_JOB_PROPERTY_CHANGE 0x80194003L
+#define BITS_MC_JOB_TAKE_OWNERSHIP 0x80194004L
+#define BITS_MC_JOB_SCAVENGED 0x80194005L
+#define BITS_MC_JOB_NOTIFICATION_FAILURE 0x80194006L
+#define BITS_MC_STATE_FILE_CORRUPT 0x80194007L
+#define BITS_MC_FAILED_TO_START 0x80194008L
+#define BG_E_NOT_FOUND 0x80200001L
+#define BG_E_INVALID_STATE 0x80200002L
+#define BG_E_EMPTY 0x80200003L
+#define BG_E_FILE_NOT_AVAILABLE 0x80200004L
+#define BG_E_PROTOCOL_NOT_AVAILABLE 0x80200005L
+#define BG_E_ERROR_CONTEXT_UNKNOWN 0x80200007L
+#define BG_E_ERROR_CONTEXT_GENERAL_QUEUE_MANAGER 0x80200008L
+#define BG_E_ERROR_CONTEXT_LOCAL_FILE 0x80200009L
+#define BG_E_ERROR_CONTEXT_REMOTE_FILE 0x8020000AL
+#define BG_E_ERROR_CONTEXT_GENERAL_TRANSPORT 0x8020000BL
+#define BG_E_ERROR_CONTEXT_QUEUE_MANAGER_NOTIFICATION 0x8020000CL
+#define BG_E_DESTINATION_LOCKED 0x8020000DL
+#define BG_E_VOLUME_CHANGED 0x8020000EL
+#define BG_E_ERROR_INFORMATION_UNAVAILABLE 0x8020000FL
+#define BG_E_NETWORK_DISCONNECTED 0x80200010L
+#define BG_E_MISSING_FILE_SIZE 0x80200011L
+#define BG_E_INSUFFICIENT_HTTP_SUPPORT 0x80200012L
+#define BG_E_INSUFFICIENT_RANGE_SUPPORT 0x80200013L
+#define BG_E_REMOTE_NOT_SUPPORTED 0x80200014L
+#define BG_E_NEW_OWNER_DIFF_MAPPING 0x80200015L
+#define BG_E_NEW_OWNER_NO_FILE_ACCESS 0x80200016L
+#define BG_E_PROXY_LIST_TOO_LARGE 0x80200018L
+#define BG_E_INVALID_SERVER_RESPONSE 0x8020001BL
+#define BG_E_TOO_MANY_FILES 0x8020001CL
+#define BG_E_INVALID_RANGE 0x8020002BL
+#define BG_E_OVERLAPPING_RANGES 0x8020002CL
+#define BG_E_CONNECT_FAILURE 0x8020002DL
+#define BG_E_CONNECTION_CLOSED 0x8020002EL
+#define BG_E_KEEP_ALIVE_FAILURE 0x8020002FL
+#define BG_E_MESSAGE_LENGTH_LIMIT_EXCEEDED 0x80200030L
+#define BG_E_NAME_RESOLUTION_FAILURE 0x80200031L
+#define BG_E_PENDING 0x80200032L
+#define BG_E_PIPELINE_FAILURE 0x80200033L
+#define BG_E_PROTOCOL_ERROR 0x80200034L
+#define BG_E_PROXY_NAME_RESOLUTION_FAILURE 0x80200035L
+#define BG_E_RECEIVE_FAILURE 0x80200036L
+#define BG_E_REQUEST_CANCELED 0x80200037L
+#define BG_E_SECURE_CHANNEL_FAILURE 0x80200038L
+#define BG_E_SEND_FAILURE 0x80200039L
+#define BG_E_SERVER_PROTOCOL_VIOLATION 0x8020003AL
+#define BG_E_TIMEOUT 0x8020003BL
+#define BG_E_TRUST_FAILURE 0x8020003CL
+#define BG_E_UNKNOWN_ERROR 0x8020003DL
+#define BG_E_BLOCKED_BY_POLICY 0x8020003EL
+#define BG_E_INVALID_PROXY_INFO 0x8020003FL
+#define BG_E_INVALID_CREDENTIALS 0x80200040L
+#define BG_S_ERROR_CONTEXT_NONE 0x00200006L
+#define BG_S_PARTIAL_COMPLETE 0x00200017L
+#define BG_S_UNABLE_TO_DELETE_FILES 0x0020001AL
+#define BG_S_PROXY_CHANGED 0x0020002AL
+#define BG_E_PROXY_BYPASS_LIST_TOO_LARGE 0x80200019L
+#define BG_E_LOCAL_FILE_CHANGED 0x8020001DL
+#define BG_E_ERROR_CONTEXT_REMOTE_APPLICATION 0x8020001EL
+#define BG_E_SESSION_NOT_FOUND 0x8020001FL
+#define BG_E_TOO_LARGE 0x80200020L
+#define BG_E_STRING_TOO_LONG 0x80200021L
+#define BG_E_CLIENT_SERVER_PROTOCOL_MISMATCH 0x80200022L
+#define BG_E_SERVER_EXECUTE_ENABLE 0x80200023L
+#define BG_E_NO_PROGRESS 0x80200024L
+#define BG_E_USERNAME_TOO_LARGE 0x80200025L
+#define BG_E_PASSWORD_TOO_LARGE 0x80200026L
+#define BG_E_INVALID_AUTH_TARGET 0x80200027L
+#define BG_E_INVALID_AUTH_SCHEME 0x80200028L
+#define BG_E_FILE_NOT_FOUND 0x80200029L
+
+
+#endif /* #ifndef __WINE_BITMSG_H__ */
+
diff --git a/include/bits.idl b/include/bits.idl
new file mode 100644
index 0000000..a678d31
--- /dev/null
+++ b/include/bits.idl
@@ -0,0 +1,416 @@
+/*
+ * 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
+ *
+ *****************************************************************************
+ *
+ * Background Intelligent Transfer Service (bits) interface
+ *
+ */
+
+#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;
+}
+
+
+


More information about the wine-patches mailing list