[2/2] oledb32: Support more default properties

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Tue Jun 4 05:20:44 CDT 2013


Hi,


Changelog:
     oledb32: Support more default properties


Best Regards
  Alistair Leslie-Hughes
-------------- next part --------------
>From 3bc8b1b62ae781915f21e7eba7d049a36d56fdad Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Mon, 3 Jun 2013 16:26:32 +1000
Subject: [PATCH] Support more default properties
To: wine-patches <wine-patches at winehq.org>

---
 dlls/oledb32/datainit.c        | 30 +++++++++++++++++++++++++++---
 dlls/oledb32/tests/Makefile.in |  2 +-
 dlls/oledb32/tests/database.c  | 37 +++++++++++++++++++++++++++++++++++++
 3 files changed, 65 insertions(+), 4 deletions(-)

diff --git a/dlls/oledb32/datainit.c b/dlls/oledb32/datainit.c
index 62e2e50..b6ba0e1 100644
--- a/dlls/oledb32/datainit.c
+++ b/dlls/oledb32/datainit.c
@@ -296,12 +296,36 @@ struct dbproperty {
     VARTYPE type;
 };
 
+static const WCHAR conn_timeout[] = {'C','o','n','n','e','c','t',' ','T','i','m','e','o','u','t',0};
 static const WCHAR datasourceW[] = {'D','a','t','a',' ','S','o','u','r','c','e',0};
-static const WCHAR persistsiW[] = {'P','e','r','s','i','s','t',' ','S','e','c','u','r','i','t','y',' ','I','n','f','o',0};
+static const WCHAR extemdedW[] = {'E','x','t','e','n','d','e','d',' ','P','r','o','p','e','r','t','i','e','s',0};
+static const WCHAR gen_timeout[] = {'G','e','n','e','r','a','l',' ','T','i','m','e','o','u','t',0};
+static const WCHAR initcatW[] = {'I','n','i','t','i','a','l',' ','C','a','t','a','l','o','g',0};
+static const WCHAR localeIDW[] = {'L','o','c','a','l','e',' ','I','d','e','n','t','i','f','i','e','r',0};
+static const WCHAR locationW[] = {'L','o','c','a','t','i','o','n',0};
+static const WCHAR modeW[] = {'M','o','d','e',0};
+static const WCHAR oledbservW[] = {'O','L','E',' ','D','B',' ','S','e','r','v','i','c','i','e','s',0};
+static const WCHAR passwordW[] = {'P','a','s','s','w','o','r','d',0};
+static const WCHAR persiststW[] = {'P','e','r','s','i','s','t',' ','S','e','c','u','r','i','t','y',' ','I','n','f','o',0};
+static const WCHAR promptW[] = {'P','r','o','m','p','t',0};
+static const WCHAR useridW[] = {'U','s','e','r',' ','I','D',0};
+static const WCHAR winhandleW[] = {'W','i','n','d','o','w',' ','H','a','n','d','l','e',0};
 
 static const struct dbproperty dbproperties[] = {
-    { datasourceW, DBPROP_INIT_DATASOURCE, DBPROPOPTIONS_REQUIRED, VT_BSTR },
-    { persistsiW, DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, DBPROPOPTIONS_OPTIONAL, VT_BOOL }
+    { conn_timeout,DBPROP_INIT_TIMEOUT,                    DBPROPOPTIONS_OPTIONAL, VT_I4 },
+    { datasourceW, DBPROP_INIT_DATASOURCE,                 DBPROPOPTIONS_REQUIRED, VT_BSTR },
+    { extemdedW,   DBPROP_INIT_PROVIDERSTRING,             DBPROPOPTIONS_REQUIRED, VT_BSTR },
+    { gen_timeout, DBPROP_INIT_GENERALTIMEOUT,             DBPROPOPTIONS_OPTIONAL, VT_I4 },
+    { initcatW,    DBPROP_CATALOGLOCATION,                 DBPROPOPTIONS_OPTIONAL, VT_BSTR },
+    { localeIDW,   DBPROP_INIT_LCID,                       DBPROPOPTIONS_OPTIONAL, VT_I4 },
+    { locationW,   DBPROP_INIT_LOCATION,                   DBPROPOPTIONS_OPTIONAL, VT_BSTR },
+    { modeW,       DBPROP_INIT_MODE,                       DBPROPOPTIONS_OPTIONAL, VT_I4 },
+    { oledbservW,  DBPROP_INIT_OLEDBSERVICES,              DBPROPOPTIONS_OPTIONAL, VT_I4 },
+    { passwordW,   DBPROP_AUTH_PASSWORD,                   DBPROPOPTIONS_OPTIONAL, VT_BSTR },
+    { persiststW,  DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, DBPROPOPTIONS_OPTIONAL, VT_BOOL },
+    { promptW,     DBPROP_INIT_PROMPT,                     DBPROPOPTIONS_OPTIONAL, VT_I2 },
+    { useridW,     DBPROP_AUTH_USERID,                     DBPROPOPTIONS_OPTIONAL, VT_BSTR },
+    { winhandleW,  DBPROP_INIT_HWND,                       DBPROPOPTIONS_OPTIONAL, VT_I4 },
 };
 
 static HRESULT set_dbpropset(BSTR name, BSTR value, DBPROPSET **propset)
diff --git a/dlls/oledb32/tests/Makefile.in b/dlls/oledb32/tests/Makefile.in
index 07a4892..f1c99e1 100644
--- a/dlls/oledb32/tests/Makefile.in
+++ b/dlls/oledb32/tests/Makefile.in
@@ -1,5 +1,5 @@
 TESTDLL   = oledb32.dll
-IMPORTS   = uuid oleaut32 ole32 user32 gdi32 advapi32
+IMPORTS   = uuid oleaut32 ole32 user32 gdi32 advapi32 shell32
 
 C_SRCS = \
 	convert.c \
diff --git a/dlls/oledb32/tests/database.c b/dlls/oledb32/tests/database.c
index d744c86..c9083ff 100644
--- a/dlls/oledb32/tests/database.c
+++ b/dlls/oledb32/tests/database.c
@@ -27,15 +27,20 @@
 #include "ole2.h"
 #include "msdadc.h"
 #include "msdasc.h"
+#include "shlobj.h"
 
 #include "wine/test.h"
 
+static IMalloc *pMalloc;
+
 static void test_GetDataSource(WCHAR *initstring)
 {
     IDataInitialize *datainit = NULL;
     IDBInitialize *dbinit = NULL;
     HRESULT hr;
 
+    trace("Data Source: %s\n", wine_dbgstr_w(initstring));
+
     hr = CoCreateInstance(&CLSID_MSDAINITIALIZE, NULL, CLSCTX_INPROC_SERVER, &IID_IDataInitialize,(void**)&datainit);
     ok(hr == S_OK, "got %08x\n", hr);
 
@@ -44,11 +49,43 @@ static void test_GetDataSource(WCHAR *initstring)
     if(SUCCEEDED(hr))
     {
         IDBProperties *props = NULL;
+        IMalloc *ppM = NULL;
+
+        hr = SHGetMalloc(&ppM);
+        if (FAILED(hr))
+        {
+            ok(0, "Couldn't get IMalloc object.\n");
+            goto end;
+        }
 
         hr = IDBInitialize_QueryInterface(dbinit, &IID_IDBProperties, (void**)&props);
         ok(hr == S_OK, "got %08x\n", hr);
         if(SUCCEEDED(hr))
+        {
+            ULONG cnt;
+            DBPROPINFOSET *pInfoset;
+            OLECHAR *ary;
+
+            hr = IDBProperties_GetPropertyInfo(props, 0, NULL, &cnt, &pInfoset, &ary);
+            todo_wine ok(hr == S_OK, "got %08x\n", hr);
+            if(hr == S_OK)
+            {
+                ULONG i;
+                for(i =0; i < pInfoset->cPropertyInfos; i++)
+                {
+                    trace("(0x%04x) '%s' %d\n", pInfoset->rgPropertyInfos[i].dwPropertyID, wine_dbgstr_w(pInfoset->rgPropertyInfos[i].pwszDescription),
+                                             pInfoset->rgPropertyInfos[i].vtType);
+                }
+
+                IMalloc_Free(ppM, ary);
+            }
+
             IDBProperties_Release(props);
+        }
+
+        IMalloc_Release(ppM);
+
+end:
         IDBInitialize_Release(dbinit);
     }
 
-- 
1.8.1.2



More information about the wine-patches mailing list