From ce923c3f57574262b966c881ad42516c2d3dd803 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Fri, 12 Oct 2018 19:17:32 +0200 Subject: [PATCH] wbemdisp: Implement ISWbemPropertySet::get_Count. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=40534 Signed-off-by: Hans Leidekker Signed-off-by: Alexandre Julliard --- dlls/wbemdisp/locator.c | 15 +++++++++++++-- dlls/wbemdisp/tests/wbemdisp.c | 6 ++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/dlls/wbemdisp/locator.c b/dlls/wbemdisp/locator.c index 78b81d85515..c307e347cf8 100644 --- a/dlls/wbemdisp/locator.c +++ b/dlls/wbemdisp/locator.c @@ -438,8 +438,19 @@ static HRESULT WINAPI propertyset_Item( ISWbemPropertySet *iface, BSTR name, static HRESULT WINAPI propertyset_get_Count( ISWbemPropertySet *iface, LONG *count ) { - FIXME( "\n" ); - return E_NOTIMPL; + static const WCHAR propcountW[] = {'_','_','P','R','O','P','E','R','T','Y','_','C','O','U','N','T',0}; + struct propertyset *propertyset = impl_from_ISWbemPropertySet( iface ); + HRESULT hr; + VARIANT val; + + TRACE( "%p, %p\n", propertyset, count ); + + hr = IWbemClassObject_Get( propertyset->object, propcountW, 0, &val, NULL, NULL ); + if (SUCCEEDED(hr)) + { + *count = V_I4( &val ); + } + return hr; } static HRESULT WINAPI propertyset_Add( ISWbemPropertySet *iface, BSTR name, WbemCimtypeEnum type, diff --git a/dlls/wbemdisp/tests/wbemdisp.c b/dlls/wbemdisp/tests/wbemdisp.c index 68c0e3b5896..57baf848ccd 100644 --- a/dlls/wbemdisp/tests/wbemdisp.c +++ b/dlls/wbemdisp/tests/wbemdisp.c @@ -302,6 +302,7 @@ static void test_locator(void) ISWbemProperty *prop; ISWbemSecurity *security; VARIANT var; + LONG count; WbemImpersonationLevelEnum imp_level; WbemAuthenticationLevelEnum auth_level; @@ -379,6 +380,11 @@ static void test_locator(void) ok( hr == S_OK, "got %x\n", hr ); SysFreeString( procid_bstr ); + count = 0; + hr = ISWbemPropertySet_get_Count( prop_set, &count ); + ok( hr == S_OK, "got %x\n", hr ); + ok( count > 0, "got %d\n", count ); + hr = ISWbemProperty_get_Value( prop, &var ); ok( hr == S_OK, "got %x\n", hr ); ok( V_VT(&var) == VT_BSTR, "got %x\n", V_VT(&var) );