2 * IUpdateSearcher implementation
4 * Copyright 2008 Hans Leidekker
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #define WIN32_NO_STATUS
31 //#include "winuser.h"
35 #include <wine/debug.h>
37 WINE_DEFAULT_DEBUG_CHANNEL(wuapi
);
39 typedef struct _update_searcher
41 IUpdateSearcher IUpdateSearcher_iface
;
45 static inline update_searcher
*impl_from_IUpdateSearcher( IUpdateSearcher
*iface
)
47 return CONTAINING_RECORD(iface
, update_searcher
, IUpdateSearcher_iface
);
50 static ULONG WINAPI
update_searcher_AddRef(
51 IUpdateSearcher
*iface
)
53 update_searcher
*update_searcher
= impl_from_IUpdateSearcher( iface
);
54 return InterlockedIncrement( &update_searcher
->refs
);
57 static ULONG WINAPI
update_searcher_Release(
58 IUpdateSearcher
*iface
)
60 update_searcher
*update_searcher
= impl_from_IUpdateSearcher( iface
);
61 LONG refs
= InterlockedDecrement( &update_searcher
->refs
);
64 TRACE("destroying %p\n", update_searcher
);
65 HeapFree( GetProcessHeap(), 0, update_searcher
);
70 static HRESULT WINAPI
update_searcher_QueryInterface(
71 IUpdateSearcher
*iface
,
75 update_searcher
*This
= impl_from_IUpdateSearcher( iface
);
77 TRACE("%p %s %p\n", This
, debugstr_guid( riid
), ppvObject
);
79 if ( IsEqualGUID( riid
, &IID_IUpdateSearcher
) ||
80 IsEqualGUID( riid
, &IID_IDispatch
) ||
81 IsEqualGUID( riid
, &IID_IUnknown
) )
87 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
90 IUpdateSearcher_AddRef( iface
);
94 static HRESULT WINAPI
update_searcher_GetTypeInfoCount(
95 IUpdateSearcher
*iface
,
102 static HRESULT WINAPI
update_searcher_GetTypeInfo(
103 IUpdateSearcher
*iface
,
106 ITypeInfo
**ppTInfo
)
112 static HRESULT WINAPI
update_searcher_GetIDsOfNames(
113 IUpdateSearcher
*iface
,
124 static HRESULT WINAPI
update_searcher_Invoke(
125 IUpdateSearcher
*iface
,
130 DISPPARAMS
*pDispParams
,
132 EXCEPINFO
*pExcepInfo
,
139 static HRESULT WINAPI
update_searcher_get_CanAutomaticallyUpgradeService(
140 IUpdateSearcher
*This
,
141 VARIANT_BOOL
*retval
)
147 static HRESULT WINAPI
update_searcher_put_CanAutomaticallyUpgradeService(
148 IUpdateSearcher
*This
,
151 FIXME("%p, %d\n", This
, value
);
155 static HRESULT WINAPI
update_searcher_get_ClientApplicationID(
156 IUpdateSearcher
*This
,
163 static HRESULT WINAPI
update_searcher_put_ClientApplicationID(
164 IUpdateSearcher
*This
,
167 FIXME("%p, %s\n", This
, debugstr_w(value
));
171 static HRESULT WINAPI
update_searcher_get_IncludePotentiallySupersededUpdates(
172 IUpdateSearcher
*This
,
173 VARIANT_BOOL
*retval
)
179 static HRESULT WINAPI
update_searcher_put_IncludePotentiallySupersededUpdates(
180 IUpdateSearcher
*This
,
187 static HRESULT WINAPI
update_searcher_get_ServerSelection(
188 IUpdateSearcher
*This
,
189 ServerSelection
*retval
)
195 static HRESULT WINAPI
update_searcher_put_ServerSelection(
196 IUpdateSearcher
*This
,
197 ServerSelection value
)
203 static HRESULT WINAPI
update_searcher_BeginSearch(
204 IUpdateSearcher
*This
,
206 IUnknown
*onCompleted
,
208 ISearchJob
**retval
)
214 static HRESULT WINAPI
update_searcher_EndSearch(
215 IUpdateSearcher
*This
,
216 ISearchJob
*searchJob
,
217 ISearchResult
**retval
)
223 static HRESULT WINAPI
update_searcher_EscapeString(
224 IUpdateSearcher
*This
,
232 static HRESULT WINAPI
update_searcher_QueryHistory(
233 IUpdateSearcher
*This
,
236 IUpdateHistoryEntryCollection
**retval
)
242 static HRESULT WINAPI
update_searcher_Search(
243 IUpdateSearcher
*This
,
245 ISearchResult
**retval
)
251 static HRESULT WINAPI
update_searcher_get_Online(
252 IUpdateSearcher
*This
,
253 VARIANT_BOOL
*retval
)
259 static HRESULT WINAPI
update_searcher_put_Online(
260 IUpdateSearcher
*This
,
267 static HRESULT WINAPI
update_searcher_GetTotalHistoryCount(
268 IUpdateSearcher
*This
,
275 static HRESULT WINAPI
update_searcher_get_ServiceID(
276 IUpdateSearcher
*This
,
283 static HRESULT WINAPI
update_searcher_put_ServiceID(
284 IUpdateSearcher
*This
,
291 static const struct IUpdateSearcherVtbl update_searcher_vtbl
=
293 update_searcher_QueryInterface
,
294 update_searcher_AddRef
,
295 update_searcher_Release
,
296 update_searcher_GetTypeInfoCount
,
297 update_searcher_GetTypeInfo
,
298 update_searcher_GetIDsOfNames
,
299 update_searcher_Invoke
,
300 update_searcher_get_CanAutomaticallyUpgradeService
,
301 update_searcher_put_CanAutomaticallyUpgradeService
,
302 update_searcher_get_ClientApplicationID
,
303 update_searcher_put_ClientApplicationID
,
304 update_searcher_get_IncludePotentiallySupersededUpdates
,
305 update_searcher_put_IncludePotentiallySupersededUpdates
,
306 update_searcher_get_ServerSelection
,
307 update_searcher_put_ServerSelection
,
308 update_searcher_BeginSearch
,
309 update_searcher_EndSearch
,
310 update_searcher_EscapeString
,
311 update_searcher_QueryHistory
,
312 update_searcher_Search
,
313 update_searcher_get_Online
,
314 update_searcher_put_Online
,
315 update_searcher_GetTotalHistoryCount
,
316 update_searcher_get_ServiceID
,
317 update_searcher_put_ServiceID
320 HRESULT
UpdateSearcher_create( IUnknown
*pUnkOuter
, LPVOID
*ppObj
)
322 update_searcher
*searcher
;
324 TRACE("(%p,%p)\n", pUnkOuter
, ppObj
);
326 searcher
= HeapAlloc( GetProcessHeap(), 0, sizeof(*searcher
) );
327 if (!searcher
) return E_OUTOFMEMORY
;
329 searcher
->IUpdateSearcher_iface
.lpVtbl
= &update_searcher_vtbl
;
332 *ppObj
= &searcher
->IUpdateSearcher_iface
;
334 TRACE("returning iface %p\n", *ppObj
);