Module: wine Branch: master Commit: 6ed601ccba9ef40aeee50e48fb4dfb8142459442 URL: https://source.winehq.org/git/wine.git/?a=commit;h=6ed601ccba9ef40aeee50e48f...
Author: Alistair Leslie-Hughes leslie_alistair@hotmail.com Date: Fri Feb 26 19:02:27 2021 +1100
msado15: Implement Dispatch functions in ADORecordsetConstruction.
Signed-off-by: Alistair Leslie-Hughes leslie_alistair@hotmail.com Signed-off-by: Hans Leidekker hans@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/msado15/main.c | 1 + dlls/msado15/msado15_private.h | 1 + dlls/msado15/recordset.c | 35 +++++++++++++++++++++++++++++------ 3 files changed, 31 insertions(+), 6 deletions(-)
diff --git a/dlls/msado15/main.c b/dlls/msado15/main.c index 3bfb6a1fe66..3479ceb5b02 100644 --- a/dlls/msado15/main.c +++ b/dlls/msado15/main.c @@ -179,6 +179,7 @@ static ITypeLib *typelib; static ITypeInfo *typeinfos[LAST_tid];
static REFIID tid_ids[] = { + &IID_ADORecordsetConstruction, &IID__Command, &IID__Connection, &IID_Field, diff --git a/dlls/msado15/msado15_private.h b/dlls/msado15/msado15_private.h index d1e177e1a3c..55afac3f389 100644 --- a/dlls/msado15/msado15_private.h +++ b/dlls/msado15/msado15_private.h @@ -43,6 +43,7 @@ static inline WCHAR *strdupW( const WCHAR *src ) }
typedef enum tid_t { + ADORecordsetConstruction_tid, Command_tid, Connection_tid, Field_tid, diff --git a/dlls/msado15/recordset.c b/dlls/msado15/recordset.c index a4fe5b53736..0b91358f83d 100644 --- a/dlls/msado15/recordset.c +++ b/dlls/msado15/recordset.c @@ -1768,16 +1768,27 @@ static HRESULT WINAPI rsconstruction_GetTypeInfo(ADORecordsetConstruction *iface LCID lcid, ITypeInfo **ppTInfo) { struct recordset *recordset = impl_from_ADORecordsetConstruction( iface ); - FIXME( "%p %u %u %p\n", recordset, iTInfo, lcid, ppTInfo ); - return E_NOTIMPL; + TRACE( "%p %u %u %p\n", recordset, iTInfo, lcid, ppTInfo ); + return get_typeinfo(ADORecordsetConstruction_tid, ppTInfo); }
static HRESULT WINAPI rsconstruction_GetIDsOfNames(ADORecordsetConstruction *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) { struct recordset *recordset = impl_from_ADORecordsetConstruction( iface ); - FIXME( "%p %s %p %u %u %p\n", recordset, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId ); - return E_NOTIMPL; + HRESULT hr; + ITypeInfo *typeinfo; + + TRACE( "%p %s %p %u %u %p\n", recordset, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId ); + + hr = get_typeinfo(ADORecordsetConstruction_tid, &typeinfo); + if(SUCCEEDED(hr)) + { + hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId); + ITypeInfo_Release(typeinfo); + } + + return hr; }
static HRESULT WINAPI rsconstruction_Invoke(ADORecordsetConstruction *iface, DISPID dispIdMember, @@ -1785,9 +1796,21 @@ static HRESULT WINAPI rsconstruction_Invoke(ADORecordsetConstruction *iface, DIS EXCEPINFO *pExcepInfo, UINT *puArgErr) { struct recordset *recordset = impl_from_ADORecordsetConstruction( iface ); - FIXME( "%p %d %s %d %d %p %p %p %p\n", recordset, dispIdMember, debugstr_guid(riid), + HRESULT hr; + ITypeInfo *typeinfo; + + TRACE( "%p %d %s %d %d %p %p %p %p\n", recordset, dispIdMember, debugstr_guid(riid), lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr ); - return E_NOTIMPL; + + hr = get_typeinfo(ADORecordsetConstruction_tid, &typeinfo); + if(SUCCEEDED(hr)) + { + hr = ITypeInfo_Invoke(typeinfo, &recordset->ADORecordsetConstruction_iface, dispIdMember, wFlags, + pDispParams, pVarResult, pExcepInfo, puArgErr); + ITypeInfo_Release(typeinfo); + } + + return hr; }
static HRESULT WINAPI rsconstruction_get_Rowset(ADORecordsetConstruction *iface, IUnknown **row_set)