Module: wine Branch: master Commit: e614df5583fce36bca80c891627e107f8e2925f6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e614df5583fce36bca80c89162...
Author: Hans Leidekker hans@codeweavers.com Date: Tue Dec 16 16:42:35 2008 +0100
wuapi: Add a stub implementation of IUpdateSearcher.
---
dlls/wuapi/Makefile.in | 3 +- dlls/wuapi/searcher.c | 257 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 259 insertions(+), 1 deletions(-)
diff --git a/dlls/wuapi/Makefile.in b/dlls/wuapi/Makefile.in index e870d78..72de377 100644 --- a/dlls/wuapi/Makefile.in +++ b/dlls/wuapi/Makefile.in @@ -9,7 +9,8 @@ IMPORTS = uuid kernel32 C_SRCS = \ downloader.c \ installer.c \ - main.c + main.c \ + searcher.c
@MAKE_DLL_RULES@
diff --git a/dlls/wuapi/searcher.c b/dlls/wuapi/searcher.c new file mode 100644 index 0000000..8105681 --- /dev/null +++ b/dlls/wuapi/searcher.c @@ -0,0 +1,257 @@ +/* + * IUpdateSearcher implementation + * + * Copyright 2008 Hans Leidekker + * + * 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 + */ + +#define COBJMACROS + +#include "config.h" +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "ole2.h" +#include "wuapi.h" + +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(wuapi); + +typedef struct _update_searcher +{ + const struct IUpdateSearcherVtbl *vtbl; + LONG refs; +} update_searcher; + +static inline update_searcher *impl_from_IUpdateSearcher( IUpdateSearcher *iface ) +{ + return (update_searcher *)((char *)iface - FIELD_OFFSET( update_searcher, vtbl )); +} + +static ULONG WINAPI update_searcher_AddRef( + IUpdateSearcher *iface ) +{ + update_searcher *update_searcher = impl_from_IUpdateSearcher( iface ); + return InterlockedIncrement( &update_searcher->refs ); +} + +static ULONG WINAPI update_searcher_Release( + IUpdateSearcher *iface ) +{ + update_searcher *update_searcher = impl_from_IUpdateSearcher( iface ); + LONG refs = InterlockedDecrement( &update_searcher->refs ); + if (!refs) + { + TRACE("destroying %p\n", update_searcher); + HeapFree( GetProcessHeap(), 0, update_searcher ); + } + return refs; +} + +static HRESULT WINAPI update_searcher_QueryInterface( + IUpdateSearcher *iface, + REFIID riid, + void **ppvObject ) +{ + update_searcher *This = impl_from_IUpdateSearcher( iface ); + + TRACE("%p %s %p\n", This, debugstr_guid( riid ), ppvObject ); + + if ( IsEqualGUID( riid, &IID_IUpdateSearcher ) || + IsEqualGUID( riid, &IID_IDispatch ) || + IsEqualGUID( riid, &IID_IUnknown ) ) + { + *ppvObject = iface; + } + else + { + FIXME("interface %s not implemented\n", debugstr_guid(riid)); + return E_NOINTERFACE; + } + IUpdateSearcher_AddRef( iface ); + return S_OK; +} + +static HRESULT WINAPI update_searcher_GetTypeInfoCount( + IUpdateSearcher *iface, + UINT *pctinfo ) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI update_searcher_GetTypeInfo( + IUpdateSearcher *iface, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo ) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI update_searcher_GetIDsOfNames( + IUpdateSearcher *iface, + REFIID riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId ) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI update_searcher_Invoke( + IUpdateSearcher *iface, + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr ) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI update_searcher_get_CanAutomaticallyUpgradeService( + IUpdateSearcher *This, + VARIANT_BOOL *retval ) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI update_searcher_put_CanAutomaticallyUpgradeService( + IUpdateSearcher *This, + VARIANT_BOOL value ) +{ + FIXME("%p, %d\n", This, value); + return S_OK; +} + +static HRESULT WINAPI update_searcher_get_ClientApplicationID( + IUpdateSearcher *This, + BSTR *retval ) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI update_searcher_put_ClientApplicationID( + IUpdateSearcher *This, + BSTR value ) +{ + FIXME("%p, %s\n", This, debugstr_w(value)); + return E_NOTIMPL; +} + +static HRESULT WINAPI update_searcher_get_IncludePotentiallySupersededUpdates( + IUpdateSearcher *This, + VARIANT_BOOL *retval ) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI update_searcher_put_IncludePotentiallySupersededUpdates( + IUpdateSearcher *This, + VARIANT_BOOL value ) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI update_searcher_get_ServerSelection( + IUpdateSearcher *This, + ServerSelection *retval ) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI update_searcher_put_ServerSelection( + IUpdateSearcher *This, + ServerSelection value ) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI update_searcher_BeginSearch( + IUpdateSearcher *This, + BSTR criteria, + IUnknown *onCompleted, + VARIANT state, + ISearchJob **retval ) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI update_searcher_EndSearch( + IUpdateSearcher *This, + ISearchJob *searchJob, + ISearchResult **retval ) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static const struct IUpdateSearcherVtbl update_searcher_vtbl = +{ + update_searcher_QueryInterface, + update_searcher_AddRef, + update_searcher_Release, + update_searcher_GetTypeInfoCount, + update_searcher_GetTypeInfo, + update_searcher_GetIDsOfNames, + update_searcher_Invoke, + update_searcher_get_CanAutomaticallyUpgradeService, + update_searcher_put_CanAutomaticallyUpgradeService, + update_searcher_get_ClientApplicationID, + update_searcher_put_ClientApplicationID, + update_searcher_get_IncludePotentiallySupersededUpdates, + update_searcher_put_IncludePotentiallySupersededUpdates, + update_searcher_get_ServerSelection, + update_searcher_put_ServerSelection, + update_searcher_BeginSearch, + update_searcher_EndSearch +}; + +HRESULT UpdateSearcher_create( IUnknown *pUnkOuter, LPVOID *ppObj ) +{ + update_searcher *searcher; + + TRACE("(%p,%p)\n", pUnkOuter, ppObj); + + searcher = HeapAlloc( GetProcessHeap(), 0, sizeof(*searcher) ); + if (!searcher) return E_OUTOFMEMORY; + + searcher->vtbl = &update_searcher_vtbl; + searcher->refs = 1; + + *ppObj = &searcher->vtbl; + + TRACE("returning iface %p\n", *ppObj); + return S_OK; +}