winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
February 2021
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
915 discussions
Start a n
N
ew thread
Alistair Leslie-Hughes : msado15: Implement Dispatch functions in _Connection.
by Alexandre Julliard
26 Feb '21
26 Feb '21
Module: wine Branch: master Commit: 079a963a278593131f3f299898ea60b00a254844 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=079a963a278593131f3f2998…
Author: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Date: Fri Feb 26 19:02:21 2021 +1100 msado15: Implement Dispatch functions in _Connection. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=16676
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msado15/connection.c | 46 +++++++++++++++++++++++++++++-------- dlls/msado15/main.c | 51 ++++++++++++++++++++++++++++++++++++++++++ dlls/msado15/msado15_private.h | 7 ++++++ 3 files changed, 95 insertions(+), 9 deletions(-) diff --git a/dlls/msado15/connection.c b/dlls/msado15/connection.c index d55c0d18a35..80297dcdc16 100644 --- a/dlls/msado15/connection.c +++ b/dlls/msado15/connection.c @@ -156,29 +156,57 @@ static HRESULT WINAPI connection_QueryInterface( _Connection *iface, REFIID riid static HRESULT WINAPI connection_GetTypeInfoCount( _Connection *iface, UINT *count ) { - FIXME( "%p, %p\n", iface, count ); - return E_NOTIMPL; + struct connection *connection = impl_from_Connection( iface ); + TRACE( "%p, %p\n", connection, count ); + *count = 1; + return S_OK; } static HRESULT WINAPI connection_GetTypeInfo( _Connection *iface, UINT index, LCID lcid, ITypeInfo **info ) { - FIXME( "%p, %u, %u, %p\n", iface, index, lcid, info ); - return E_NOTIMPL; + struct connection *connection = impl_from_Connection( iface ); + TRACE( "%p, %u, %u, %p\n", connection, index, lcid, info ); + return get_typeinfo(Connection_tid, info); } static HRESULT WINAPI connection_GetIDsOfNames( _Connection *iface, REFIID riid, LPOLESTR *names, UINT count, LCID lcid, DISPID *dispid ) { - FIXME( "%p, %s, %p, %u, %u, %p\n", iface, debugstr_guid(riid), names, count, lcid, dispid ); - return E_NOTIMPL; + struct connection *connection = impl_from_Connection( iface ); + HRESULT hr; + ITypeInfo *typeinfo; + + TRACE( "%p, %s, %p, %u, %u, %p\n", connection, debugstr_guid(riid), names, count, lcid, dispid ); + + hr = get_typeinfo(Connection_tid, &typeinfo); + if(SUCCEEDED(hr)) + { + hr = ITypeInfo_GetIDsOfNames(typeinfo, names, count, dispid); + ITypeInfo_Release(typeinfo); + } + + return hr; } static HRESULT WINAPI connection_Invoke( _Connection *iface, DISPID member, REFIID riid, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excep_info, UINT *arg_err ) { - FIXME( "%p, %d, %s, %d, %d, %p, %p, %p, %p\n", iface, member, debugstr_guid(riid), lcid, flags, params, - result, excep_info, arg_err ); - return E_NOTIMPL; + struct connection *connection = impl_from_Connection( iface ); + HRESULT hr; + ITypeInfo *typeinfo; + + TRACE( "%p, %d, %s, %d, %d, %p, %p, %p, %p\n", connection, member, debugstr_guid(riid), lcid, flags, + params, result, excep_info, arg_err ); + + hr = get_typeinfo(Connection_tid, &typeinfo); + if(SUCCEEDED(hr)) + { + hr = ITypeInfo_Invoke(typeinfo, &connection->Connection_iface, member, flags, params, + result, excep_info, arg_err); + ITypeInfo_Release(typeinfo); + } + + return hr; } static HRESULT WINAPI connection_get_Properties( _Connection *iface, Properties **obj ) diff --git a/dlls/msado15/main.c b/dlls/msado15/main.c index 0b8de1f9117..f6b1b0fdf52 100644 --- a/dlls/msado15/main.c +++ b/dlls/msado15/main.c @@ -174,3 +174,54 @@ HRESULT WINAPI DllUnregisterServer( void ) { return __wine_unregister_resources( hinstance ); } + +static ITypeLib *typelib; +static ITypeInfo *typeinfos[LAST_tid]; + +static REFIID tid_ids[] = { + &IID__Connection, +}; + +static HRESULT load_typelib(void) +{ + HRESULT hres; + ITypeLib *tl; + + if(typelib) + return S_OK; + + hres = LoadRegTypeLib(&LIBID_ADODB, 1, 0, LOCALE_SYSTEM_DEFAULT, &tl); + if(FAILED(hres)) { + ERR("LoadRegTypeLib failed: %08x\n", hres); + return hres; + } + + if(InterlockedCompareExchangePointer((void**)&typelib, tl, NULL)) + ITypeLib_Release(tl); + return hres; +} + +HRESULT get_typeinfo(tid_t tid, ITypeInfo **typeinfo) +{ + HRESULT hres; + + if (FAILED(hres = load_typelib())) + return hres; + + if(!typeinfos[tid]) { + ITypeInfo *ti; + + hres = ITypeLib_GetTypeInfoOfGuid(typelib, tid_ids[tid], &ti); + if(FAILED(hres)) { + ERR("GetTypeInfoOfGuid(%s) failed: %08x\n", debugstr_guid(tid_ids[tid]), hres); + return hres; + } + + if(InterlockedCompareExchangePointer((void**)(typeinfos+tid), ti, NULL)) + ITypeInfo_Release(ti); + } + + *typeinfo = typeinfos[tid]; + ITypeInfo_AddRef(*typeinfo); + return S_OK; +} diff --git a/dlls/msado15/msado15_private.h b/dlls/msado15/msado15_private.h index dd98c382e2b..a5b22f29446 100644 --- a/dlls/msado15/msado15_private.h +++ b/dlls/msado15/msado15_private.h @@ -42,4 +42,11 @@ static inline WCHAR *strdupW( const WCHAR *src ) return dst; } +typedef enum tid_t { + Connection_tid, + LAST_tid +} tid_t; + +HRESULT get_typeinfo(tid_t tid, ITypeInfo **typeinfo) DECLSPEC_HIDDEN; + #endif /* _WINE_MSADO15_PRIVATE_H_ */
1
0
0
0
Nikolay Sivov : wbemdisp: Handle DISPATCH_PROPERTYPUT in scripting object Invoke().
by Alexandre Julliard
26 Feb '21
26 Feb '21
Module: wine Branch: master Commit: 5b836d172554bec3b922958e5f4eed21bf7a1603 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=5b836d172554bec3b922958e…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Fri Feb 26 10:22:16 2021 +0300 wbemdisp: Handle DISPATCH_PROPERTYPUT in scripting object Invoke(). Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wbemdisp/locator.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/dlls/wbemdisp/locator.c b/dlls/wbemdisp/locator.c index d7b04e343fd..619f7e5c67f 100644 --- a/dlls/wbemdisp/locator.c +++ b/dlls/wbemdisp/locator.c @@ -1226,16 +1226,28 @@ static HRESULT WINAPI object_Invoke( return hr; } - if (flags != (DISPATCH_METHOD|DISPATCH_PROPERTYGET)) + if (!(name = get_member_name( object, member ))) + return DISP_E_MEMBERNOTFOUND; + + if (flags == (DISPATCH_METHOD|DISPATCH_PROPERTYGET)) + { + memset( params, 0, sizeof(*params) ); + return IWbemClassObject_Get( object->object, name, 0, result, NULL, NULL ); + } + else if (flags == DISPATCH_PROPERTYPUT) + { + if (!params->cArgs || !params->rgvarg) + { + WARN( "Missing put property value\n" ); + return E_INVALIDARG; + } + return IWbemClassObject_Put( object->object, name, 0, params->rgvarg, 0 ); + } + else { FIXME( "flags %x not supported\n", flags ); return E_NOTIMPL; } - if (!(name = get_member_name( object, member ))) - return DISP_E_MEMBERNOTFOUND; - - memset( params, 0, sizeof(*params) ); - return IWbemClassObject_Get( object->object, name, 0, result, NULL, NULL ); } static HRESULT WINAPI object_Put_(
1
0
0
0
Nikolay Sivov : wbemdisp: Implement InParameters() property for a method object.
by Alexandre Julliard
26 Feb '21
26 Feb '21
Module: wine Branch: master Commit: 28dc9e1e0a36be0808df56c32d6ddfee28112a98 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=28dc9e1e0a36be0808df56c3…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Fri Feb 26 10:22:15 2021 +0300 wbemdisp: Implement InParameters() property for a method object. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wbemdisp/locator.c | 60 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 49 insertions(+), 11 deletions(-) diff --git a/dlls/wbemdisp/locator.c b/dlls/wbemdisp/locator.c index a73bd6e55da..d7b04e343fd 100644 --- a/dlls/wbemdisp/locator.c +++ b/dlls/wbemdisp/locator.c @@ -35,8 +35,17 @@ WINE_DEFAULT_DEBUG_CHANNEL(wbemdisp); +static WCHAR *heap_strdupW( const WCHAR *src ) +{ + WCHAR *dst; + if (!src) return NULL; + if ((dst = heap_alloc( (lstrlenW( src ) + 1) * sizeof(WCHAR) ))) lstrcpyW( dst, src ); + return dst; +} + static HRESULT EnumVARIANT_create( IEnumWbemClassObject *, IEnumVARIANT ** ); static HRESULT ISWbemSecurity_create( ISWbemSecurity ** ); +static HRESULT SWbemObject_create( IWbemClassObject *, ISWbemObject ** ); enum type_id { @@ -522,10 +531,19 @@ struct object DISPID last_dispid_method; }; +struct methodset +{ + ISWbemMethodSet ISWbemMethodSet_iface; + LONG refs; + struct object *object; +}; + struct method { ISWbemMethod ISWbemMethod_iface; LONG refs; + struct methodset *set; + WCHAR *name; }; static struct method *impl_from_ISWbemMethod( ISWbemMethod *iface ) @@ -567,6 +585,8 @@ static ULONG WINAPI method_Release( ISWbemMethod *iface ) if (!refs) { TRACE( "destroying %p\n", method ); + ISWbemMethodSet_Release( &method->set->ISWbemMethodSet_iface ); + heap_free( method->name ); heap_free( method ); } return refs; @@ -671,9 +691,27 @@ static HRESULT WINAPI method_get_InParameters( ISWbemMethod *iface, ISWbemObject **params ) { - FIXME("\n"); + struct method *method = impl_from_ISWbemMethod( iface ); + IWbemClassObject *in_sign = NULL, *instance; + HRESULT hr; - return E_NOTIMPL; + TRACE("%p, %p\n", method, params); + + *params = NULL; + + if (SUCCEEDED(hr = IWbemClassObject_GetMethod( method->set->object->object, + method->name, 0, &in_sign, NULL )) && in_sign != NULL) + { + hr = IWbemClassObject_SpawnInstance( in_sign, 0, &instance ); + IWbemClassObject_Release( in_sign ); + if (SUCCEEDED(hr)) + { + hr = SWbemObject_create( instance, params ); + IWbemClassObject_Release( instance ); + } + } + + return hr; } static HRESULT WINAPI method_get_OutParameters( @@ -710,7 +748,7 @@ static const ISWbemMethodVtbl methodvtbl = method_get_Qualifiers_, }; -static HRESULT SWbemMethod_create( ISWbemMethod **obj ) +static HRESULT SWbemMethod_create( struct methodset *set, const WCHAR *name, ISWbemMethod **obj ) { struct method *method; @@ -719,19 +757,19 @@ static HRESULT SWbemMethod_create( ISWbemMethod **obj ) method->ISWbemMethod_iface.lpVtbl = &methodvtbl; method->refs = 1; + method->set = set; + ISWbemMethodSet_AddRef( &method->set->ISWbemMethodSet_iface ); + if (!(method->name = heap_strdupW( name ))) + { + ISWbemMethod_Release( &method->ISWbemMethod_iface ); + return E_OUTOFMEMORY; + } *obj = &method->ISWbemMethod_iface; return S_OK; } -struct methodset -{ - ISWbemMethodSet ISWbemMethodSet_iface; - LONG refs; - struct object *object; -}; - static struct methodset *impl_from_ISWbemMethodSet( ISWbemMethodSet *iface ) { return CONTAINING_RECORD( iface, struct methodset, ISWbemMethodSet_iface ); @@ -884,7 +922,7 @@ static HRESULT WINAPI methodset_Item( if (out_sign) IWbemClassObject_Release( out_sign ); - return SWbemMethod_create( method ); + return SWbemMethod_create( set, name, method ); } return hr;
1
0
0
0
Nikolay Sivov : wbemprox: Set iterator for spawned instances.
by Alexandre Julliard
26 Feb '21
26 Feb '21
Module: wine Branch: master Commit: 0e6c797999c2d354a1eb65e509d4ca79a6eb8015 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=0e6c797999c2d354a1eb65e5…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Fri Feb 26 10:22:14 2021 +0300 wbemprox: Set iterator for spawned instances. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wbemprox/class.c | 12 ++++++++++-- dlls/wbemprox/tests/query.c | 10 ++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/dlls/wbemprox/class.c b/dlls/wbemprox/class.c index d24d8cbb5ca..f48c815ef8d 100644 --- a/dlls/wbemprox/class.c +++ b/dlls/wbemprox/class.c @@ -674,13 +674,21 @@ static HRESULT WINAPI class_object_SpawnInstance( struct class_object *co = impl_from_IWbemClassObject( iface ); struct enum_class_object *ec = impl_from_IEnumWbemClassObject( co->iter ); struct table *table = get_view_table( ec->query->view, co->index ); + IEnumWbemClassObject *iter; struct record *record; + HRESULT hr; TRACE("%p, %08x, %p\n", iface, lFlags, ppNewInstance); if (!(record = create_record( table ))) return E_OUTOFMEMORY; - - return create_class_object( co->name, NULL, 0, record, ppNewInstance ); + if (FAILED(hr = IEnumWbemClassObject_Clone( co->iter, &iter ))) + { + destroy_record( record ); + return hr; + } + hr = create_class_object( co->name, iter, 0, record, ppNewInstance ); + IEnumWbemClassObject_Release( iter ); + return hr; } static HRESULT WINAPI class_object_CompareTo( diff --git a/dlls/wbemprox/tests/query.c b/dlls/wbemprox/tests/query.c index b5de00b5dec..f650418e51f 100644 --- a/dlls/wbemprox/tests/query.c +++ b/dlls/wbemprox/tests/query.c @@ -753,6 +753,16 @@ static void test_StdRegProv( IWbemServices *services ) hr = IWbemClassObject_SpawnInstance( sig_in, 0, &in ); ok( hr == S_OK, "failed to spawn instance %08x\n", hr ); + hr = IWbemClassObject_BeginEnumeration( in, 0 ); + ok( hr == S_OK, "failed to start enumeration %08x\n", hr ); + + hr = IWbemClassObject_Next( in, 0, &name, NULL, NULL, NULL ); + ok( hr == S_OK, "got %08x\n", hr ); + SysFreeString( name ); + + hr = IWbemClassObject_EndEnumeration( in ); + ok( hr == S_OK, "failed to end enumeration %08x\n", hr ); + V_VT( &defkey ) = VT_I4; V_I4( &defkey ) = 0x80000001; hr = IWbemClassObject_Put( in, L"hDefKey", 0, &defkey, 0 );
1
0
0
0
Nikolay Sivov : wbemdisp: Add a stub implementation of a method object.
by Alexandre Julliard
26 Feb '21
26 Feb '21
Module: wine Branch: master Commit: 01d2ca19972cf217f7ccee21d6bd0148678e83e5 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=01d2ca19972cf217f7ccee21…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Fri Feb 26 10:22:13 2021 +0300 wbemdisp: Add a stub implementation of a method object. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wbemdisp/locator.c | 270 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 248 insertions(+), 22 deletions(-) diff --git a/dlls/wbemdisp/locator.c b/dlls/wbemdisp/locator.c index 9cea78cdf71..a73bd6e55da 100644 --- a/dlls/wbemdisp/locator.c +++ b/dlls/wbemdisp/locator.c @@ -50,6 +50,7 @@ enum type_id ISWbemNamedValueSet_tid, ISWbemNamedValue_tid, ISWbemMethodSet_tid, + ISWbemMethod_tid, last_tid }; @@ -68,6 +69,7 @@ static REFIID wbemdisp_tid_id[] = &IID_ISWbemNamedValueSet, &IID_ISWbemNamedValue, &IID_ISWbemMethodSet, + &IID_ISWbemMethod, }; static HRESULT get_typeinfo( enum type_id tid, ITypeInfo **ret ) @@ -502,10 +504,232 @@ static HRESULT SWbemPropertySet_create( IWbemClassObject *wbem_object, ISWbemPro return S_OK; } +struct member +{ + BSTR name; + BOOL is_method; + DISPID dispid; +}; + +struct object +{ + ISWbemObject ISWbemObject_iface; + LONG refs; + IWbemClassObject *object; + struct member *members; + UINT nb_members; + DISPID last_dispid; + DISPID last_dispid_method; +}; + +struct method +{ + ISWbemMethod ISWbemMethod_iface; + LONG refs; +}; + +static struct method *impl_from_ISWbemMethod( ISWbemMethod *iface ) +{ + return CONTAINING_RECORD( iface, struct method, ISWbemMethod_iface ); +} + +static HRESULT WINAPI method_QueryInterface( ISWbemMethod *iface, REFIID riid, void **ppvObject ) +{ + struct method *method = impl_from_ISWbemMethod( iface ); + + TRACE( "%p %s %p\n", method, debugstr_guid(riid), ppvObject ); + + if (IsEqualGUID( riid, &IID_ISWbemMethod ) || + IsEqualGUID( riid, &IID_IDispatch ) || + IsEqualGUID( riid, &IID_IUnknown )) + { + *ppvObject = iface; + } + else + { + FIXME( "interface %s not implemented\n", debugstr_guid(riid) ); + return E_NOINTERFACE; + } + ISWbemMethod_AddRef( iface ); + return S_OK; +} + +static ULONG WINAPI method_AddRef( ISWbemMethod *iface ) +{ + struct method *method = impl_from_ISWbemMethod( iface ); + return InterlockedIncrement( &method->refs ); +} + +static ULONG WINAPI method_Release( ISWbemMethod *iface ) +{ + struct method *method = impl_from_ISWbemMethod( iface ); + LONG refs = InterlockedDecrement( &method->refs ); + if (!refs) + { + TRACE( "destroying %p\n", method ); + heap_free( method ); + } + return refs; +} + +static HRESULT WINAPI method_GetTypeInfoCount( + ISWbemMethod *iface, + UINT *count ) +{ + struct method *method = impl_from_ISWbemMethod( iface ); + + TRACE( "%p, %p\n", method, count ); + *count = 1; + return S_OK; +} + +static HRESULT WINAPI method_GetTypeInfo( + ISWbemMethod *iface, + UINT index, + LCID lcid, + ITypeInfo **info ) +{ + struct method *method = impl_from_ISWbemMethod( iface ); + + TRACE( "%p, %u, %u, %p\n", method, index, lcid, info ); + + return get_typeinfo( ISWbemMethod_tid, info ); +} + +static HRESULT WINAPI method_GetIDsOfNames( + ISWbemMethod *iface, + REFIID riid, + LPOLESTR *names, + UINT count, + LCID lcid, + DISPID *dispid ) +{ + struct method *method = impl_from_ISWbemMethod( iface ); + ITypeInfo *typeinfo; + HRESULT hr; + + TRACE( "%p, %s, %p, %u, %u, %p\n", method, debugstr_guid(riid), names, count, lcid, dispid ); + + if (!names || !count || !dispid) return E_INVALIDARG; + + hr = get_typeinfo( ISWbemMethod_tid, &typeinfo ); + if (SUCCEEDED(hr)) + { + hr = ITypeInfo_GetIDsOfNames( typeinfo, names, count, dispid ); + ITypeInfo_Release( typeinfo ); + } + return hr; +} + +static HRESULT WINAPI method_Invoke( + ISWbemMethod *iface, + DISPID member, + REFIID riid, + LCID lcid, + WORD flags, + DISPPARAMS *params, + VARIANT *result, + EXCEPINFO *excep_info, + UINT *arg_err ) +{ + struct method *method = impl_from_ISWbemMethod( iface ); + ITypeInfo *typeinfo; + HRESULT hr; + + TRACE( "%p, %d, %s, %d, %d, %p, %p, %p, %p\n", method, member, debugstr_guid(riid), + lcid, flags, params, result, excep_info, arg_err ); + + hr = get_typeinfo( ISWbemMethod_tid, &typeinfo ); + if (SUCCEEDED(hr)) + { + hr = ITypeInfo_Invoke( typeinfo, &method->ISWbemMethod_iface, member, flags, + params, result, excep_info, arg_err ); + ITypeInfo_Release( typeinfo ); + } + return hr; +} + +static HRESULT WINAPI method_get_Name( + ISWbemMethod *iface, + BSTR *name ) +{ + FIXME("\n"); + + return E_NOTIMPL; +} + +static HRESULT WINAPI method_get_Origin( + ISWbemMethod *iface, + BSTR *origin ) +{ + FIXME("\n"); + + return E_NOTIMPL; +} + +static HRESULT WINAPI method_get_InParameters( + ISWbemMethod *iface, + ISWbemObject **params ) +{ + FIXME("\n"); + + return E_NOTIMPL; +} + +static HRESULT WINAPI method_get_OutParameters( + ISWbemMethod *iface, + ISWbemObject **params ) +{ + FIXME("\n"); + + return E_NOTIMPL; +} + +static HRESULT WINAPI method_get_Qualifiers_( + ISWbemMethod *iface, + ISWbemQualifierSet **qualifiers ) +{ + FIXME("\n"); + + return E_NOTIMPL; +} + +static const ISWbemMethodVtbl methodvtbl = +{ + method_QueryInterface, + method_AddRef, + method_Release, + method_GetTypeInfoCount, + method_GetTypeInfo, + method_GetIDsOfNames, + method_Invoke, + method_get_Name, + method_get_Origin, + method_get_InParameters, + method_get_OutParameters, + method_get_Qualifiers_, +}; + +static HRESULT SWbemMethod_create( ISWbemMethod **obj ) +{ + struct method *method; + + if (!(method = heap_alloc(sizeof(*method)))) + return E_OUTOFMEMORY; + + method->ISWbemMethod_iface.lpVtbl = &methodvtbl; + method->refs = 1; + + *obj = &method->ISWbemMethod_iface; + + return S_OK; +} + struct methodset { ISWbemMethodSet ISWbemMethodSet_iface; LONG refs; + struct object *object; }; static struct methodset *impl_from_ISWbemMethodSet( ISWbemMethodSet *iface ) @@ -547,6 +771,7 @@ static ULONG WINAPI methodset_Release( ISWbemMethodSet *iface ) if (!refs) { TRACE( "destroying %p\n", set ); + ISWbemObject_Release( &set->object->ISWbemObject_iface ); heap_free( set ); } return refs; @@ -643,9 +868,26 @@ static HRESULT WINAPI methodset_Item( LONG flags, ISWbemMethod **method ) { - FIXME("\n"); + struct methodset *set = impl_from_ISWbemMethodSet( iface ); + IWbemClassObject *in_sign, *out_sign; + HRESULT hr; - return E_NOTIMPL; + TRACE("%p, %s, %#x, %p\n", set, debugstr_w(name), flags, method); + + *method = NULL; + + if (SUCCEEDED(hr = IWbemClassObject_GetMethod( set->object->object, + name, flags, &in_sign, &out_sign ))) + { + if (in_sign) + IWbemClassObject_Release( in_sign ); + if (out_sign) + IWbemClassObject_Release( out_sign ); + + return SWbemMethod_create( method ); + } + + return hr; } static HRESULT WINAPI methodset_get_Count( @@ -671,7 +913,7 @@ static const ISWbemMethodSetVtbl methodsetvtbl = methodset_get_Count, }; -static HRESULT SWbemMethodSet_create( ISWbemMethodSet **obj ) +static HRESULT SWbemMethodSet_create( struct object *object, ISWbemMethodSet **obj ) { struct methodset *set; @@ -680,6 +922,8 @@ static HRESULT SWbemMethodSet_create( ISWbemMethodSet **obj ) set->ISWbemMethodSet_iface.lpVtbl = &methodsetvtbl; set->refs = 1; + set->object = object; + ISWbemObject_AddRef( &object->ISWbemObject_iface ); *obj = &set->ISWbemMethodSet_iface; @@ -689,24 +933,6 @@ static HRESULT SWbemMethodSet_create( ISWbemMethodSet **obj ) #define DISPID_BASE 0x1800000 #define DISPID_BASE_METHOD 0x1000000 -struct member -{ - BSTR name; - BOOL is_method; - DISPID dispid; -}; - -struct object -{ - ISWbemObject ISWbemObject_iface; - LONG refs; - IWbemClassObject *object; - struct member *members; - UINT nb_members; - DISPID last_dispid; - DISPID last_dispid_method; -}; - static inline struct object *impl_from_ISWbemObject( ISWbemObject *iface ) { @@ -1218,7 +1444,7 @@ static HRESULT WINAPI object_get_Methods_( struct object *object = impl_from_ISWbemObject( iface ); TRACE( "%p, %p\n", object, set ); - return SWbemMethodSet_create( set ); + return SWbemMethodSet_create( object, set ); } static HRESULT WINAPI object_get_Derivation_(
1
0
0
0
Nikolay Sivov : wbemdisp: Add Methods() collection stub.
by Alexandre Julliard
26 Feb '21
26 Feb '21
Module: wine Branch: master Commit: 0946bf18f4d02efc3754a57ca6d8ff9af4d57a8e URL:
https://source.winehq.org/git/wine.git/?a=commit;h=0946bf18f4d02efc3754a57c…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Fri Feb 26 10:22:12 2021 +0300 wbemdisp: Add Methods() collection stub. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wbemdisp/locator.c | 194 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 191 insertions(+), 3 deletions(-) diff --git a/dlls/wbemdisp/locator.c b/dlls/wbemdisp/locator.c index 1d61c423a91..9cea78cdf71 100644 --- a/dlls/wbemdisp/locator.c +++ b/dlls/wbemdisp/locator.c @@ -49,6 +49,7 @@ enum type_id ISWbemSecurity_tid, ISWbemNamedValueSet_tid, ISWbemNamedValue_tid, + ISWbemMethodSet_tid, last_tid }; @@ -66,6 +67,7 @@ static REFIID wbemdisp_tid_id[] = &IID_ISWbemSecurity, &IID_ISWbemNamedValueSet, &IID_ISWbemNamedValue, + &IID_ISWbemMethodSet, }; static HRESULT get_typeinfo( enum type_id tid, ITypeInfo **ret ) @@ -500,6 +502,190 @@ static HRESULT SWbemPropertySet_create( IWbemClassObject *wbem_object, ISWbemPro return S_OK; } +struct methodset +{ + ISWbemMethodSet ISWbemMethodSet_iface; + LONG refs; +}; + +static struct methodset *impl_from_ISWbemMethodSet( ISWbemMethodSet *iface ) +{ + return CONTAINING_RECORD( iface, struct methodset, ISWbemMethodSet_iface ); +} + +static HRESULT WINAPI methodset_QueryInterface( ISWbemMethodSet *iface, REFIID riid, void **ppvObject ) +{ + struct methodset *set = impl_from_ISWbemMethodSet( iface ); + + TRACE( "%p %s %p\n", set, debugstr_guid(riid), ppvObject ); + + if (IsEqualGUID( riid, &IID_ISWbemMethodSet ) || + IsEqualGUID( riid, &IID_IDispatch ) || + IsEqualGUID( riid, &IID_IUnknown )) + { + *ppvObject = iface; + } + else + { + FIXME( "interface %s not implemented\n", debugstr_guid(riid) ); + return E_NOINTERFACE; + } + ISWbemMethodSet_AddRef( iface ); + return S_OK; +} + +static ULONG WINAPI methodset_AddRef( ISWbemMethodSet *iface ) +{ + struct methodset *set = impl_from_ISWbemMethodSet( iface ); + return InterlockedIncrement( &set->refs ); +} + +static ULONG WINAPI methodset_Release( ISWbemMethodSet *iface ) +{ + struct methodset *set = impl_from_ISWbemMethodSet( iface ); + LONG refs = InterlockedDecrement( &set->refs ); + if (!refs) + { + TRACE( "destroying %p\n", set ); + heap_free( set ); + } + return refs; +} + +static HRESULT WINAPI methodset_GetTypeInfoCount( + ISWbemMethodSet *iface, + UINT *count ) +{ + struct methodset *set = impl_from_ISWbemMethodSet( iface ); + + TRACE( "%p, %p\n", set, count ); + *count = 1; + return S_OK; +} + +static HRESULT WINAPI methodset_GetTypeInfo( ISWbemMethodSet *iface, + UINT index, + LCID lcid, + ITypeInfo **info ) +{ + struct methodset *set = impl_from_ISWbemMethodSet( iface ); + + TRACE( "%p, %u, %u, %p\n", set, index, lcid, info ); + + return get_typeinfo( ISWbemMethodSet_tid, info ); +} + +static HRESULT WINAPI methodset_GetIDsOfNames( + ISWbemMethodSet *iface, + REFIID riid, + LPOLESTR *names, + UINT count, + LCID lcid, + DISPID *dispid ) +{ + struct methodset *set = impl_from_ISWbemMethodSet( iface ); + ITypeInfo *typeinfo; + HRESULT hr; + + TRACE( "%p, %s, %p, %u, %u, %p\n", set, debugstr_guid(riid), names, count, lcid, dispid ); + + if (!names || !count || !dispid) return E_INVALIDARG; + + hr = get_typeinfo( ISWbemMethodSet_tid, &typeinfo ); + if (SUCCEEDED(hr)) + { + hr = ITypeInfo_GetIDsOfNames( typeinfo, names, count, dispid ); + ITypeInfo_Release( typeinfo ); + } + return hr; +} + +static HRESULT WINAPI methodset_Invoke( + ISWbemMethodSet *iface, + DISPID member, + REFIID riid, + LCID lcid, + WORD flags, + DISPPARAMS *params, + VARIANT *result, + EXCEPINFO *excep_info, + UINT *arg_err ) +{ + struct methodset *set = impl_from_ISWbemMethodSet( iface ); + ITypeInfo *typeinfo; + HRESULT hr; + + TRACE( "%p, %d, %s, %d, %d, %p, %p, %p, %p\n", set, member, debugstr_guid(riid), + lcid, flags, params, result, excep_info, arg_err ); + + hr = get_typeinfo( ISWbemMethodSet_tid, &typeinfo ); + if (SUCCEEDED(hr)) + { + hr = ITypeInfo_Invoke( typeinfo, &set->ISWbemMethodSet_iface, member, flags, + params, result, excep_info, arg_err ); + ITypeInfo_Release( typeinfo ); + } + return hr; +} + +static HRESULT WINAPI methodset_get__NewEnum( + ISWbemMethodSet *iface, + IUnknown **unk ) +{ + FIXME("\n"); + + return E_NOTIMPL; +} + +static HRESULT WINAPI methodset_Item( + ISWbemMethodSet *iface, + BSTR name, + LONG flags, + ISWbemMethod **method ) +{ + FIXME("\n"); + + return E_NOTIMPL; +} + +static HRESULT WINAPI methodset_get_Count( + ISWbemMethodSet *iface, + LONG *count ) +{ + FIXME("\n"); + + return E_NOTIMPL; +} + +static const ISWbemMethodSetVtbl methodsetvtbl = +{ + methodset_QueryInterface, + methodset_AddRef, + methodset_Release, + methodset_GetTypeInfoCount, + methodset_GetTypeInfo, + methodset_GetIDsOfNames, + methodset_Invoke, + methodset_get__NewEnum, + methodset_Item, + methodset_get_Count, +}; + +static HRESULT SWbemMethodSet_create( ISWbemMethodSet **obj ) +{ + struct methodset *set; + + if (!(set = heap_alloc(sizeof(*set)))) + return E_OUTOFMEMORY; + + set->ISWbemMethodSet_iface.lpVtbl = &methodsetvtbl; + set->refs = 1; + + *obj = &set->ISWbemMethodSet_iface; + + return S_OK; +} + #define DISPID_BASE 0x1800000 #define DISPID_BASE_METHOD 0x1000000 @@ -1027,10 +1213,12 @@ static HRESULT WINAPI object_get_Properties_( ISWbemObject *iface, ISWbemPropert static HRESULT WINAPI object_get_Methods_( ISWbemObject *iface, - ISWbemMethodSet **objWbemMethodSet ) + ISWbemMethodSet **set ) { - FIXME( "\n" ); - return E_NOTIMPL; + struct object *object = impl_from_ISWbemObject( iface ); + + TRACE( "%p, %p\n", object, set ); + return SWbemMethodSet_create( set ); } static HRESULT WINAPI object_get_Derivation_(
1
0
0
0
Alexandre Julliard : ntdll: Get rid of attach_implicitly_loaded_dlls().
by Alexandre Julliard
26 Feb '21
26 Feb '21
Module: wine Branch: master Commit: a46515d44984a3fd571041f5d631333b30e5af83 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=a46515d44984a3fd571041f5…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri Feb 26 13:13:48 2021 +0100 ntdll: Get rid of attach_implicitly_loaded_dlls(). This should no longer happen. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/loader.c | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c index 8dbbb14f05d..644eee1e9d7 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -1438,35 +1438,6 @@ static NTSTATUS process_attach( WINE_MODREF *wm, LPVOID lpReserved ) } -/********************************************************************** - * attach_implicitly_loaded_dlls - * - * Attach to the (builtin) dlls that have been implicitly loaded because - * of a dependency at the Unix level, but not imported at the Win32 level. - */ -static void attach_implicitly_loaded_dlls( LPVOID reserved ) -{ - for (;;) - { - PLIST_ENTRY mark, entry; - - mark = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList; - for (entry = mark->Flink; entry != mark; entry = entry->Flink) - { - LDR_DATA_TABLE_ENTRY *mod = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks); - - if (!(mod->Flags & LDR_IMAGE_IS_DLL)) continue; - if (mod->Flags & (LDR_LOAD_IN_PROGRESS | LDR_PROCESS_ATTACHED)) continue; - TRACE( "found implicitly loaded %s, attaching to it\n", - debugstr_w(mod->BaseDllName.Buffer)); - process_attach( CONTAINING_RECORD(mod, WINE_MODREF, ldr), reserved ); - break; /* restart the search from the start */ - } - if (entry == mark) break; /* nothing found */ - } -} - - /************************************************************************* * process_detach * @@ -3536,7 +3507,6 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR NtTerminateProcess( GetCurrentProcess(), status ); } } - attach_implicitly_loaded_dlls( context ); unix_funcs->virtual_release_address_space(); if (wm->ldr.TlsIndex != -1) call_tls_callbacks( wm->ldr.DllBase, DLL_PROCESS_ATTACH ); if (wm->ldr.Flags & LDR_WINE_INTERNAL) unix_funcs->init_builtin_dll( wm->ldr.DllBase );
1
0
0
0
Alexandre Julliard : ntdll: Don't set runtime info at all if it's empty.
by Alexandre Julliard
26 Feb '21
26 Feb '21
Module: wine Branch: master Commit: 9e01af751ef397b93693ea6a694896a0d13477b3 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=9e01af751ef397b93693ea6a…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri Feb 26 13:34:19 2021 +0100 ntdll: Don't set runtime info at all if it's empty. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/unix/env.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/dlls/ntdll/unix/env.c b/dlls/ntdll/unix/env.c index c6037afafbc..f5979a980ea 100644 --- a/dlls/ntdll/unix/env.c +++ b/dlls/ntdll/unix/env.c @@ -1622,12 +1622,15 @@ void init_startup_info(void) copy_unicode_string( &src, &dst, ¶ms->WindowTitle, info->title_len ); copy_unicode_string( &src, &dst, ¶ms->Desktop, info->desktop_len ); copy_unicode_string( &src, &dst, ¶ms->ShellInfo, info->shellinfo_len ); - /* runtime info isn't a real string */ - params->RuntimeInfo.MaximumLength = params->RuntimeInfo.Length = info->runtime_len; - params->RuntimeInfo.Buffer = dst; - memcpy( dst, src, info->runtime_len ); - src += (info->runtime_len + 1) / sizeof(WCHAR); - dst += (info->runtime_len + 1) / sizeof(WCHAR); + if (info->runtime_len) + { + /* runtime info isn't a real string */ + params->RuntimeInfo.MaximumLength = params->RuntimeInfo.Length = info->runtime_len; + params->RuntimeInfo.Buffer = dst; + memcpy( dst, src, info->runtime_len ); + src += (info->runtime_len + 1) / sizeof(WCHAR); + dst += (info->runtime_len + 1) / sizeof(WCHAR); + } assert( (char *)src == (char *)info + info_size ); params->Environment = dst;
1
0
0
0
Alexandre Julliard : wshom.ocx: Use --prefer-native instead of DLL_WINE_PREATTACH.
by Alexandre Julliard
26 Feb '21
26 Feb '21
Module: wine Branch: master Commit: b8f6852bc5246e156f54e8a698372e73a1770071 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=b8f6852bc5246e156f54e8a6…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri Feb 26 10:24:31 2021 +0100 wshom.ocx: Use --prefer-native instead of DLL_WINE_PREATTACH. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wshom.ocx/Makefile.in | 2 +- dlls/wshom.ocx/wshom_main.c | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/dlls/wshom.ocx/Makefile.in b/dlls/wshom.ocx/Makefile.in index 6cbec442032..fc967aa3c4c 100644 --- a/dlls/wshom.ocx/Makefile.in +++ b/dlls/wshom.ocx/Makefile.in @@ -1,7 +1,7 @@ MODULE = wshom.ocx IMPORTS = uuid oleaut32 ole32 shell32 user32 advapi32 -EXTRADLLFLAGS = -mno-cygwin +EXTRADLLFLAGS = -mno-cygwin -Wb,--prefer-native C_SRCS = \ shell.c \ diff --git a/dlls/wshom.ocx/wshom_main.c b/dlls/wshom.ocx/wshom_main.c index a44b44ce8f4..2a7e909bcce 100644 --- a/dlls/wshom.ocx/wshom_main.c +++ b/dlls/wshom.ocx/wshom_main.c @@ -222,8 +222,6 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv) switch(fdwReason) { - case DLL_WINE_PREATTACH: - return FALSE; /* prefer native version */ case DLL_PROCESS_ATTACH: wshom_instance = hInstDLL; DisableThreadLibraryCalls(wshom_instance);
1
0
0
0
Alexandre Julliard : wmphoto: Use --prefer-native instead of DLL_WINE_PREATTACH.
by Alexandre Julliard
26 Feb '21
26 Feb '21
Module: wine Branch: master Commit: 02755e0a5337d06c75b90b63c4eb5c8408c46b9d URL:
https://source.winehq.org/git/wine.git/?a=commit;h=02755e0a5337d06c75b90b63…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri Feb 26 10:24:26 2021 +0100 wmphoto: Use --prefer-native instead of DLL_WINE_PREATTACH. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wmphoto/Makefile.in | 2 +- dlls/wmphoto/main.c | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/dlls/wmphoto/Makefile.in b/dlls/wmphoto/Makefile.in index 8a626e61f18..d9bfe9542f3 100644 --- a/dlls/wmphoto/Makefile.in +++ b/dlls/wmphoto/Makefile.in @@ -2,7 +2,7 @@ MODULE = wmphoto.dll IMPORTS = windowscodecs uuid ole32 oleaut32 propsys rpcrt4 shlwapi PARENTSRC = ../windowscodecs -EXTRADLLFLAGS = -mno-cygwin +EXTRADLLFLAGS = -mno-cygwin -Wb,--prefer-native EXTRAINCL = $(JXRLIB_CFLAGS) C_SRCS = \ diff --git a/dlls/wmphoto/main.c b/dlls/wmphoto/main.c index 7659dcb2ca8..5c92965b575 100644 --- a/dlls/wmphoto/main.c +++ b/dlls/wmphoto/main.c @@ -135,8 +135,6 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) windowscodecs_module = instance; DisableThreadLibraryCalls(instance); break; - case DLL_WINE_PREATTACH: - return FALSE; /* prefer native version */ } return TRUE;
1
0
0
0
← Newer
1
2
3
4
5
6
...
92
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Results per page:
10
25
50
100
200