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 #include "wuapi_private.h"
23 typedef struct _update_searcher
25 IUpdateSearcher IUpdateSearcher_iface
;
29 static inline update_searcher
*impl_from_IUpdateSearcher( IUpdateSearcher
*iface
)
31 return CONTAINING_RECORD(iface
, update_searcher
, IUpdateSearcher_iface
);
34 static ULONG WINAPI
update_searcher_AddRef(
35 IUpdateSearcher
*iface
)
37 update_searcher
*update_searcher
= impl_from_IUpdateSearcher( iface
);
38 return InterlockedIncrement( &update_searcher
->refs
);
41 static ULONG WINAPI
update_searcher_Release(
42 IUpdateSearcher
*iface
)
44 update_searcher
*update_searcher
= impl_from_IUpdateSearcher( iface
);
45 LONG refs
= InterlockedDecrement( &update_searcher
->refs
);
48 TRACE("destroying %p\n", update_searcher
);
49 HeapFree( GetProcessHeap(), 0, update_searcher
);
54 static HRESULT WINAPI
update_searcher_QueryInterface(
55 IUpdateSearcher
*iface
,
59 update_searcher
*This
= impl_from_IUpdateSearcher( iface
);
61 TRACE("%p %s %p\n", This
, debugstr_guid( riid
), ppvObject
);
63 if ( IsEqualGUID( riid
, &IID_IUpdateSearcher
) ||
64 IsEqualGUID( riid
, &IID_IDispatch
) ||
65 IsEqualGUID( riid
, &IID_IUnknown
) )
71 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
74 IUpdateSearcher_AddRef( iface
);
78 static HRESULT WINAPI
update_searcher_GetTypeInfoCount(
79 IUpdateSearcher
*iface
,
86 static HRESULT WINAPI
update_searcher_GetTypeInfo(
87 IUpdateSearcher
*iface
,
96 static HRESULT WINAPI
update_searcher_GetIDsOfNames(
97 IUpdateSearcher
*iface
,
108 static HRESULT WINAPI
update_searcher_Invoke(
109 IUpdateSearcher
*iface
,
114 DISPPARAMS
*pDispParams
,
116 EXCEPINFO
*pExcepInfo
,
123 static HRESULT WINAPI
update_searcher_get_CanAutomaticallyUpgradeService(
124 IUpdateSearcher
*This
,
125 VARIANT_BOOL
*retval
)
131 static HRESULT WINAPI
update_searcher_put_CanAutomaticallyUpgradeService(
132 IUpdateSearcher
*This
,
135 FIXME("%p, %d\n", This
, value
);
139 static HRESULT WINAPI
update_searcher_get_ClientApplicationID(
140 IUpdateSearcher
*This
,
147 static HRESULT WINAPI
update_searcher_put_ClientApplicationID(
148 IUpdateSearcher
*This
,
151 FIXME("%p, %s\n", This
, debugstr_w(value
));
155 static HRESULT WINAPI
update_searcher_get_IncludePotentiallySupersededUpdates(
156 IUpdateSearcher
*This
,
157 VARIANT_BOOL
*retval
)
163 static HRESULT WINAPI
update_searcher_put_IncludePotentiallySupersededUpdates(
164 IUpdateSearcher
*This
,
171 static HRESULT WINAPI
update_searcher_get_ServerSelection(
172 IUpdateSearcher
*This
,
173 ServerSelection
*retval
)
179 static HRESULT WINAPI
update_searcher_put_ServerSelection(
180 IUpdateSearcher
*This
,
181 ServerSelection value
)
187 static HRESULT WINAPI
update_searcher_BeginSearch(
188 IUpdateSearcher
*This
,
190 IUnknown
*onCompleted
,
192 ISearchJob
**retval
)
198 static HRESULT WINAPI
update_searcher_EndSearch(
199 IUpdateSearcher
*This
,
200 ISearchJob
*searchJob
,
201 ISearchResult
**retval
)
207 static HRESULT WINAPI
update_searcher_EscapeString(
208 IUpdateSearcher
*This
,
216 static HRESULT WINAPI
update_searcher_QueryHistory(
217 IUpdateSearcher
*This
,
220 IUpdateHistoryEntryCollection
**retval
)
226 static HRESULT WINAPI
update_searcher_Search(
227 IUpdateSearcher
*This
,
229 ISearchResult
**retval
)
235 static HRESULT WINAPI
update_searcher_get_Online(
236 IUpdateSearcher
*This
,
237 VARIANT_BOOL
*retval
)
243 static HRESULT WINAPI
update_searcher_put_Online(
244 IUpdateSearcher
*This
,
251 static HRESULT WINAPI
update_searcher_GetTotalHistoryCount(
252 IUpdateSearcher
*This
,
259 static HRESULT WINAPI
update_searcher_get_ServiceID(
260 IUpdateSearcher
*This
,
267 static HRESULT WINAPI
update_searcher_put_ServiceID(
268 IUpdateSearcher
*This
,
275 static const struct IUpdateSearcherVtbl update_searcher_vtbl
=
277 update_searcher_QueryInterface
,
278 update_searcher_AddRef
,
279 update_searcher_Release
,
280 update_searcher_GetTypeInfoCount
,
281 update_searcher_GetTypeInfo
,
282 update_searcher_GetIDsOfNames
,
283 update_searcher_Invoke
,
284 update_searcher_get_CanAutomaticallyUpgradeService
,
285 update_searcher_put_CanAutomaticallyUpgradeService
,
286 update_searcher_get_ClientApplicationID
,
287 update_searcher_put_ClientApplicationID
,
288 update_searcher_get_IncludePotentiallySupersededUpdates
,
289 update_searcher_put_IncludePotentiallySupersededUpdates
,
290 update_searcher_get_ServerSelection
,
291 update_searcher_put_ServerSelection
,
292 update_searcher_BeginSearch
,
293 update_searcher_EndSearch
,
294 update_searcher_EscapeString
,
295 update_searcher_QueryHistory
,
296 update_searcher_Search
,
297 update_searcher_get_Online
,
298 update_searcher_put_Online
,
299 update_searcher_GetTotalHistoryCount
,
300 update_searcher_get_ServiceID
,
301 update_searcher_put_ServiceID
304 HRESULT
UpdateSearcher_create( IUnknown
*pUnkOuter
, LPVOID
*ppObj
)
306 update_searcher
*searcher
;
308 TRACE("(%p,%p)\n", pUnkOuter
, ppObj
);
310 searcher
= HeapAlloc( GetProcessHeap(), 0, sizeof(*searcher
) );
311 if (!searcher
) return E_OUTOFMEMORY
;
313 searcher
->IUpdateSearcher_iface
.lpVtbl
= &update_searcher_vtbl
;
316 *ppObj
= &searcher
->IUpdateSearcher_iface
;
318 TRACE("returning iface %p\n", *ppObj
);