Module: wine Branch: master Commit: dc0e478d5cfa1cdf9b2504110238c10012ab2d19 URL: http://source.winehq.org/git/wine.git/?a=commit;h=dc0e478d5cfa1cdf9b25041102...
Author: Hans Leidekker hans@codeweavers.com Date: Thu Jun 28 09:24:21 2012 +0200
wbemprox: Implement IWbemServices::GetObject.
---
dlls/wbemprox/services.c | 26 ++++++++++++++++++++++++-- 1 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/dlls/wbemprox/services.c b/dlls/wbemprox/services.c index aeca7c8..05a9811 100644 --- a/dlls/wbemprox/services.c +++ b/dlls/wbemprox/services.c @@ -239,8 +239,30 @@ static HRESULT WINAPI wbem_services_GetObject( IWbemClassObject **ppObject, IWbemCallResult **ppCallResult ) { - FIXME("\n"); - return WBEM_E_FAILED; + static const WCHAR selectW[] = {'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ',0}; + IEnumWbemClassObject *iter; + WCHAR *query; + HRESULT hr; + + TRACE("%p, %s, 0x%08x, %p, %p, %p\n", iface, debugstr_w(strObjectPath), lFlags, + pCtx, ppObject, ppCallResult); + + if (lFlags) FIXME("unsupported flags 0x%08x\n", lFlags); + + /* FIXME: parse path */ + + if (!(query = heap_alloc( strlenW( strObjectPath ) * sizeof(WCHAR) + sizeof(selectW) ))) + return E_OUTOFMEMORY; + strcpyW( query, selectW ); + strcatW( query, strObjectPath ); + + hr = exec_query( query, &iter ); + heap_free( query ); + if (hr != S_OK) return hr; + + hr = WbemClassObject_create( NULL, iter, 0, (void **)ppObject ); + IEnumWbemClassObject_Release( iter ); + return hr; }
static HRESULT WINAPI wbem_services_GetObjectAsync(