From: Esme Povirk <esme@codeweavers.com> --- dlls/wminet_utils/Makefile.in | 1 + dlls/wminet_utils/main.c | 30 +++++++++++++++++++++++++++++ dlls/wminet_utils/wminet_utils.spec | 2 +- 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/dlls/wminet_utils/Makefile.in b/dlls/wminet_utils/Makefile.in index 663265289ae..2df888adc4f 100644 --- a/dlls/wminet_utils/Makefile.in +++ b/dlls/wminet_utils/Makefile.in @@ -1,4 +1,5 @@ MODULE = wminet_utils.dll +IMPORTS = ole32 EXTRADLLFLAGS = -Wb,--prefer-native diff --git a/dlls/wminet_utils/main.c b/dlls/wminet_utils/main.c index e6a9f36b324..47eed7a9426 100644 --- a/dlls/wminet_utils/main.c +++ b/dlls/wminet_utils/main.c @@ -23,12 +23,42 @@ #define COBJMACROS +#include "initguid.h" #include "objidl.h" +#include "wbemcli.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(wminet_utils); +HRESULT WINAPI ConnectServerWmi(BSTR strNetworkResource, BSTR strUser, BSTR strPassword, + BSTR strLocale, long lSecurityFlags, BSTR strAuthority, IWbemContext *pCtx, + IWbemServices** ppNamespace, DWORD impLevel, DWORD authLevel) +{ + HRESULT hr; + IWbemLocator *locator; + + TRACE("%li %li\n", impLevel, authLevel); + + if (!ppNamespace) + return E_POINTER; + + *ppNamespace = NULL; + + hr = CoCreateInstance(&CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, &IID_IWbemLocator, + (void**)&locator); + + if (SUCCEEDED(hr)) + { + hr = IWbemLocator_ConnectServer(locator, strNetworkResource, strUser, strPassword, + strLocale, lSecurityFlags, strAuthority, pCtx, ppNamespace); + + IWbemLocator_Release(locator); + } + + return hr; +} + HRESULT WINAPI GetCurrentApartmentType(int vFunc, IComThreadingInfo *ptr, APTTYPE *aptType) { TRACE("%i %p %p\n", vFunc, ptr, aptType); return IComThreadingInfo_GetCurrentApartmentType(ptr, aptType); diff --git a/dlls/wminet_utils/wminet_utils.spec b/dlls/wminet_utils/wminet_utils.spec index c07713ec37a..2a2f35bdead 100644 --- a/dlls/wminet_utils/wminet_utils.spec +++ b/dlls/wminet_utils/wminet_utils.spec @@ -5,7 +5,7 @@ @ stub Clone @ stub CloneEnumWbemClassObject @ stub CompareTo -@ stub ConnectServerWmi +@ stdcall ConnectServerWmi(wstr wstr wstr wstr long wstr ptr ptr long long) @ stub CreateClassEnumWmi @ stub CreateInstanceEnumWmi @ stub Delete -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9958