static void test_IQueryAssociations_QueryInterface(void) { IQueryAssociations *qa; IQueryAssociations *qa2; IUnknown *unk; HRESULT hr; hr = CoCreateInstance(&CLSID_QueryAssociations, NULL, CLSCTX_INPROC_SERVER, &IID_IQueryAssociations, (void*)&qa); ok(hr == S_OK, "got 0x%08x\n", hr); hr = IQueryAssociations_QueryInterface(qa, &IID_IQueryAssociations, (void**)&qa2); ok(hr == S_OK, "QueryInterface (IQueryAssociations) returned 0x%x\n", hr); if (SUCCEEDED(hr)) { IQueryAssociations_Release(qa2); } hr = IQueryAssociations_QueryInterface(qa, &IID_IUnknown, (void**)&unk); ok(hr == S_OK, "QueryInterface (IUnknown) returned 0x%x\n", hr); if (SUCCEEDED(hr)) { IUnknown_Release(unk); } hr = IQueryAssociations_QueryInterface(qa, &IID_IUnknown, NULL); ok(hr == E_POINTER, "got 0x%x (expected E_POINTER)\n", hr); IQueryAssociations_Release(qa); }
/************************************************************************* * AssocCreate [SHLWAPI.@] * * Create a new IQueryAssociations object. * * PARAMS * clsid [I] CLSID of object * refiid [I] REFIID of interface * lpInterface [O] Destination for the created IQueryAssociations object * * RETURNS * Success: S_OK. lpInterface contains the new object. * Failure: An HRESULT error code indicating the error. * * NOTES * refiid must be equal to IID_IQueryAssociations, or this function will fail. */ HRESULT WINAPI AssocCreate(CLSID clsid, REFIID refiid, void **lpInterface) { HRESULT hRet; IQueryAssociations* lpAssoc; TRACE("(%s,%s,%p)\n", debugstr_guid(&clsid), debugstr_guid(refiid), lpInterface); if (!lpInterface) return E_INVALIDARG; *(DWORD*)lpInterface = 0; if (!IsEqualGUID(&clsid, &IID_IQueryAssociations)) return E_NOTIMPL; lpAssoc = IQueryAssociations_Constructor(); if (!lpAssoc) return E_OUTOFMEMORY; hRet = IQueryAssociations_QueryInterface(lpAssoc, refiid, lpInterface); IQueryAssociations_Release(lpAssoc); return hRet; }