Nikolay Sivov : oledb32: Added GetDataSource() for DataLinks object.

Alexandre Julliard julliard at winehq.org
Thu Feb 2 15:49:26 CST 2017


Module: wine
Branch: master
Commit: 83d33b6f94b67f311b1f4fb34c49ba5ece16210e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=83d33b6f94b67f311b1f4fb34c49ba5ece16210e

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Thu Feb  2 02:03:19 2017 +0300

oledb32: Added GetDataSource() for DataLinks object.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/oledb32/datainit.c      | 15 +++++++++++----
 dlls/oledb32/dslocator.c     |  5 +++--
 dlls/oledb32/oledb_private.h |  3 +++
 3 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/dlls/oledb32/datainit.c b/dlls/oledb32/datainit.c
index 8d6b8ef..7401c88 100644
--- a/dlls/oledb32/datainit.c
+++ b/dlls/oledb32/datainit.c
@@ -587,12 +587,10 @@ static WCHAR *strstriW(const WCHAR *str, const WCHAR *sub)
     return r;
 }
 
-static HRESULT WINAPI datainit_GetDataSource(IDataInitialize *iface, IUnknown *outer, DWORD clsctx,
-                                LPWSTR initstring, REFIID riid, IUnknown **datasource)
+HRESULT get_data_source(IUnknown *outer, DWORD clsctx, LPWSTR initstring, REFIID riid, IUnknown **datasource)
 {
     static const WCHAR providerW[] = {'P','r','o','v','i','d','e','r','=',0};
     static const WCHAR msdasqlW[] = {'M','S','D','A','S','Q','L',0};
-    datainit *This = impl_from_IDataInitialize(iface);
     BOOL datasource_created = FALSE;
     IDBProperties *dbprops;
     DBPROPSET *propset;
@@ -600,7 +598,6 @@ static HRESULT WINAPI datainit_GetDataSource(IDataInitialize *iface, IUnknown *o
     CLSID provclsid;
     HRESULT hr;
 
-    TRACE("(%p)->(%p 0x%x %s %s %p)\n", This, outer, clsctx, debugstr_w(initstring), debugstr_guid(riid), datasource);
 
     /* first get provider name */
     provclsid = IID_NULL;
@@ -727,6 +724,16 @@ static HRESULT WINAPI datainit_GetDataSource(IDataInitialize *iface, IUnknown *o
     return hr;
 }
 
+static HRESULT WINAPI datainit_GetDataSource(IDataInitialize *iface, IUnknown *outer, DWORD clsctx,
+                                LPWSTR initstring, REFIID riid, IUnknown **datasource)
+{
+    datainit *This = impl_from_IDataInitialize(iface);
+
+    TRACE("(%p)->(%p 0x%x %s %s %p)\n", This, outer, clsctx, debugstr_w(initstring), debugstr_guid(riid), datasource);
+
+    return get_data_source(outer, clsctx, initstring, riid, datasource);
+}
+
 /* returns character length of string representation */
 static int get_propvalue_length(DBPROP *prop)
 {
diff --git a/dlls/oledb32/dslocator.c b/dlls/oledb32/dslocator.c
index 0d1a4a3..11ed3e9 100644
--- a/dlls/oledb32/dslocator.c
+++ b/dlls/oledb32/dslocator.c
@@ -221,9 +221,10 @@ static ULONG WINAPI datainitialize_Release(IDataInitialize *iface)
 static HRESULT WINAPI datainitialize_GetDataSource(IDataInitialize *iface,
     IUnknown *outer, DWORD context, LPWSTR initstring, REFIID riid, IUnknown **datasource)
 {
-    FIXME("(%p)->(%p %#x %s %s %p): stub\n", iface, outer, context, debugstr_w(initstring), debugstr_guid(riid),
+    TRACE("(%p)->(%p %#x %s %s %p)\n", iface, outer, context, debugstr_w(initstring), debugstr_guid(riid),
         datasource);
-    return E_NOTIMPL;
+
+    return get_data_source(outer, context, initstring, riid, datasource);
 }
 
 static HRESULT WINAPI datainitialize_GetInitializationString(IDataInitialize *iface, IUnknown *datasource,
diff --git a/dlls/oledb32/oledb_private.h b/dlls/oledb32/oledb_private.h
index 8b1a40f..0b71a81 100644
--- a/dlls/oledb32/oledb_private.h
+++ b/dlls/oledb32/oledb_private.h
@@ -23,6 +23,9 @@ HRESULT create_error_info(IUnknown *outer, void **obj) DECLSPEC_HIDDEN;
 HRESULT create_oledb_rowpos(IUnknown *outer, void **obj) DECLSPEC_HIDDEN;
 HRESULT create_dslocator(IUnknown *outer, void **obj) DECLSPEC_HIDDEN;
 
+HRESULT get_data_source(IUnknown *outer, DWORD clsctx, LPWSTR initstring, REFIID riid,
+    IUnknown **datasource) DECLSPEC_HIDDEN;
+
 static inline void *heap_alloc(size_t len)
 {
     return HeapAlloc(GetProcessHeap(), 0, len);




More information about the wine-cvs mailing list