Метод IDataObject::GetDataHere (objidl.h)

Вызывается потребителем данных для получения данных из исходного объекта данных. Этот метод отличается от метода GetData тем, что вызывающий объект должен выделить и освободить указанный носитель хранилища.

Синтаксис

HRESULT GetDataHere(
  [in]      FORMATETC *pformatetc,
  [in, out] STGMEDIUM *pmedium
);

Параметры

[in] pformatetc

Указатель на структуру FORMATETC , которая определяет формат, среднее и целевое устройство, используемое при передаче данных. В тиме можно указать только одну среду, и допустимы только следующие значения: TYMED_ISTORAGE, TYMED_ISTREAM, TYMED_HGLOBAL или TYMED_FILE.

[in, out] pmedium

Указатель на структуру STGMEDIUM , которая определяет среду хранения, содержащую передаваемые данные. Среда должна быть выделена вызывающим объектом и заполнена командой GetDataHere. Также вызывающий объект должен освободить среду передачи. Реализация этого метода всегда должна предоставлять значение NULL для элемента punkForRelease структуры STGMEDIUM , на которую указывает этот параметр.

Возвращаемое значение

Этот метод возвращает значение S_OK при успешном завершении. Ниже перечислены другие возможные значения.

Код возврата Описание
DV_E_LINDEX
Недопустимое значение lindex ; В настоящее время поддерживается только -1.
DV_E_FORMATETC
Недопустимое значение для pformatetc .
DV_E_TYMED
Недопустимое значение tymed .
DV_E_DVASPECT
Недопустимое значение dwAspect .
OLE_E_NOTRUNNING
Приложение-объект не выполняется.
STG_E_MEDIUMFULL
При выделении носителя произошла ошибка.
E_UNEXPECTED
Произошла непредвиденная ошибка.
E_INVALIDARG
Недопустимый параметр dwDirection .
E_OUTOFMEMORY
Недостаточно доступной памяти для этой операции.

Комментарии

Метод GetDataHere аналогичен методу IDataObject::GetData, за исключением того, что вызывающий объект должен выделить и освободить среду, указанную в pmedium. GetDataHere отрисовывает данные, описанные в структуре FORMATETC, и копирует их в предоставленную вызывающим элементом структуру STGMEDIUM . Например, если среда TYMED_HGLOBAL, этот метод не может изменить размер среды или выделить новый hGlobal.

Некоторые носители не подходят при вызове GetDataHere, включая типы GDI, такие как метафайлы. Метод GetDataHere не может поместить данные в предоставленный вызывающим метафайл. Как правило, единственными носителями хранилища, которые необходимо поддерживать в этом методе, являются TYMED_ISTORAGE, TYMED_ISTREAM и TYMED_FILE.

Если среда передачи является потоком, OLE делает предположения о том, где возвращаются данные и положение указателя поиска потока. В вызове GetData возвращаемые данные находятся от позиции потока от нуля до непосредственно перед текущим указателем поиска потока (т. е. позицией при выходе). Для GetDataHere данные возвращаются из позиции потока при входе до непосредственно перед позицией при выходе.

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header objidl.h

См. также раздел

Idataobject