diff --git a/patches/oleaut32_typelib_dispatch/0001-msado15-ADOConnectionConstruction15-WrapDSOandSessio.patch b/patches/oleaut32_typelib_dispatch/0001-msado15-ADOConnectionConstruction15-WrapDSOandSessio.patch new file mode 100644 index 00000000..f7426aad --- /dev/null +++ b/patches/oleaut32_typelib_dispatch/0001-msado15-ADOConnectionConstruction15-WrapDSOandSessio.patch @@ -0,0 +1,42 @@ +From b85edfd29c3ae8a67ddf079554cbf3ca11775a21 Mon Sep 17 00:00:00 2001 +From: Alistair Leslie-Hughes +Date: Mon, 14 Jul 2025 10:15:14 +1000 +Subject: [PATCH] msado15: ADOConnectionConstruction15::WrapDSOandSession semi + stub + +--- + dlls/msado15/connection.c | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +diff --git a/dlls/msado15/connection.c b/dlls/msado15/connection.c +index 568eb8b12c9..ded4a401b27 100644 +--- a/dlls/msado15/connection.c ++++ b/dlls/msado15/connection.c +@@ -954,7 +954,23 @@ static HRESULT WINAPI adoconstruct_WrapDSOandSession(ADOConnectionConstruction15 + { + struct connection *connection = impl_from_ADOConnectionConstruction15( iface ); + FIXME("%p, %p, %p\n", connection, dso, session); +- return E_NOTIMPL; ++ ++ if (connection->session) ++ IUnknown_Release( connection->session ); ++ connection->session = session; ++ if (connection->session) ++ IUnknown_AddRef(connection->session); ++ ++ if (connection->dso) ++ IDBInitialize_Release( connection->dso ); ++ connection->dso = NULL; ++ if (dso) ++ IUnknown_QueryInterface( dso, &IID_IDBInitialize, (void**)&connection->dso ); ++ ++ if (dso && session) ++ connection->state = adStateOpen; ++ ++ return S_OK; + } + + struct ADOConnectionConstruction15Vtbl ado_construct_vtbl = +-- +2.47.2 + diff --git a/patches/oleaut32_typelib_dispatch/0002-oleaut32-Treat-Interfaces-with-TYPEFLAG_FDISPATCHABL.patch b/patches/oleaut32_typelib_dispatch/0002-oleaut32-Treat-Interfaces-with-TYPEFLAG_FDISPATCHABL.patch new file mode 100644 index 00000000..5db586c4 --- /dev/null +++ b/patches/oleaut32_typelib_dispatch/0002-oleaut32-Treat-Interfaces-with-TYPEFLAG_FDISPATCHABL.patch @@ -0,0 +1,27 @@ +From 95c5e58d9f78cefe837f4ce1c9d56fa0e70e3ed6 Mon Sep 17 00:00:00 2001 +From: Alistair Leslie-Hughes +Date: Tue, 22 Jul 2025 12:06:15 +1000 +Subject: [PATCH] oleaut32: Treat Interfaces with TYPEFLAG_FDISPATCHABLE flags + as an IDispatch. + +--- + dlls/oleaut32/typelib.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c +index 856e07c2811..cc0dc4f3c18 100644 +--- a/dlls/oleaut32/typelib.c ++++ b/dlls/oleaut32/typelib.c +@@ -7917,7 +7917,8 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeInfo( + pTypeInfoImpl->ref = 0; + list_init(&pTypeInfoImpl->custdata_list); + +- if (This->typeattr.typekind == TKIND_INTERFACE) ++ if (This->typeattr.typekind == TKIND_INTERFACE && ++ This->typeattr.wTypeFlags & TYPEFLAG_FDISPATCHABLE) + pTypeInfoImpl->typeattr.typekind = TKIND_DISPATCH; + else + pTypeInfoImpl->typeattr.typekind = TKIND_INTERFACE; +-- +2.47.2 + diff --git a/patches/oleaut32_typelib_dispatch/definition b/patches/oleaut32_typelib_dispatch/definition new file mode 100644 index 00000000..f527c79e --- /dev/null +++ b/patches/oleaut32_typelib_dispatch/definition @@ -0,0 +1,2 @@ +Fixes: [31675] oleaut32: Use correct flags to detect IDispatch interfaces. +Fixes: msado15: Implement ADOConnectionConstruction15::WrapDSOandSession.