Added oleaut32_typelib_dispatch patchset

This commit is contained in:
Alistair Leslie-Hughes
2025-08-16 13:27:01 +10:00
parent a877872a9a
commit f09ef9a3ca
3 changed files with 71 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
From b85edfd29c3ae8a67ddf079554cbf3ca11775a21 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
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

View File

@@ -0,0 +1,27 @@
From 95c5e58d9f78cefe837f4ce1c9d56fa0e70e3ed6 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
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

View File

@@ -0,0 +1,2 @@
Fixes: [31675] oleaut32: Use correct flags to detect IDispatch interfaces.
Fixes: msado15: Implement ADOConnectionConstruction15::WrapDSOandSession.