static void test_initializationstring(void) { static const WCHAR initstring_msdasql[] = {'P','r','o','v','i','d','e','r','=','M','S','D','A','S','Q','L','.','1',';', 'D','a','t','a',' ','S','o','u','r','c','e','=','d','u','m','m','y', 0}; static const WCHAR initstring_sqloledb[] = {'P','r','o','v','i','d','e','r','=','S','Q','L','O','L','E','D','B','.','1',';', 'D','a','t','a',' ','S','o','u','r','c','e','=','d','u','m','m','y', 0}; IDataInitialize *datainit = NULL; IDBInitialize *dbinit = NULL; HRESULT hr; WCHAR *initstring = NULL; hr = CoCreateInstance(&CLSID_MSDAINITIALIZE, NULL, CLSCTX_INPROC_SERVER, &IID_IDataInitialize,(void**)&datainit); ok(hr == S_OK, "got %08x\n", hr); if(SUCCEEDED(hr)) { hr = IDataInitialize_GetDataSource(datainit, NULL, CLSCTX_INPROC_SERVER, initstring_default, &IID_IDBInitialize, (IUnknown**)&dbinit); if(SUCCEEDED(hr)) { hr = IDataInitialize_GetInitializationString(datainit, (IUnknown*)dbinit, 0, &initstring); ok(hr == S_OK, "got %08x\n", hr); if(hr == S_OK) { trace("Init String: %s\n", wine_dbgstr_w(initstring)); todo_wine ok(!lstrcmpW(initstring_msdasql, initstring) || !lstrcmpW(initstring_sqloledb, initstring), "got %s\n", wine_dbgstr_w(initstring)); CoTaskMemFree(initstring); } IDBInitialize_Release(dbinit); } IDataInitialize_Release(datainit); } }
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); /* a failure to create data source here may indicate provider is simply not present */ hr = IDataInitialize_GetDataSource(datainit, NULL, CLSCTX_INPROC_SERVER, initstring, &IID_IDBInitialize, (IUnknown**)&dbinit); if(SUCCEEDED(hr)) { IDBProperties *props = NULL; 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); } CoTaskMemFree(ary); } IDBProperties_Release(props); } IDBInitialize_Release(dbinit); } IDataInitialize_Release(datainit); }
static ULONG WINAPI dbprops_Release(IDBProperties *iface) { dbinit *This = impl_from_IDBProperties(iface); return IDBInitialize_Release(&This->IDBInitialize_iface); }