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