How to use IDataObject? Specifically, I'm writing a Shell Extension Object, I want to add an item to the shortcut menu of all files. But my implementation of IShellInitExt::Initialize fails because I do something wrong with IDataObject:
Code:
STDMETHODIMP copy_to_dest::Initialize(LPCITEMIDLIST p_folder,
									  IDataObject *p_data,
									  HKEY prog_id)
{
	// 17 lines of code when 1 would suffice if the API wasn't so
	// uselessly complicated. *sigh*
	FORMATETC fetc;
	fetc.cfFormat = CF_TEXT;
	fetc.ptd = 0;
	fetc.dwAspect = DVASPECT_CONTENT;
	fetc.lindex = -1;
	fetc.tymed = TYMED_HGLOBAL;

	STGMEDIUM stgm;
	stgm.tymed = TYMED_HGLOBAL;
	stgm.pUnkForRelease = 0;

	HRESULT hr = p_data->GetData(&fetc, &stgm);
	if(FAILED(hr))
	{
		return hr;
	}

	LPTSTR filename = reinterpret_cast<LPTSTR>(GlobalLock(stgm.hGlobal));

	source = filename;

	GlobalUnlock(stgm.hGlobal);
	GlobalFree(stgm.hGlobal);

	p_data->Release();

	return S_OK;
}
IDataObject::GetData fails with E_INVALIDARG. (Thanks for the elaborate message MS )

Thx in advance.