Module: wine Branch: master Commit: 7f1473ac59ef434a42c13e87373f5bf24456a496 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7f1473ac59ef434a42c13e8737...
Author: Alistair Leslie-Hughes leslie_alistair@hotmail.com Date: Mon Jun 3 16:26:32 2013 +1000
oledb32: Support more default properties.
---
dlls/oledb32/datainit.c | 30 +++++++++++++++++++++++++++--- dlls/oledb32/tests/Makefile.in | 2 +- dlls/oledb32/tests/database.c | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 63 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..bb1f0b3 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 shell32 oleaut32 ole32 user32 gdi32 advapi32
C_SRCS = \ convert.c \ diff --git a/dlls/oledb32/tests/database.c b/dlls/oledb32/tests/database.c index d744c86..518bba7 100644 --- a/dlls/oledb32/tests/database.c +++ b/dlls/oledb32/tests/database.c @@ -27,6 +27,7 @@ #include "ole2.h" #include "msdadc.h" #include "msdasc.h" +#include "shlobj.h"
#include "wine/test.h"
@@ -36,6 +37,8 @@ static void test_GetDataSource(WCHAR *initstring) 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 +47,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); }