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) );