From d664c276dffc1f0f53ef6700ef182ef9c8c5d70c Mon Sep 17 00:00:00 2001 From: Dan Hipschman <dsh@linux.ucla.edu> Date: Wed, 19 Mar 2008 15:02:02 -0700 Subject: [PATCH] qmgr: Add a stub implementation of IBackgroundCopyJob2. --- .gitignore | 1 + dlls/qmgr/enum_files.c | 2 +- dlls/qmgr/job.c | 150 ++++++++++++++++++++++++++++--------- dlls/qmgr/qmgr.h | 6 +- dlls/qmgr/qmgr_local.idl | 5 +- dlls/qmgrprxy/qmgrprxy.idl | 5 +- include/Makefile.in | 1 + include/bits1_5.idl | 88 ++++++++++++++++++++++ 8 files changed, 215 insertions(+), 43 deletions(-) create mode 100644 include/bits1_5.idl diff --git a/.gitignore b/.gitignore index a52df50a1cb..23243227c9f 100644 --- a/.gitignore +++ b/.gitignore @@ -473,6 +473,7 @@ include/amstream.h include/amvideo.h include/austream.h include/bits.h +include/bits1_5.h include/comcat.h include/config.h include/control.h diff --git a/dlls/qmgr/enum_files.c b/dlls/qmgr/enum_files.c index 36afc338bb9..d7f36cd865f 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, IBackgroundCopyJob2 *iCopyJob) { EnumBackgroundCopyFilesImpl *This; BackgroundCopyFileImpl *file; diff --git a/dlls/qmgr/job.c b/dlls/qmgr/job.c index e8cd839bb97..32dadd84477 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(IBackgroundCopyJob2 *iface) { BackgroundCopyJobImpl *This = (BackgroundCopyJobImpl *) iface; return InterlockedIncrement(&This->ref); } static HRESULT WINAPI BITS_IBackgroundCopyJob_QueryInterface( - IBackgroundCopyJob* iface, REFIID riid, LPVOID *ppvObject) + IBackgroundCopyJob2 *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(IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *iface, LPCWSTR RemoteUrl, LPCWSTR LocalName) { @@ -118,7 +119,7 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_AddFile( } static HRESULT WINAPI BITS_IBackgroundCopyJob_EnumFiles( - IBackgroundCopyJob* iface, + IBackgroundCopyJob2 *iface, IEnumBackgroundCopyFiles **ppEnum) { TRACE("\n"); @@ -126,14 +127,14 @@ static HRESULT WINAPI BITS_IBackgroundCopyJob_EnumFiles( } static HRESULT WINAPI BITS_IBackgroundCopyJob_Suspend( - IBackgroundCopyJob* iface) + IBackgroundCopyJob2 *iface) { FIXME("Not implemented\n"); return E_NOTIMPL; } static HRESULT WINAPI BITS_IBackgroundCopyJob_Resume( - IBackgroundCopyJob* iface) + IBackgroundCopyJob2 *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) + IBackgroundCopyJob2 *iface) { FIXME("Not implemented\n"); return E_NOTIMPL; } static HRESULT WINAPI BITS_IBackgroundCopyJob_Complete( - IBackgroundCopyJob* iface) + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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, + IBackgroundCopyJob2 *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) + IBackgroundCopyJob2 *iface) { FIXME("Not implemented\n"); return E_NOTIMPL; } +static HRESULT WINAPI BITS_IBackgroundCopyJob_SetNotifyCmdLine( + IBackgroundCopyJob2 *iface, + LPCWSTR prog, + LPCWSTR params) +{ + FIXME("Not implemented\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI BITS_IBackgroundCopyJob_GetNotifyCmdLine( + IBackgroundCopyJob2 *iface, + LPWSTR prog, + LPWSTR params) +{ + FIXME("Not implemented\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI BITS_IBackgroundCopyJob_GetReplyProgress( + IBackgroundCopyJob2 *iface, + BG_JOB_REPLY_PROGRESS *progress) +{ + FIXME("Not implemented\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI BITS_IBackgroundCopyJob_GetReplyData( + IBackgroundCopyJob2 *iface, + byte **pBuffer, + UINT64 *pLength) +{ + FIXME("Not implemented\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI BITS_IBackgroundCopyJob_SetReplyFileName( + IBackgroundCopyJob2 *iface, + LPCWSTR filename) +{ + FIXME("Not implemented\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI BITS_IBackgroundCopyJob_GetReplyFileName( + IBackgroundCopyJob2 *iface, + LPWSTR *pFilename) +{ + FIXME("Not implemented\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI BITS_IBackgroundCopyJob_SetCredentials( + IBackgroundCopyJob2 *iface, + BG_AUTH_CREDENTIALS *cred) +{ + FIXME("Not implemented\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI BITS_IBackgroundCopyJob_RemoveCredentials( + IBackgroundCopyJob2 *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 9530b97c295..f0066c7f186 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; @@ -106,7 +106,7 @@ HRESULT BackgroundCopyFileConstructor(BackgroundCopyJobImpl *owner, LPCWSTR remoteName, LPCWSTR localName, LPVOID *ppObj); HRESULT EnumBackgroundCopyFilesConstructor(LPVOID *ppObj, - IBackgroundCopyJob* copyJob); + IBackgroundCopyJob2 *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 f72325f22b6..8e1341d010f 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 4b47b185209..e1bdce19701 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/Makefile.in b/include/Makefile.in index f81b4c403ef..0f9416a9fdf 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -11,6 +11,7 @@ IDL_H_SRCS = \ amvideo.idl \ austream.idl \ bits.idl \ + bits1_5.idl \ comcat.idl \ control.idl \ d3d10.idl \ diff --git a/include/bits1_5.idl b/include/bits1_5.idl new file mode 100644 index 00000000000..0bb27cac8f3 --- /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); +} -- GitLab