From: Conor McCarthy <cmccarthy@codeweavers.com> --- dlls/wbemdisp/locator.c | 9 ++++++--- dlls/wbemdisp/tests/wbemdisp.c | 4 ---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/dlls/wbemdisp/locator.c b/dlls/wbemdisp/locator.c index f72143b8c53..4ac1dcd978f 100644 --- a/dlls/wbemdisp/locator.c +++ b/dlls/wbemdisp/locator.c @@ -54,6 +54,7 @@ enum enum_variant_type { ENUM_OBJECTS, ENUM_PROPERTIES, + ENUM_METHODS, }; struct services; @@ -933,9 +934,11 @@ static HRESULT WINAPI methodset_get__NewEnum( ISWbemMethodSet *iface, IUnknown **unk ) { - FIXME("\n"); + struct methodset *set = impl_from_ISWbemMethodSet( iface ); - return E_NOTIMPL; + TRACE( "%p, %p\n", iface, unk ); + + return EnumVARIANT_create( ENUM_METHODS, NULL, &set->object->ISWbemObject_iface, (IEnumVARIANT **)unk ); } static HRESULT WINAPI methodset_Item( @@ -2095,7 +2098,7 @@ static HRESULT WINAPI enumvar_Next( IEnumVARIANT *iface, ULONG celt, VARIANT *va HRESULT hr; if (object->members[cursor].is_system) continue; - if (object->members[cursor].is_method) continue; + if (object->members[cursor].is_method != (enumvar->enum_type == ENUM_METHODS)) continue; hr = SWbemProperty_create( object->object, object->members[cursor].name, &prop ); if (FAILED( hr )) diff --git a/dlls/wbemdisp/tests/wbemdisp.c b/dlls/wbemdisp/tests/wbemdisp.c index bd719df81b2..b736a36845f 100644 --- a/dlls/wbemdisp/tests/wbemdisp.c +++ b/dlls/wbemdisp/tests/wbemdisp.c @@ -340,15 +340,11 @@ static void test_ParseDisplayName(void) ISWbemPropertySet_Release( props ); hr = ISWbemMethodSet_get__NewEnum( methods, (IUnknown **)&setenumvar ); - todo_wine ok( hr == S_OK, "got %#lx\n", hr ); - if (hr == S_OK) - { hr = IEnumVARIANT_Next( setenumvar, ARRAY_SIZE(vars), vars, &fetched ); ok( hr == S_FALSE, "got %#lx\n", hr ); ok( !fetched, "got %lu\n", fetched ); IEnumVARIANT_Release( setenumvar ); - } ISWbemMethodSet_Release( methods ); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11724