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 HRESULT WINAPI dbprops_QueryInterface(IDBProperties *iface, REFIID riid, void **ppvObject) { dbinit *This = impl_from_IDBProperties(iface); return IDBInitialize_QueryInterface(&This->IDBInitialize_iface, riid, ppvObject); }