[2/2] qmgr: Add a stub implementation of IBackgroundCopyJob2.

Dan Hipschman dsh at linux.ucla.edu
Tue Mar 18 20:31:02 CDT 2008


This adds a stub implementation for IBackgroundCopyJob2.  The SetCredentials
method (for starters) of that interface is needed by the VC++ 2005 installer.
This patch needs make_makefiles run after applying.

---
 dlls/qmgr/enum_files.c     |    2 +-
 dlls/qmgr/job.c            |  150 +++++++++++++++++++++++++++++++++-----------
 dlls/qmgr/qmgr.h           |   10 ++-
 dlls/qmgr/qmgr_local.idl   |    5 +-
 dlls/qmgrprxy/qmgrprxy.idl |    5 +-
 include/bits1_5.idl        |   88 ++++++++++++++++++++++++++
 6 files changed, 217 insertions(+), 43 deletions(-)
 create mode 100644 include/bits1_5.idl

diff --git a/dlls/qmgr/enum_files.c b/dlls/qmgr/enum_files.c
index 36afc33..a25d455 100644
--- a/dlls/qmgr/enum_files.c
+++ b/dlls/qmgr/enum_files.c
@@ -168,7 +168,7 @@ static const IEnumBackgroundCopyFilesVtbl BITS_IEnumBackgroundCopyFiles_Vtbl =
     BITS_IEnumBackgroundCopyFiles_GetCount
 };
 
-HRESULT EnumBackgroundCopyFilesConstructor(LPVOID *ppObj, IBackgroundCopyJob* iCopyJob)
+HRESULT EnumBackgroundCopyFilesConstructor(LPVOID *ppObj, BITS_IBackgroundCopyJob *iCopyJob)
 {
     EnumBackgroundCopyFilesImpl *This;
     BackgroundCopyFileImpl *file;
diff --git a/dlls/qmgr/job.c b/dlls/qmgr/job.c
index e8cd839..af9bc8a 100644
--- a/dlls/qmgr/job.c
+++ b/dlls/qmgr/job.c
@@ -35,20 +35,21 @@ static void BackgroundCopyJobDestructor(BackgroundCopyJobImpl *This)
     HeapFree(GetProcessHeap(), 0, This);
 }
 
-static ULONG WINAPI BITS_IBackgroundCopyJob_AddRef(IBackgroundCopyJob* iface)
+static ULONG WINAPI BITS_IBackgroundCopyJob_AddRef(BITS_IBackgroundCopyJob *iface)
 {
     BackgroundCopyJobImpl *This = (BackgroundCopyJobImpl *) iface;
     return InterlockedIncrement(&This->ref);
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_QueryInterface(
-    IBackgroundCopyJob* iface, REFIID riid, LPVOID *ppvObject)
+    BITS_IBackgroundCopyJob *iface, REFIID riid, LPVOID *ppvObject)
 {
     BackgroundCopyJobImpl *This = (BackgroundCopyJobImpl *) iface;
     TRACE("IID: %s\n", debugstr_guid(riid));
 
     if (IsEqualGUID(riid, &IID_IUnknown)
-        || IsEqualGUID(riid, &IID_IBackgroundCopyJob))
+        || IsEqualGUID(riid, &IID_IBackgroundCopyJob)
+        || IsEqualGUID(riid, &IID_IBackgroundCopyJob2))
     {
         *ppvObject = &This->lpVtbl;
         BITS_IBackgroundCopyJob_AddRef(iface);
@@ -59,7 +60,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_QueryInterface(
     return E_NOINTERFACE;
 }
 
-static ULONG WINAPI BITS_IBackgroundCopyJob_Release(IBackgroundCopyJob* iface)
+static ULONG WINAPI BITS_IBackgroundCopyJob_Release(BITS_IBackgroundCopyJob *iface)
 {
     BackgroundCopyJobImpl *This = (BackgroundCopyJobImpl *) iface;
     ULONG ref = InterlockedDecrement(&This->ref);
@@ -73,7 +74,7 @@ static ULONG WINAPI BITS_IBackgroundCopyJob_Release(IBackgroundCopyJob* iface)
 /*** IBackgroundCopyJob methods ***/
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_AddFileSet(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     ULONG cFileCount,
     BG_FILE_INFO *pFileSet)
 {
@@ -89,7 +90,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_AddFileSet(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_AddFile(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     LPCWSTR RemoteUrl,
     LPCWSTR LocalName)
 {
@@ -118,7 +119,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_AddFile(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_EnumFiles(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     IEnumBackgroundCopyFiles **ppEnum)
 {
     TRACE("\n");
@@ -126,14 +127,14 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_EnumFiles(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_Suspend(
-    IBackgroundCopyJob* iface)
+    BITS_IBackgroundCopyJob *iface)
 {
     FIXME("Not implemented\n");
     return E_NOTIMPL;
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_Resume(
-    IBackgroundCopyJob* iface)
+    BITS_IBackgroundCopyJob *iface)
 {
     BackgroundCopyJobImpl *This = (BackgroundCopyJobImpl *) iface;
     HRESULT rv = S_OK;
@@ -160,14 +161,14 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_Resume(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_Cancel(
-    IBackgroundCopyJob* iface)
+    BITS_IBackgroundCopyJob *iface)
 {
     FIXME("Not implemented\n");
     return E_NOTIMPL;
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_Complete(
-    IBackgroundCopyJob* iface)
+    BITS_IBackgroundCopyJob *iface)
 {
     BackgroundCopyJobImpl *This = (BackgroundCopyJobImpl *) iface;
     HRESULT rv = S_OK;
@@ -209,7 +210,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_Complete(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_GetId(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     GUID *pVal)
 {
     BackgroundCopyJobImpl *This = (BackgroundCopyJobImpl *) iface;
@@ -218,7 +219,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetId(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_GetType(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     BG_JOB_TYPE *pVal)
 {
     BackgroundCopyJobImpl *This = (BackgroundCopyJobImpl *) iface;
@@ -231,7 +232,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetType(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_GetProgress(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     BG_JOB_PROGRESS *pVal)
 {
     BackgroundCopyJobImpl *This = (BackgroundCopyJobImpl *) iface;
@@ -250,7 +251,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetProgress(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_GetTimes(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     BG_JOB_TIMES *pVal)
 {
     FIXME("Not implemented\n");
@@ -258,7 +259,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetTimes(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_GetState(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     BG_JOB_STATE *pVal)
 {
     BackgroundCopyJobImpl *This = (BackgroundCopyJobImpl *) iface;
@@ -272,7 +273,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetState(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_GetError(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     IBackgroundCopyError **ppError)
 {
     FIXME("Not implemented\n");
@@ -280,7 +281,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetError(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_GetOwner(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     LPWSTR *pVal)
 {
     FIXME("Not implemented\n");
@@ -288,7 +289,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetOwner(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_SetDisplayName(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     LPCWSTR Val)
 {
     FIXME("Not implemented\n");
@@ -296,7 +297,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_SetDisplayName(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_GetDisplayName(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     LPWSTR *pVal)
 {
     BackgroundCopyJobImpl *This = (BackgroundCopyJobImpl *) iface;
@@ -314,7 +315,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetDisplayName(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_SetDescription(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     LPCWSTR Val)
 {
     FIXME("Not implemented\n");
@@ -322,7 +323,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_SetDescription(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_GetDescription(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     LPWSTR *pVal)
 {
     FIXME("Not implemented\n");
@@ -330,7 +331,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetDescription(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_SetPriority(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     BG_JOB_PRIORITY Val)
 {
     FIXME("Not implemented\n");
@@ -338,7 +339,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_SetPriority(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_GetPriority(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     BG_JOB_PRIORITY *pVal)
 {
     FIXME("Not implemented\n");
@@ -346,7 +347,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetPriority(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_SetNotifyFlags(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     ULONG Val)
 {
     FIXME("Not implemented\n");
@@ -354,7 +355,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_SetNotifyFlags(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_GetNotifyFlags(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     ULONG *pVal)
 {
     FIXME("Not implemented\n");
@@ -362,7 +363,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetNotifyFlags(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_SetNotifyInterface(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     IUnknown *Val)
 {
     FIXME("Not implemented\n");
@@ -370,7 +371,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_SetNotifyInterface(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_GetNotifyInterface(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     IUnknown **pVal)
 {
     FIXME("Not implemented\n");
@@ -378,7 +379,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetNotifyInterface(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_SetMinimumRetryDelay(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     ULONG Seconds)
 {
     FIXME("Not implemented\n");
@@ -386,7 +387,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_SetMinimumRetryDelay(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_GetMinimumRetryDelay(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     ULONG *Seconds)
 {
     FIXME("Not implemented\n");
@@ -394,7 +395,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetMinimumRetryDelay(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_SetNoProgressTimeout(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     ULONG Seconds)
 {
     FIXME("Not implemented\n");
@@ -402,7 +403,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_SetNoProgressTimeout(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_GetNoProgressTimeout(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     ULONG *Seconds)
 {
     FIXME("Not implemented\n");
@@ -410,7 +411,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetNoProgressTimeout(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_GetErrorCount(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     ULONG *Errors)
 {
     FIXME("Not implemented\n");
@@ -418,7 +419,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetErrorCount(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_SetProxySettings(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     BG_JOB_PROXY_USAGE ProxyUsage,
     const WCHAR *ProxyList,
     const WCHAR *ProxyBypassList)
@@ -428,7 +429,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_SetProxySettings(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_GetProxySettings(
-    IBackgroundCopyJob* iface,
+    BITS_IBackgroundCopyJob *iface,
     BG_JOB_PROXY_USAGE *pProxyUsage,
     LPWSTR *pProxyList,
     LPWSTR *pProxyBypassList)
@@ -438,14 +439,81 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_GetProxySettings(
 }
 
 static HRESULT WINAPI BITS_IBackgroundCopyJob_TakeOwnership(
-    IBackgroundCopyJob* iface)
+    BITS_IBackgroundCopyJob *iface)
 {
     FIXME("Not implemented\n");
     return E_NOTIMPL;
 }
 
+static HRESULT WINAPI BITS_IBackgroundCopyJob_SetNotifyCmdLine(
+    BITS_IBackgroundCopyJob *iface,
+    LPCWSTR prog,
+    LPCWSTR params)
+{
+    FIXME("Not implemented\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI BITS_IBackgroundCopyJob_GetNotifyCmdLine(
+    BITS_IBackgroundCopyJob *iface,
+    LPWSTR prog,
+    LPWSTR params)
+{
+    FIXME("Not implemented\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI BITS_IBackgroundCopyJob_GetReplyProgress(
+    BITS_IBackgroundCopyJob *iface,
+    BG_JOB_REPLY_PROGRESS *progress)
+{
+    FIXME("Not implemented\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI BITS_IBackgroundCopyJob_GetReplyData(
+    BITS_IBackgroundCopyJob *iface,
+    byte **pBuffer,
+    UINT64 *pLength)
+{
+    FIXME("Not implemented\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI BITS_IBackgroundCopyJob_SetReplyFileName(
+    BITS_IBackgroundCopyJob *iface,
+    LPCWSTR filename)
+{
+    FIXME("Not implemented\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI BITS_IBackgroundCopyJob_GetReplyFileName(
+    BITS_IBackgroundCopyJob *iface,
+    LPWSTR *pFilename)
+{
+    FIXME("Not implemented\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI BITS_IBackgroundCopyJob_SetCredentials(
+    BITS_IBackgroundCopyJob *iface,
+    BG_AUTH_CREDENTIALS *cred)
+{
+    FIXME("Not implemented\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI BITS_IBackgroundCopyJob_RemoveCredentials(
+    BITS_IBackgroundCopyJob *iface,
+    BG_AUTH_TARGET target,
+    BG_AUTH_SCHEME scheme)
+{
+    FIXME("Not implemented\n");
+    return E_NOTIMPL;
+}
 
-static const IBackgroundCopyJobVtbl BITS_IBackgroundCopyJob_Vtbl =
+static const IBackgroundCopyJob2Vtbl BITS_IBackgroundCopyJob_Vtbl =
 {
     BITS_IBackgroundCopyJob_QueryInterface,
     BITS_IBackgroundCopyJob_AddRef,
@@ -482,6 +550,14 @@ static const IBackgroundCopyJobVtbl BITS_IBackgroundCopyJob_Vtbl =
     BITS_IBackgroundCopyJob_SetProxySettings,
     BITS_IBackgroundCopyJob_GetProxySettings,
     BITS_IBackgroundCopyJob_TakeOwnership,
+    BITS_IBackgroundCopyJob_SetNotifyCmdLine,
+    BITS_IBackgroundCopyJob_GetNotifyCmdLine,
+    BITS_IBackgroundCopyJob_GetReplyProgress,
+    BITS_IBackgroundCopyJob_GetReplyData,
+    BITS_IBackgroundCopyJob_SetReplyFileName,
+    BITS_IBackgroundCopyJob_GetReplyFileName,
+    BITS_IBackgroundCopyJob_SetCredentials,
+    BITS_IBackgroundCopyJob_RemoveCredentials
 };
 
 HRESULT BackgroundCopyJobConstructor(LPCWSTR displayName, BG_JOB_TYPE type,
diff --git a/dlls/qmgr/qmgr.h b/dlls/qmgr/qmgr.h
index 9530b97..57a19ee 100644
--- a/dlls/qmgr/qmgr.h
+++ b/dlls/qmgr/qmgr.h
@@ -25,7 +25,7 @@
 #include "objbase.h"
 
 #define COBJMACROS
-#include "bits.h"
+#include "bits1_5.h"
 
 #include <string.h>
 #include "wine/list.h"
@@ -33,7 +33,7 @@
 /* Background copy job vtbl and related data */
 typedef struct
 {
-    const IBackgroundCopyJobVtbl *lpVtbl;
+    const IBackgroundCopyJob2Vtbl *lpVtbl;
     LONG ref;
     LPWSTR displayName;
     BG_JOB_TYPE type;
@@ -93,6 +93,10 @@ typedef struct
     const IClassFactoryVtbl *lpVtbl;
 } ClassFactoryImpl;
 
+/* This makes it easier to upgrade to IBackgroundCopyJob3, IBackgroundCopyJob4,
+   and whatever else MS decides to tack on later.  */
+typedef IBackgroundCopyJob2 BITS_IBackgroundCopyJob;
+
 extern HANDLE stop_event;
 extern ClassFactoryImpl BITS_ClassFactory;
 extern BackgroundCopyManagerImpl globalMgr;
@@ -106,7 +110,7 @@ HRESULT BackgroundCopyFileConstructor(BackgroundCopyJobImpl *owner,
                                       LPCWSTR remoteName, LPCWSTR localName,
                                       LPVOID *ppObj);
 HRESULT EnumBackgroundCopyFilesConstructor(LPVOID *ppObj,
-                                           IBackgroundCopyJob* copyJob);
+                                           BITS_IBackgroundCopyJob *copyJob);
 DWORD WINAPI fileTransfer(void *param);
 void processJob(BackgroundCopyJobImpl *job);
 BOOL processFile(BackgroundCopyFileImpl *file, BackgroundCopyJobImpl *job);
diff --git a/dlls/qmgr/qmgr_local.idl b/dlls/qmgr/qmgr_local.idl
index f72325f..8e1341d 100644
--- a/dlls/qmgr/qmgr_local.idl
+++ b/dlls/qmgr/qmgr_local.idl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007 Google (Roy Shea)
+ * Copyright (C) 2007, 2008 Google (Roy Shea, Dan Hipschman)
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -17,3 +17,6 @@
  */
 
 #include "bits.idl"
+
+#define DO_NO_IMPORTS
+#include "bits1_5.idl"
diff --git a/dlls/qmgrprxy/qmgrprxy.idl b/dlls/qmgrprxy/qmgrprxy.idl
index 4b47b18..e1bdce1 100644
--- a/dlls/qmgrprxy/qmgrprxy.idl
+++ b/dlls/qmgrprxy/qmgrprxy.idl
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007 Google (Roy Shea)
+ * Copyright 2007, 2008 Google (Roy Shea, Dan Hipschman)
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -17,3 +17,6 @@
  */
 
 #include "bits.idl"
+
+#define DO_NO_IMPORTS
+#include "bits1_5.idl"
diff --git a/include/bits1_5.idl b/include/bits1_5.idl
new file mode 100644
index 0000000..0bb27ca
--- /dev/null
+++ b/include/bits1_5.idl
@@ -0,0 +1,88 @@
+/*
+ * Background Intelligent Transfer Service (BITS) 1.5 interface
+ *
+ * Copyright 2008 Google (Dan Hipschman)
+ *
+ * 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 "bits.idl";
+#endif
+
+[
+    uuid(54b50739-686f-45eb-9dff-d6a9a0faa9af),
+    odl
+]
+interface IBackgroundCopyJob2 : IBackgroundCopyJob
+{
+    HRESULT SetNotifyCmdLine([unique] LPCWSTR prog, [unique] LPCWSTR params);
+    HRESULT GetNotifyCmdLine([out] LPWSTR prog, [out] LPWSTR params);
+
+    typedef struct _BG_JOB_REPLY_PROGRESS
+    {
+        UINT64 BytesTotal;
+        UINT64 BytesTransferred;
+    } BG_JOB_REPLY_PROGRESS;
+
+    HRESULT GetReplyProgress([in, out] BG_JOB_REPLY_PROGRESS *progress);
+    HRESULT GetReplyData([out, size_is( , (unsigned long) *pLength)] byte **pBuffer,
+                         [in, out, unique] UINT64 *pLength);
+    HRESULT SetReplyFileName([unique] LPCWSTR filename);
+    HRESULT GetReplyFileName([out] LPWSTR *pFilename);
+
+    typedef enum
+    {
+        BG_AUTH_TARGET_SERVER = 1,
+        BG_AUTH_TARGET_PROXY
+    } BG_AUTH_TARGET;
+
+    typedef enum
+    {
+        BG_AUTH_SCHEME_BASIC = 1,
+        BG_AUTH_SCHEME_DIGEST,
+        BG_AUTH_SCHEME_NTLM,
+        BG_AUTH_SCHEME_NEGOTIATE,
+        BG_AUTH_SCHEME_PASSPORT
+    } BG_AUTH_SCHEME;
+
+    typedef struct
+    {
+        LPWSTR UserName;
+        LPWSTR Password;
+    } BG_BASIC_CREDENTIALS;
+    typedef BG_BASIC_CREDENTIALS *PBG_BASIC_CREDENTIALS;
+
+    typedef [switch_type(BG_AUTH_SCHEME)] union
+    {
+        [case(BG_AUTH_SCHEME_BASIC, BG_AUTH_SCHEME_DIGEST, BG_AUTH_SCHEME_NTLM,
+              BG_AUTH_SCHEME_NEGOTIATE, BG_AUTH_SCHEME_PASSPORT)]
+        BG_BASIC_CREDENTIALS Basic;
+        [default]
+        ;
+    } BG_AUTH_CREDENTIALS_UNION;
+
+    typedef struct
+    {
+        BG_AUTH_TARGET Target;
+        BG_AUTH_SCHEME Scheme;
+        [switch_is(Scheme)] BG_AUTH_CREDENTIALS_UNION Credentials;
+    } BG_AUTH_CREDENTIALS;
+    typedef BG_AUTH_CREDENTIALS *PBG_AUTH_CREDENTIALS;
+
+    HRESULT SetCredentials(BG_AUTH_CREDENTIALS *cred);
+    HRESULT RemoveCredentials(BG_AUTH_TARGET target, BG_AUTH_SCHEME scheme);
+}



More information about the wine-patches mailing list