Nikolay Sivov : wbemdisp: Forward ExecMethod_() to Services object.

Alexandre Julliard julliard at winehq.org
Mon Mar 1 15:54:04 CST 2021


Module: wine
Branch: master
Commit: c86ad936d05a2b53ac33ee2728807c9edc4216b6
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=c86ad936d05a2b53ac33ee2728807c9edc4216b6

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Mar  1 10:18:31 2021 +0300

wbemdisp: Forward ExecMethod_() to Services object.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wbemdisp/locator.c | 36 +++++++++++++++++++++++++++++-------
 1 file changed, 29 insertions(+), 7 deletions(-)

diff --git a/dlls/wbemdisp/locator.c b/dlls/wbemdisp/locator.c
index 9e191c07b49..926a4e88e63 100644
--- a/dlls/wbemdisp/locator.c
+++ b/dlls/wbemdisp/locator.c
@@ -1414,14 +1414,36 @@ static HRESULT WINAPI object_ReferencesAsync_(
 
 static HRESULT WINAPI object_ExecMethod_(
     ISWbemObject *iface,
-    BSTR strMethodName,
-    IDispatch *objWbemInParameters,
-    LONG iFlags,
-    IDispatch *objWbemNamedValueSet,
-    ISWbemObject **objWbemOutParameters )
+    BSTR method,
+    IDispatch *in_params,
+    LONG flags,
+    IDispatch *valueset,
+    ISWbemObject **out_params )
 {
-    FIXME( "\n" );
-    return E_NOTIMPL;
+    struct object *object = impl_from_ISWbemObject( iface );
+    VARIANT path;
+    HRESULT hr;
+
+    TRACE( "%p, %s, %p, %#x, %p, %p\n", object, debugstr_w(method), in_params, flags, valueset, out_params );
+
+    V_VT( &path ) = VT_EMPTY;
+    hr = IWbemClassObject_Get( object->object, L"__PATH", 0, &path, NULL, NULL );
+    if (SUCCEEDED(hr))
+    {
+        if (V_VT( &path ) != VT_BSTR)
+        {
+            WARN( "Unexpected object path value type.\n" );
+            VariantClear( &path );
+            return E_UNEXPECTED;
+        }
+
+        hr = ISWbemServices_ExecMethod( &object->services->ISWbemServices_iface, V_BSTR( &path ), method,
+                in_params, flags, valueset, out_params );
+
+        VariantClear( &path );
+    }
+
+    return hr;
 }
 
 static HRESULT WINAPI object_ExecMethodAsync_(




More information about the wine-cvs mailing list