wbemdisp: Pass context value to ConnectServer().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Hans Leidekker <hans@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
65ed5d9cc6
commit
93858d787d
|
@ -35,6 +35,22 @@
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(wbemdisp);
|
WINE_DEFAULT_DEBUG_CHANNEL(wbemdisp);
|
||||||
|
|
||||||
|
struct namedvalueset
|
||||||
|
{
|
||||||
|
ISWbemNamedValueSet ISWbemNamedValueSet_iface;
|
||||||
|
LONG refs;
|
||||||
|
|
||||||
|
IWbemContext *context;
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct namedvalueset *unsafe_valueset_impl_from_IDispatch(IDispatch *iface);
|
||||||
|
|
||||||
|
static IWbemContext * unsafe_get_context_from_namedvalueset( IDispatch *disp )
|
||||||
|
{
|
||||||
|
struct namedvalueset *valueset = unsafe_valueset_impl_from_IDispatch( disp );
|
||||||
|
return valueset ? valueset->context : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static WCHAR *heap_strdupW( const WCHAR *src )
|
static WCHAR *heap_strdupW( const WCHAR *src )
|
||||||
{
|
{
|
||||||
WCHAR *dst;
|
WCHAR *dst;
|
||||||
|
@ -2751,6 +2767,7 @@ static HRESULT WINAPI locator_ConnectServer(
|
||||||
{
|
{
|
||||||
struct locator *locator = impl_from_ISWbemLocator( iface );
|
struct locator *locator = impl_from_ISWbemLocator( iface );
|
||||||
IWbemServices *services;
|
IWbemServices *services;
|
||||||
|
IWbemContext *context;
|
||||||
BSTR resource;
|
BSTR resource;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
|
@ -2758,8 +2775,6 @@ static HRESULT WINAPI locator_ConnectServer(
|
||||||
debugstr_w(strNamespace), debugstr_w(strUser), strPassword, debugstr_w(strLocale),
|
debugstr_w(strNamespace), debugstr_w(strUser), strPassword, debugstr_w(strLocale),
|
||||||
debugstr_w(strAuthority), iSecurityFlags, objWbemNamedValueSet, objWbemServices );
|
debugstr_w(strAuthority), iSecurityFlags, objWbemNamedValueSet, objWbemServices );
|
||||||
|
|
||||||
if (objWbemNamedValueSet) FIXME( "context not supported\n" );
|
|
||||||
|
|
||||||
if (!locator->locator)
|
if (!locator->locator)
|
||||||
{
|
{
|
||||||
hr = CoCreateInstance( &CLSID_WbemLocator, NULL, CLSCTX_INPROC_SERVER, &IID_IWbemLocator,
|
hr = CoCreateInstance( &CLSID_WbemLocator, NULL, CLSCTX_INPROC_SERVER, &IID_IWbemLocator,
|
||||||
|
@ -2767,9 +2782,11 @@ static HRESULT WINAPI locator_ConnectServer(
|
||||||
if (hr != S_OK) return hr;
|
if (hr != S_OK) return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
context = unsafe_get_context_from_namedvalueset( objWbemNamedValueSet );
|
||||||
|
|
||||||
if (!(resource = build_resource_string( strServer, strNamespace ))) return E_OUTOFMEMORY;
|
if (!(resource = build_resource_string( strServer, strNamespace ))) return E_OUTOFMEMORY;
|
||||||
hr = IWbemLocator_ConnectServer( locator->locator, resource, strUser, strPassword, strLocale,
|
hr = IWbemLocator_ConnectServer( locator->locator, resource, strUser, strPassword, strLocale,
|
||||||
iSecurityFlags, strAuthority, NULL, &services );
|
iSecurityFlags, strAuthority, context, &services );
|
||||||
SysFreeString( resource );
|
SysFreeString( resource );
|
||||||
if (hr != S_OK) return hr;
|
if (hr != S_OK) return hr;
|
||||||
|
|
||||||
|
@ -3047,14 +3064,6 @@ static HRESULT ISWbemSecurity_create( ISWbemSecurity **obj )
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct namedvalueset
|
|
||||||
{
|
|
||||||
ISWbemNamedValueSet ISWbemNamedValueSet_iface;
|
|
||||||
LONG refs;
|
|
||||||
|
|
||||||
IWbemContext *context;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct namedvalue
|
struct namedvalue
|
||||||
{
|
{
|
||||||
ISWbemNamedValue ISWbemNamedValue_iface;
|
ISWbemNamedValue ISWbemNamedValue_iface;
|
||||||
|
@ -3478,6 +3487,18 @@ static const ISWbemNamedValueSetVtbl namedvalueset_vtbl =
|
||||||
namedvalueset_DeleteAll,
|
namedvalueset_DeleteAll,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct namedvalueset *unsafe_valueset_impl_from_IDispatch(IDispatch *iface)
|
||||||
|
{
|
||||||
|
if (!iface)
|
||||||
|
return NULL;
|
||||||
|
if (iface->lpVtbl != (IDispatchVtbl *)&namedvalueset_vtbl)
|
||||||
|
{
|
||||||
|
FIXME( "External implementations are not supported.\n" );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return CONTAINING_RECORD(iface, struct namedvalueset, ISWbemNamedValueSet_iface);
|
||||||
|
}
|
||||||
|
|
||||||
HRESULT SWbemNamedValueSet_create( void **obj )
|
HRESULT SWbemNamedValueSet_create( void **obj )
|
||||||
{
|
{
|
||||||
struct namedvalueset *set;
|
struct namedvalueset *set;
|
||||||
|
|
Loading…
Reference in New Issue