static HRESULT WINAPI DataObjectImpl_QueryInterface(IDataObject *iface, REFIID riid, LPVOID *ppvObj) { DataObjectImpl *This = impl_from_IDataObject(iface); TRACE("(%p)->(%s)\n", This, debugstr_guid(riid)); if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDataObject)) { IDataObject_AddRef(iface); *ppvObj = This; return S_OK; } *ppvObj = NULL; return E_NOINTERFACE; }
/** IDataObject stub **/ static HRESULT WINAPI DataObject_QueryInterface( IDataObject *iface, REFIID riid, void **pObj) { if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDataObject)) { *pObj = iface; IDataObject_AddRef(iface); return S_OK; } return E_NOINTERFACE; }
HRESULT STDMETHODCALLTYPE CliprdrDataObject_QueryInterface(IDataObject* This, REFIID riid, void** ppvObject) { CliprdrDataObject* instance = (CliprdrDataObject*) This; if (IsEqualIID(riid, &IID_IDataObject) || IsEqualIID(riid, &IID_IUnknown)) { IDataObject_AddRef(This); *ppvObject = This; return S_OK; } else { *ppvObject = 0; return E_NOINTERFACE; } }
static HRESULT WINAPI IDataObjectImpl_QueryInterface(IDataObject *iface, REFIID riid, void **ppvObj) { IDataObjectImpl *This = impl_from_IDataObject(iface); if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDataObject)) { *ppvObj = This; } if(*ppvObj) { IDataObject_AddRef(iface); return S_OK; } return E_NOINTERFACE; }
HRESULT IDeskDisplayAdapter_Initialize(PDESKDISPLAYADAPTER This, LPCITEMIDLIST pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID) { DPRINT1("IDeskDisplayAdapter::Initialize(%p,%p,%p)\n", pidlFolder, pdtobj, hkeyProgID); if (pdtobj != NULL) { IDataObject_AddRef(pdtobj); This->pdtobj = pdtobj; /* Get a copy of the desk.cpl extension interface */ This->DeskExtInterface = QueryDeskCplExtInterface(This->pdtobj); if (This->DeskExtInterface != NULL) return S_OK; } return S_FALSE; }
HRESULT STDMETHODCALLTYPE CliprdrDataObject_GetData(IDataObject* This, FORMATETC* pFormatEtc, STGMEDIUM* pMedium) { int i, idx; CliprdrDataObject* instance = (CliprdrDataObject*) This; wfClipboard* clipboard = (wfClipboard*) instance->m_pData; if (!pFormatEtc || !pMedium) { return E_INVALIDARG; } if ((idx = cliprdr_lookup_format(instance, pFormatEtc)) == -1) { return DV_E_FORMATETC; } pMedium->tymed = instance->m_pFormatEtc[idx].tymed; pMedium->pUnkForRelease = 0; if (instance->m_pFormatEtc[idx].cfFormat == clipboard->ID_FILEDESCRIPTORW) { if (cliprdr_send_data_request(clipboard, instance->m_pFormatEtc[idx].cfFormat) != 0) return E_UNEXPECTED; pMedium->hGlobal = clipboard->hmem; /* points to a FILEGROUPDESCRIPTOR structure */ /* GlobalLock returns a pointer to the first byte of the memory block, * in which is a FILEGROUPDESCRIPTOR structure, whose first UINT member * is the number of FILEDESCRIPTOR's */ instance->m_nStreams = *((PUINT) GlobalLock(clipboard->hmem)); GlobalUnlock(clipboard->hmem); if (instance->m_nStreams > 0) { if (!instance->m_pStream) { instance->m_pStream = (LPSTREAM*) calloc(instance->m_nStreams, sizeof(LPSTREAM)); if (instance->m_pStream) { for (i = 0; i < instance->m_nStreams; i++) { instance->m_pStream[i] = (IStream*) CliprdrStream_New(i, clipboard); } } } } if (!instance->m_pStream) { if (clipboard->hmem) { GlobalFree(clipboard->hmem); clipboard->hmem = NULL; } pMedium->hGlobal = NULL; return E_OUTOFMEMORY; } } else if (instance->m_pFormatEtc[idx].cfFormat == clipboard->ID_FILECONTENTS) { if (pFormatEtc->lindex < instance->m_nStreams) { pMedium->pstm = instance->m_pStream[pFormatEtc->lindex]; IDataObject_AddRef(instance->m_pStream[pFormatEtc->lindex]); } else { return E_INVALIDARG; } } else if (instance->m_pFormatEtc[idx].cfFormat == clipboard->ID_PREFERREDDROPEFFECT) { if (cliprdr_send_data_request(clipboard, instance->m_pFormatEtc[idx].cfFormat) != 0) return E_UNEXPECTED; pMedium->hGlobal = clipboard->hmem; } else { return E_UNEXPECTED; } return S_OK; }